Code drop from //branches/cupcake/...@124589
diff --git a/awt/java/awt/AWTEvent.java b/awt/java/awt/AWTEvent.java
index 1ed9a37..a8dc83a 100644
--- a/awt/java/awt/AWTEvent.java
+++ b/awt/java/awt/AWTEvent.java
@@ -18,6 +18,7 @@
  * @author Dmitry A. Durnev, Michael Danilov
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.util.EventObject;
@@ -27,190 +28,252 @@
 import java.awt.event.*;
 
 /**
- * The abstract AWT events is base class for all AWT events. 
- * This class and its subclasses supercede the original java.awt.Event class.
+ * The abstract class AWTEvent is the base class for all AWT events. This class
+ * and its subclasses supersede the original java.awt.Event class.
+ * 
+ * @since Android 1.0
  */
 public abstract class AWTEvent extends EventObject {
-    
-    /** The Constant serialVersionUID. */
+
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = -1825314779160409405L;
 
-    /** The Constant COMPONENT_EVENT_MASK indicates the event relates to a component. */
+    /**
+     * The Constant COMPONENT_EVENT_MASK indicates the event relates to a
+     * component.
+     */
     public static final long COMPONENT_EVENT_MASK = 1;
 
-    /** The Constant CONTAINER_EVENT_MASK indicates the event relates to a container. */
+    /**
+     * The Constant CONTAINER_EVENT_MASK indicates the event relates to a
+     * container.
+     */
     public static final long CONTAINER_EVENT_MASK = 2;
 
-    /** The Constant FOCUS_EVENT_MASK indicates the event relates to the focus. */
+    /**
+     * The Constant FOCUS_EVENT_MASK indicates the event relates to the focus.
+     */
     public static final long FOCUS_EVENT_MASK = 4;
 
-    /** The Constant KEY_EVENT_MASK indicates the event relates to a key. */
+    /**
+     * The Constant KEY_EVENT_MASK indicates the event relates to a key.
+     */
     public static final long KEY_EVENT_MASK = 8;
 
-    /** The Constant MOUSE_EVENT_MASK indicates the event relates to the mouse. */
+    /**
+     * The Constant MOUSE_EVENT_MASK indicates the event relates to the mouse.
+     */
     public static final long MOUSE_EVENT_MASK = 16;
 
-    /** The Constant MOUSE_MOTION_EVENT_MASK indicates the event relates to a mouse motion. */
+    /**
+     * The Constant MOUSE_MOTION_EVENT_MASK indicates the event relates to a
+     * mouse motion.
+     */
     public static final long MOUSE_MOTION_EVENT_MASK = 32;
 
-    /** The Constant WINDOW_EVENT_MASK indicates the event relates to a window. */
+    /**
+     * The Constant WINDOW_EVENT_MASK indicates the event relates to a window.
+     */
     public static final long WINDOW_EVENT_MASK = 64;
 
-    /** The Constant ACTION_EVENT_MASK indicates the event relates to an action. */
+    /**
+     * The Constant ACTION_EVENT_MASK indicates the event relates to an action.
+     */
     public static final long ACTION_EVENT_MASK = 128;
 
-    /** The Constant ADJUSTMENT_EVENT_MASK indicates the event relates to an adjustment. */
+    /**
+     * The Constant ADJUSTMENT_EVENT_MASK indicates the event relates to an
+     * adjustment.
+     */
     public static final long ADJUSTMENT_EVENT_MASK = 256;
 
-    /** The Constant ITEM_EVENT_MASK indicates the event relates to an item. */
+    /**
+     * The Constant ITEM_EVENT_MASK indicates the event relates to an item.
+     */
     public static final long ITEM_EVENT_MASK = 512;
 
-    /** The Constant TEXT_EVENT_MASK indicates the event relates to text. */
+    /**
+     * The Constant TEXT_EVENT_MASK indicates the event relates to text.
+     */
     public static final long TEXT_EVENT_MASK = 1024;
 
-    /** The Constant INPUT_METHOD_EVENT_MASK indicates the event relates to an input method. */
+    /**
+     * The Constant INPUT_METHOD_EVENT_MASK indicates the event relates to an
+     * input method.
+     */
     public static final long INPUT_METHOD_EVENT_MASK = 2048;
 
-    /** The Constant PAINT_EVENT_MASK indicates the event relates to a paint method. */
+    /**
+     * The Constant PAINT_EVENT_MASK indicates the event relates to a paint
+     * method.
+     */
     public static final long PAINT_EVENT_MASK = 8192;
 
-    /** The Constant INVOCATION_EVENT_MASK indicates the event relates to a method invocation. */
+    /**
+     * The Constant INVOCATION_EVENT_MASK indicates the event relates to a
+     * method invocation.
+     */
     public static final long INVOCATION_EVENT_MASK = 16384;
 
-    /** The Constant HIERARCHY_EVENT_MASK indicates the event relates to a hierarchy. */
+    /**
+     * The Constant HIERARCHY_EVENT_MASK indicates the event relates to a
+     * hierarchy.
+     */
     public static final long HIERARCHY_EVENT_MASK = 32768;
 
-    /** 
-     * The Constant HIERARCHY_BOUNDS_EVENT_MASK indicates the event relates to hierarchy bounds.
+    /**
+     * The Constant HIERARCHY_BOUNDS_EVENT_MASK indicates the event relates to
+     * hierarchy bounds.
      */
     public static final long HIERARCHY_BOUNDS_EVENT_MASK = 65536;
 
-    /** The Constant MOUSE_WHEEL_EVENT_MASK indicates the event relates to the mouse wheel. */
+    /**
+     * The Constant MOUSE_WHEEL_EVENT_MASK indicates the event relates to the
+     * mouse wheel.
+     */
     public static final long MOUSE_WHEEL_EVENT_MASK = 131072;
 
-    /** The Constant WINDOW_STATE_EVENT_MASK indicates the event relates to a window state. */
+    /**
+     * The Constant WINDOW_STATE_EVENT_MASK indicates the event relates to a
+     * window state.
+     */
     public static final long WINDOW_STATE_EVENT_MASK = 262144;
 
-    /** The Constant WINDOW_FOCUS_EVENT_MASK indicates the event relates to a window focus. */
+    /**
+     * The Constant WINDOW_FOCUS_EVENT_MASK indicates the event relates to a
+     * window focus.
+     */
     public static final long WINDOW_FOCUS_EVENT_MASK = 524288;
 
-    /** The Constant RESERVED_ID_MAX indicates the maximum value for reserved 
-     * AWT event IDs.
+    /**
+     * The Constant RESERVED_ID_MAX indicates the maximum value for reserved AWT
+     * event IDs.
      */
     public static final int RESERVED_ID_MAX = 1999;
 
-    /** The Constant eventsMap. */
+    /**
+     * The Constant eventsMap.
+     */
     private static final Hashtable<Integer, EventDescriptor> eventsMap = new Hashtable<Integer, EventDescriptor>();
 
-    /** The converter. */
+    /**
+     * The converter.
+     */
     private static EventConverter converter;
 
-    /** The ID of the event. */
+    /**
+     * The ID of the event.
+     */
     protected int id;
 
-    /** 
-     * The consumed indicates whether or not the event is sent back down to 
-     * the peer once the source has processed it (false means it's sent to the peer,
+    /**
+     * The consumed indicates whether or not the event is sent back down to the
+     * peer once the source has processed it (false means it's sent to the peer,
      * true means it's not).
-     */ 
+     */
     protected boolean consumed;
 
-    /** The dispatched by kfm. */
+    /**
+     * The dispatched by kfm.
+     */
     boolean dispatchedByKFM;
-    
-    /** The is posted. */
+
+    /**
+     * The is posted.
+     */
     transient boolean isPosted;
 
     static {
-        eventsMap.put(new Integer(KeyEvent.KEY_TYPED),
-                new EventDescriptor(KEY_EVENT_MASK, KeyListener.class));
-        eventsMap.put(new Integer(KeyEvent.KEY_PRESSED),
-                new EventDescriptor(KEY_EVENT_MASK, KeyListener.class));
-        eventsMap.put(new Integer(KeyEvent.KEY_RELEASED),
-                new EventDescriptor(KEY_EVENT_MASK, KeyListener.class));
-        eventsMap.put(new Integer(MouseEvent.MOUSE_CLICKED),
-                new EventDescriptor(MOUSE_EVENT_MASK, MouseListener.class));
-        eventsMap.put(new Integer(MouseEvent.MOUSE_PRESSED),
-                new EventDescriptor(MOUSE_EVENT_MASK, MouseListener.class));
-        eventsMap.put(new Integer(MouseEvent.MOUSE_RELEASED),
-                new EventDescriptor(MOUSE_EVENT_MASK, MouseListener.class));
-        eventsMap.put(new Integer(MouseEvent.MOUSE_MOVED),
-                new EventDescriptor(MOUSE_MOTION_EVENT_MASK, MouseMotionListener.class));
-        eventsMap.put(new Integer(MouseEvent.MOUSE_ENTERED),
-                new EventDescriptor(MOUSE_EVENT_MASK, MouseListener.class));
-        eventsMap.put(new Integer(MouseEvent.MOUSE_EXITED),
-                new EventDescriptor(MOUSE_EVENT_MASK, MouseListener.class));
-        eventsMap.put(new Integer(MouseEvent.MOUSE_DRAGGED),
-                new EventDescriptor(MOUSE_MOTION_EVENT_MASK, MouseMotionListener.class));
-        eventsMap.put(new Integer(MouseEvent.MOUSE_WHEEL),
-                new EventDescriptor(MOUSE_WHEEL_EVENT_MASK, MouseWheelListener.class));
-        eventsMap.put(new Integer(ComponentEvent.COMPONENT_MOVED),
-                new EventDescriptor(COMPONENT_EVENT_MASK, ComponentListener.class));
-        eventsMap.put(new Integer(ComponentEvent.COMPONENT_RESIZED),
-                new EventDescriptor(COMPONENT_EVENT_MASK, ComponentListener.class));
-        eventsMap.put(new Integer(ComponentEvent.COMPONENT_SHOWN),
-                new EventDescriptor(COMPONENT_EVENT_MASK, ComponentListener.class));
-        eventsMap.put(new Integer(ComponentEvent.COMPONENT_HIDDEN),
-                new EventDescriptor(COMPONENT_EVENT_MASK, ComponentListener.class));
-        eventsMap.put(new Integer(FocusEvent.FOCUS_GAINED),
-                new EventDescriptor(FOCUS_EVENT_MASK, FocusListener.class));
-        eventsMap.put(new Integer(FocusEvent.FOCUS_LOST),
-                new EventDescriptor(FOCUS_EVENT_MASK, FocusListener.class));
-        eventsMap.put(new Integer(PaintEvent.PAINT),
-                new EventDescriptor(PAINT_EVENT_MASK, null));
-        eventsMap.put(new Integer(PaintEvent.UPDATE),
-                new EventDescriptor(PAINT_EVENT_MASK, null));
-        eventsMap.put(new Integer(WindowEvent.WINDOW_OPENED),
-                new EventDescriptor(WINDOW_EVENT_MASK, WindowListener.class));
-        eventsMap.put(new Integer(WindowEvent.WINDOW_CLOSING),
-                new EventDescriptor(WINDOW_EVENT_MASK, WindowListener.class));
-        eventsMap.put(new Integer(WindowEvent.WINDOW_CLOSED),
-                new EventDescriptor(WINDOW_EVENT_MASK, WindowListener.class));
-        eventsMap.put(new Integer(WindowEvent.WINDOW_DEICONIFIED),
-                new EventDescriptor(WINDOW_EVENT_MASK, WindowListener.class));
-        eventsMap.put(new Integer(WindowEvent.WINDOW_ICONIFIED),
-                new EventDescriptor(WINDOW_EVENT_MASK, WindowListener.class));
-        eventsMap.put(new Integer(WindowEvent.WINDOW_STATE_CHANGED),
-                new EventDescriptor(WINDOW_STATE_EVENT_MASK, WindowStateListener.class));
-        eventsMap.put(new Integer(WindowEvent.WINDOW_LOST_FOCUS),
-                new EventDescriptor(WINDOW_FOCUS_EVENT_MASK, WindowFocusListener.class));
-        eventsMap.put(new Integer(WindowEvent.WINDOW_GAINED_FOCUS),
-                new EventDescriptor(WINDOW_FOCUS_EVENT_MASK, WindowFocusListener.class));
-        eventsMap.put(new Integer(WindowEvent.WINDOW_DEACTIVATED),
-                new EventDescriptor(WINDOW_EVENT_MASK, WindowListener.class));
-        eventsMap.put(new Integer(WindowEvent.WINDOW_ACTIVATED),
-                new EventDescriptor(WINDOW_EVENT_MASK, WindowListener.class));
-        eventsMap.put(new Integer(HierarchyEvent.HIERARCHY_CHANGED),
-                new EventDescriptor(HIERARCHY_EVENT_MASK, HierarchyListener.class));
-        eventsMap.put(new Integer(HierarchyEvent.ANCESTOR_MOVED),
-                new EventDescriptor(HIERARCHY_BOUNDS_EVENT_MASK, HierarchyBoundsListener.class));
-        eventsMap.put(new Integer(HierarchyEvent.ANCESTOR_RESIZED),
-                new EventDescriptor(HIERARCHY_BOUNDS_EVENT_MASK, HierarchyBoundsListener.class));
-        eventsMap.put(new Integer(ContainerEvent.COMPONENT_ADDED),
-                new EventDescriptor(CONTAINER_EVENT_MASK, ContainerListener.class));
-        eventsMap.put(new Integer(ContainerEvent.COMPONENT_REMOVED),
-                new EventDescriptor(CONTAINER_EVENT_MASK, ContainerListener.class));
-        eventsMap.put(new Integer(InputMethodEvent.INPUT_METHOD_TEXT_CHANGED),
-                new EventDescriptor(INPUT_METHOD_EVENT_MASK, InputMethodListener.class));
-        eventsMap.put(new Integer(InputMethodEvent.CARET_POSITION_CHANGED),
-                new EventDescriptor(INPUT_METHOD_EVENT_MASK, InputMethodListener.class));
-        eventsMap.put(new Integer(InvocationEvent.INVOCATION_DEFAULT),
-                new EventDescriptor(INVOCATION_EVENT_MASK, null));
-        eventsMap.put(new Integer(ItemEvent.ITEM_STATE_CHANGED),
-                new EventDescriptor(ITEM_EVENT_MASK, ItemListener.class));
-        eventsMap.put(new Integer(TextEvent.TEXT_VALUE_CHANGED),
-                new EventDescriptor(TEXT_EVENT_MASK, TextListener.class));
-        eventsMap.put(new Integer(ActionEvent.ACTION_PERFORMED),
-                new EventDescriptor(ACTION_EVENT_MASK, ActionListener.class));
-        eventsMap.put(new Integer(AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED),
-                new EventDescriptor(ADJUSTMENT_EVENT_MASK, AdjustmentListener.class));
+        eventsMap.put(new Integer(KeyEvent.KEY_TYPED), new EventDescriptor(KEY_EVENT_MASK,
+                KeyListener.class));
+        eventsMap.put(new Integer(KeyEvent.KEY_PRESSED), new EventDescriptor(KEY_EVENT_MASK,
+                KeyListener.class));
+        eventsMap.put(new Integer(KeyEvent.KEY_RELEASED), new EventDescriptor(KEY_EVENT_MASK,
+                KeyListener.class));
+        eventsMap.put(new Integer(MouseEvent.MOUSE_CLICKED), new EventDescriptor(MOUSE_EVENT_MASK,
+                MouseListener.class));
+        eventsMap.put(new Integer(MouseEvent.MOUSE_PRESSED), new EventDescriptor(MOUSE_EVENT_MASK,
+                MouseListener.class));
+        eventsMap.put(new Integer(MouseEvent.MOUSE_RELEASED), new EventDescriptor(MOUSE_EVENT_MASK,
+                MouseListener.class));
+        eventsMap.put(new Integer(MouseEvent.MOUSE_MOVED), new EventDescriptor(
+                MOUSE_MOTION_EVENT_MASK, MouseMotionListener.class));
+        eventsMap.put(new Integer(MouseEvent.MOUSE_ENTERED), new EventDescriptor(MOUSE_EVENT_MASK,
+                MouseListener.class));
+        eventsMap.put(new Integer(MouseEvent.MOUSE_EXITED), new EventDescriptor(MOUSE_EVENT_MASK,
+                MouseListener.class));
+        eventsMap.put(new Integer(MouseEvent.MOUSE_DRAGGED), new EventDescriptor(
+                MOUSE_MOTION_EVENT_MASK, MouseMotionListener.class));
+        eventsMap.put(new Integer(MouseEvent.MOUSE_WHEEL), new EventDescriptor(
+                MOUSE_WHEEL_EVENT_MASK, MouseWheelListener.class));
+        eventsMap.put(new Integer(ComponentEvent.COMPONENT_MOVED), new EventDescriptor(
+                COMPONENT_EVENT_MASK, ComponentListener.class));
+        eventsMap.put(new Integer(ComponentEvent.COMPONENT_RESIZED), new EventDescriptor(
+                COMPONENT_EVENT_MASK, ComponentListener.class));
+        eventsMap.put(new Integer(ComponentEvent.COMPONENT_SHOWN), new EventDescriptor(
+                COMPONENT_EVENT_MASK, ComponentListener.class));
+        eventsMap.put(new Integer(ComponentEvent.COMPONENT_HIDDEN), new EventDescriptor(
+                COMPONENT_EVENT_MASK, ComponentListener.class));
+        eventsMap.put(new Integer(FocusEvent.FOCUS_GAINED), new EventDescriptor(FOCUS_EVENT_MASK,
+                FocusListener.class));
+        eventsMap.put(new Integer(FocusEvent.FOCUS_LOST), new EventDescriptor(FOCUS_EVENT_MASK,
+                FocusListener.class));
+        eventsMap.put(new Integer(PaintEvent.PAINT), new EventDescriptor(PAINT_EVENT_MASK, null));
+        eventsMap.put(new Integer(PaintEvent.UPDATE), new EventDescriptor(PAINT_EVENT_MASK, null));
+        eventsMap.put(new Integer(WindowEvent.WINDOW_OPENED), new EventDescriptor(
+                WINDOW_EVENT_MASK, WindowListener.class));
+        eventsMap.put(new Integer(WindowEvent.WINDOW_CLOSING), new EventDescriptor(
+                WINDOW_EVENT_MASK, WindowListener.class));
+        eventsMap.put(new Integer(WindowEvent.WINDOW_CLOSED), new EventDescriptor(
+                WINDOW_EVENT_MASK, WindowListener.class));
+        eventsMap.put(new Integer(WindowEvent.WINDOW_DEICONIFIED), new EventDescriptor(
+                WINDOW_EVENT_MASK, WindowListener.class));
+        eventsMap.put(new Integer(WindowEvent.WINDOW_ICONIFIED), new EventDescriptor(
+                WINDOW_EVENT_MASK, WindowListener.class));
+        eventsMap.put(new Integer(WindowEvent.WINDOW_STATE_CHANGED), new EventDescriptor(
+                WINDOW_STATE_EVENT_MASK, WindowStateListener.class));
+        eventsMap.put(new Integer(WindowEvent.WINDOW_LOST_FOCUS), new EventDescriptor(
+                WINDOW_FOCUS_EVENT_MASK, WindowFocusListener.class));
+        eventsMap.put(new Integer(WindowEvent.WINDOW_GAINED_FOCUS), new EventDescriptor(
+                WINDOW_FOCUS_EVENT_MASK, WindowFocusListener.class));
+        eventsMap.put(new Integer(WindowEvent.WINDOW_DEACTIVATED), new EventDescriptor(
+                WINDOW_EVENT_MASK, WindowListener.class));
+        eventsMap.put(new Integer(WindowEvent.WINDOW_ACTIVATED), new EventDescriptor(
+                WINDOW_EVENT_MASK, WindowListener.class));
+        eventsMap.put(new Integer(HierarchyEvent.HIERARCHY_CHANGED), new EventDescriptor(
+                HIERARCHY_EVENT_MASK, HierarchyListener.class));
+        eventsMap.put(new Integer(HierarchyEvent.ANCESTOR_MOVED), new EventDescriptor(
+                HIERARCHY_BOUNDS_EVENT_MASK, HierarchyBoundsListener.class));
+        eventsMap.put(new Integer(HierarchyEvent.ANCESTOR_RESIZED), new EventDescriptor(
+                HIERARCHY_BOUNDS_EVENT_MASK, HierarchyBoundsListener.class));
+        eventsMap.put(new Integer(ContainerEvent.COMPONENT_ADDED), new EventDescriptor(
+                CONTAINER_EVENT_MASK, ContainerListener.class));
+        eventsMap.put(new Integer(ContainerEvent.COMPONENT_REMOVED), new EventDescriptor(
+                CONTAINER_EVENT_MASK, ContainerListener.class));
+        eventsMap.put(new Integer(InputMethodEvent.INPUT_METHOD_TEXT_CHANGED), new EventDescriptor(
+                INPUT_METHOD_EVENT_MASK, InputMethodListener.class));
+        eventsMap.put(new Integer(InputMethodEvent.CARET_POSITION_CHANGED), new EventDescriptor(
+                INPUT_METHOD_EVENT_MASK, InputMethodListener.class));
+        eventsMap.put(new Integer(InvocationEvent.INVOCATION_DEFAULT), new EventDescriptor(
+                INVOCATION_EVENT_MASK, null));
+        eventsMap.put(new Integer(ItemEvent.ITEM_STATE_CHANGED), new EventDescriptor(
+                ITEM_EVENT_MASK, ItemListener.class));
+        eventsMap.put(new Integer(TextEvent.TEXT_VALUE_CHANGED), new EventDescriptor(
+                TEXT_EVENT_MASK, TextListener.class));
+        eventsMap.put(new Integer(ActionEvent.ACTION_PERFORMED), new EventDescriptor(
+                ACTION_EVENT_MASK, ActionListener.class));
+        eventsMap.put(new Integer(AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED), new EventDescriptor(
+                ADJUSTMENT_EVENT_MASK, AdjustmentListener.class));
         converter = new EventConverter();
     }
-    
+
     /**
      * Instantiates a new AWT event from the specified Event object.
      * 
-     * @param event the Event object.
+     * @param event
+     *            the Event object.
      */
     public AWTEvent(Event event) {
         this(event.target, event.id);
@@ -219,8 +282,10 @@
     /**
      * Instantiates a new AWT event with the specified object and type.
      * 
-     * @param source the source Object.
-     * @param id the event's type.
+     * @param source
+     *            the source Object.
+     * @param id
+     *            the event's type.
      */
     public AWTEvent(Object source, int id) {
         super(source);
@@ -240,7 +305,8 @@
     /**
      * Sets a new source for the AWTEvent.
      * 
-     * @param newSource the new source Object for the AWTEvent.
+     * @param newSource
+     *            the new source Object for the AWTEvent.
      */
     public void setSource(Object newSource) {
         source = newSource;
@@ -253,33 +319,32 @@
      */
     @Override
     public String toString() {
-        /* The format is based on 1.5 release behavior 
-         * which can be revealed by the following code:
-         * 
-         * AWTEvent event = new AWTEvent(new Component(){}, 1){};
-         * System.out.println(event);
+        /*
+         * The format is based on 1.5 release behavior which can be revealed by
+         * the following code: AWTEvent event = new AWTEvent(new Component(){},
+         * 1){}; System.out.println(event);
          */
         String name = ""; //$NON-NLS-1$
-        
+
         if (source instanceof Component && (source != null)) {
-            Component comp = (Component) getSource();
+            Component comp = (Component)getSource();
             name = comp.getName();
             if (name == null) {
                 name = ""; //$NON-NLS-1$
             }
         }
-        
+
         return (getClass().getName() + "[" + paramString() + "]" //$NON-NLS-1$ //$NON-NLS-2$
                 + " on " + (name.length() > 0 ? name : source)); //$NON-NLS-1$
     }
 
     /**
-     * Returns a string representation of the AWTEvent state. 
-     *  
+     * Returns a string representation of the AWTEvent state.
+     * 
      * @return a string representation of the AWTEvent state.
      */
     public String paramString() {
-        //nothing to implement: all event types must override this method
+        // nothing to implement: all event types must override this method
         return ""; //$NON-NLS-1$
     }
 
@@ -296,73 +361,77 @@
      * Consumes the AWTEvent.
      */
     protected void consume() {
-       consumed = true;
+        consumed = true;
     }
 
     /**
      * Convert AWTEvent object to a corresponding (deprecated) Event object.
      * 
-     * @return new Event object which is a converted AWTEvent object or null
-     * if the conversion is not possible
+     * @return new Event object which is a converted AWTEvent object or null if
+     *         the conversion is not possible
      */
     Event getEvent() {
-        
+
         if (id == ActionEvent.ACTION_PERFORMED) {
-            ActionEvent ae = (ActionEvent) this;
+            ActionEvent ae = (ActionEvent)this;
             return converter.convertActionEvent(ae);
 
         } else if (id == AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED) {
-            AdjustmentEvent ae = (AdjustmentEvent) this;
+            AdjustmentEvent ae = (AdjustmentEvent)this;
             return converter.convertAdjustmentEvent(ae);
 
-//???AWT
-//        } else if (id == ComponentEvent.COMPONENT_MOVED
-//                && source instanceof Window) {
-//            //the only type of Component events is COMPONENT_MOVED on window
-//            ComponentEvent ce = (ComponentEvent) this;
-//            return converter.convertComponentEvent(ce);
+            // ???AWT
+            // } else if (id == ComponentEvent.COMPONENT_MOVED
+            // && source instanceof Window) {
+            // //the only type of Component events is COMPONENT_MOVED on window
+            // ComponentEvent ce = (ComponentEvent) this;
+            // return converter.convertComponentEvent(ce);
 
         } else if (id >= FocusEvent.FOCUS_FIRST && id <= FocusEvent.FOCUS_LAST) {
-            //nothing to convert
+            // nothing to convert
 
-//???AWT
-//        } else if (id == ItemEvent.ITEM_STATE_CHANGED) {
-//            ItemEvent ie = (ItemEvent) this;
-//            return converter.convertItemEvent(ie);
+            // ???AWT
+            // } else if (id == ItemEvent.ITEM_STATE_CHANGED) {
+            // ItemEvent ie = (ItemEvent) this;
+            // return converter.convertItemEvent(ie);
 
         } else if (id == KeyEvent.KEY_PRESSED || id == KeyEvent.KEY_RELEASED) {
-            KeyEvent ke = (KeyEvent) this;
+            KeyEvent ke = (KeyEvent)this;
             return converter.convertKeyEvent(ke);
         } else if (id >= MouseEvent.MOUSE_FIRST && id <= MouseEvent.MOUSE_LAST) {
-            MouseEvent me = (MouseEvent) this;
+            MouseEvent me = (MouseEvent)this;
             return converter.convertMouseEvent(me);
-        } else if (id == WindowEvent.WINDOW_CLOSING
-                || id == WindowEvent.WINDOW_ICONIFIED
+        } else if (id == WindowEvent.WINDOW_CLOSING || id == WindowEvent.WINDOW_ICONIFIED
                 || id == WindowEvent.WINDOW_DEICONIFIED) {
-            //nothing to convert
+            // nothing to convert
         } else {
             return null;
         }
         return new Event(source, id, null);
     }
 
-
     /**
-     * The Class EventDescriptor.
+     * The class EventDescriptor.
      */
     static final class EventDescriptor {
 
-        /** The event mask. */
+        /**
+         * The event mask.
+         */
         final long eventMask;
 
-        /** The listener type. */
+        /**
+         * The listener type.
+         */
         final Class<? extends EventListener> listenerType;
 
         /**
          * Instantiates a new event descriptor.
          * 
-         * @param eventMask the event mask
-         * @param listenerType the listener type
+         * @param eventMask
+         *            the event mask.
+         * @param listenerType
+         *            the listener type.
          */
         EventDescriptor(long eventMask, Class<? extends EventListener> listenerType) {
             this.eventMask = eventMask;
@@ -370,24 +439,28 @@
         }
 
     }
-    
+
     /**
-     * The Class EventTypeLookup.
+     * The class EventTypeLookup.
      */
     static final class EventTypeLookup {
-        
-        /** The last event. */
+
+        /**
+         * The last event.
+         */
         private AWTEvent lastEvent = null;
-        
-        /** The last event descriptor. */
+
+        /**
+         * The last event descriptor.
+         */
         private EventDescriptor lastEventDescriptor = null;
 
         /**
          * Gets the event descriptor.
          * 
-         * @param event the event
-         * 
-         * @return the event descriptor
+         * @param event
+         *            the event.
+         * @return the event descriptor.
          */
         EventDescriptor getEventDescriptor(AWTEvent event) {
             synchronized (this) {
@@ -403,9 +476,9 @@
         /**
          * Gets the event mask.
          * 
-         * @param event the event
-         * 
-         * @return the event mask
+         * @param event
+         *            the event.
+         * @return the event mask.
          */
         long getEventMask(AWTEvent event) {
             final EventDescriptor ed = getEventDescriptor(event);
@@ -414,65 +487,62 @@
     }
 
     /**
-     * The Class EventConverter.
+     * The class EventConverter.
      */
     static final class EventConverter {
-        
-        /** The Constant OLD_MOD_MASK. */
-        static final int OLD_MOD_MASK = Event.ALT_MASK | Event.CTRL_MASK
-        | Event.META_MASK | Event.SHIFT_MASK;
+
+        /**
+         * The constant OLD_MOD_MASK.
+         */
+        static final int OLD_MOD_MASK = Event.ALT_MASK | Event.CTRL_MASK | Event.META_MASK
+                | Event.SHIFT_MASK;
 
         /**
          * Convert action event.
          * 
-         * @param ae the ae
-         * 
-         * @return the event
+         * @param ae
+         *            the ae.
+         * @return the event.
          */
         Event convertActionEvent(ActionEvent ae) {
             Event evt = new Event(ae.getSource(), ae.getID(), ae.getActionCommand());
             evt.when = ae.getWhen();
             evt.modifiers = ae.getModifiers() & OLD_MOD_MASK;
 
-           /* if (source instanceof Button) {
-                arg = ((Button) source).getLabel();
-            } else if (source instanceof Checkbox) {
-                arg = new Boolean(((Checkbox) source).getState());
-            } else if (source instanceof CheckboxMenuItem) {
-                arg = ((CheckboxMenuItem) source).getLabel();
-            } else if (source instanceof Choice) {
-                arg = ((Choice) source).getSelectedItem();
-            } else if (source instanceof List) {
-                arg = ((List) source).getSelectedItem();
-            } else if (source instanceof MenuItem) {
-                arg = ((MenuItem) source).getLabel();
-            } else if (source instanceof TextField) {
-                arg = ((TextField) source).getText();
-            }
-*/
+            /*
+             * if (source instanceof Button) { arg = ((Button)
+             * source).getLabel(); } else if (source instanceof Checkbox) { arg
+             * = new Boolean(((Checkbox) source).getState()); } else if (source
+             * instanceof CheckboxMenuItem) { arg = ((CheckboxMenuItem)
+             * source).getLabel(); } else if (source instanceof Choice) { arg =
+             * ((Choice) source).getSelectedItem(); } else if (source instanceof
+             * List) { arg = ((List) source).getSelectedItem(); } else if
+             * (source instanceof MenuItem) { arg = ((MenuItem)
+             * source).getLabel(); } else if (source instanceof TextField) { arg
+             * = ((TextField) source).getText(); }
+             */
             return evt;
         }
 
-
         /**
          * Convert adjustment event.
          * 
-         * @param ae the ae
-         * 
-         * @return the event
+         * @param ae
+         *            the ae.
+         * @return the event.
          */
         Event convertAdjustmentEvent(AdjustmentEvent ae) {
-            //TODO: Event.SCROLL_BEGIN/SCROLL_END
-            return new Event(ae.source, ae.id + ae.getAdjustmentType() - 1,
-                    new Integer(ae.getValue()));
+            // TODO: Event.SCROLL_BEGIN/SCROLL_END
+            return new Event(ae.source, ae.id + ae.getAdjustmentType() - 1, new Integer(ae
+                    .getValue()));
         }
 
         /**
          * Convert component event.
          * 
-         * @param ce the ce
-         * 
-         * @return the event
+         * @param ce
+         *            the ce.
+         * @return the event.
          */
         Event convertComponentEvent(ComponentEvent ce) {
             Component comp = ce.getComponent();
@@ -482,35 +552,27 @@
             return evt;
         }
 
-        //???AWT
+        // ???AWT
         /*
-        Event convertItemEvent(ItemEvent ie) {
-            int oldId = ie.id + ie.getStateChange() - 1;
-            Object source = ie.source;
-            int idx = -1;
-            if (source instanceof List) {
-                List list = (List) source;
-                idx = list.getSelectedIndex();
-            }
-            else if (source instanceof Choice) {
-                Choice choice = (Choice) source;
-                idx = choice.getSelectedIndex();
-            }
-            Object arg = idx >= 0 ? new Integer(idx) : null;
-            return new Event(source, oldId, arg);
-        }
-        */
-        
+         * Event convertItemEvent(ItemEvent ie) { int oldId = ie.id +
+         * ie.getStateChange() - 1; Object source = ie.source; int idx = -1; if
+         * (source instanceof List) { List list = (List) source; idx =
+         * list.getSelectedIndex(); } else if (source instanceof Choice) {
+         * Choice choice = (Choice) source; idx = choice.getSelectedIndex(); }
+         * Object arg = idx >= 0 ? new Integer(idx) : null; return new
+         * Event(source, oldId, arg); }
+         */
+
         /**
          * Convert key event.
          * 
-         * @param ke the ke
-         * 
-         * @return the event
+         * @param ke
+         *            the ke.
+         * @return the event.
          */
         Event convertKeyEvent(KeyEvent ke) {
             int oldId = ke.id;
-            //leave only old Event's modifiers
+            // leave only old Event's modifiers
 
             int mod = ke.getModifiers() & OLD_MOD_MASK;
             Component comp = ke.getComponent();
@@ -518,7 +580,7 @@
             int keyCode = ke.getKeyCode();
             int key = convertKey(keyChar, keyCode);
             if (key >= Event.HOME && key <= Event.INSERT) {
-                oldId += 2; //non-ASCII key -> action key
+                oldId += 2; // non-ASCII key -> action key
             }
             return new Event(comp, ke.getWhen(), oldId, 0, 0, key, mod);
         }
@@ -526,9 +588,9 @@
         /**
          * Convert mouse event.
          * 
-         * @param me the me
-         * 
-         * @return the event
+         * @param me
+         *            the me.
+         * @return the event.
          */
         Event convertMouseEvent(MouseEvent me) {
             int id = me.id;
@@ -537,7 +599,7 @@
                 evt.x = me.getX();
                 evt.y = me.getY();
                 int mod = me.getModifiers();
-                //in Event modifiers mean button number for mouse events:
+                // in Event modifiers mean button number for mouse events:
                 evt.modifiers = mod & (Event.ALT_MASK | Event.META_MASK);
                 if (id == MouseEvent.MOUSE_PRESSED) {
                     evt.clickCount = me.getClickCount();
@@ -546,68 +608,69 @@
             }
             return null;
         }
-        
+
         /**
          * Convert key.
          * 
-         * @param keyChar the key char
-         * @param keyCode the key code
-         * 
-         * @return the int
+         * @param keyChar
+         *            the key char.
+         * @param keyCode
+         *            the key code.
+         * @return the int.
          */
         int convertKey(char keyChar, int keyCode) {
             int key;
-            //F1 - F12
+            // F1 - F12
             if (keyCode >= KeyEvent.VK_F1 && keyCode <= KeyEvent.VK_F12) {
                 key = Event.F1 + keyCode - KeyEvent.VK_F1;
             } else {
                 switch (keyCode) {
-                default: //non-action key
-                    key = keyChar;
-                    break;
-                //action keys:
-                case KeyEvent.VK_HOME:
-                    key = Event.HOME;
-                    break;
-                case KeyEvent.VK_END:
-                    key = Event.END;
-                    break;
-                case KeyEvent.VK_PAGE_UP:
-                    key = Event.PGUP;
-                    break;
-                case KeyEvent.VK_PAGE_DOWN:
-                    key = Event.PGDN;
-                    break;
-                case KeyEvent.VK_UP:
-                    key = Event.UP;
-                    break;
-                case KeyEvent.VK_DOWN:
-                    key = Event.DOWN;
-                    break;
-                case KeyEvent.VK_LEFT:
-                    key = Event.LEFT;
-                    break;
-                case KeyEvent.VK_RIGHT:
-                    key = Event.RIGHT;
-                    break;
-                case KeyEvent.VK_PRINTSCREEN:
-                    key = Event.PRINT_SCREEN;
-                    break;
-                case KeyEvent.VK_SCROLL_LOCK:
-                    key = Event.SCROLL_LOCK;
-                    break;
-                case KeyEvent.VK_CAPS_LOCK:
-                    key = Event.CAPS_LOCK;
-                    break;
-                case KeyEvent.VK_NUM_LOCK:
-                    key = Event.NUM_LOCK;
-                    break;
-                case KeyEvent.VK_PAUSE:
-                    key = Event.PAUSE;
-                    break;
-                case KeyEvent.VK_INSERT:
-                    key = Event.INSERT;
-                    break;
+                    default: // non-action key
+                        key = keyChar;
+                        break;
+                    // action keys:
+                    case KeyEvent.VK_HOME:
+                        key = Event.HOME;
+                        break;
+                    case KeyEvent.VK_END:
+                        key = Event.END;
+                        break;
+                    case KeyEvent.VK_PAGE_UP:
+                        key = Event.PGUP;
+                        break;
+                    case KeyEvent.VK_PAGE_DOWN:
+                        key = Event.PGDN;
+                        break;
+                    case KeyEvent.VK_UP:
+                        key = Event.UP;
+                        break;
+                    case KeyEvent.VK_DOWN:
+                        key = Event.DOWN;
+                        break;
+                    case KeyEvent.VK_LEFT:
+                        key = Event.LEFT;
+                        break;
+                    case KeyEvent.VK_RIGHT:
+                        key = Event.RIGHT;
+                        break;
+                    case KeyEvent.VK_PRINTSCREEN:
+                        key = Event.PRINT_SCREEN;
+                        break;
+                    case KeyEvent.VK_SCROLL_LOCK:
+                        key = Event.SCROLL_LOCK;
+                        break;
+                    case KeyEvent.VK_CAPS_LOCK:
+                        key = Event.CAPS_LOCK;
+                        break;
+                    case KeyEvent.VK_NUM_LOCK:
+                        key = Event.NUM_LOCK;
+                        break;
+                    case KeyEvent.VK_PAUSE:
+                        key = Event.PAUSE;
+                        break;
+                    case KeyEvent.VK_INSERT:
+                        key = Event.INSERT;
+                        break;
                 }
             }
             return key;
diff --git a/awt/java/awt/AWTException.java b/awt/java/awt/AWTException.java
index 70ce6e1..6590b73 100644
--- a/awt/java/awt/AWTException.java
+++ b/awt/java/awt/AWTException.java
@@ -18,26 +18,30 @@
  * @author Michael Danilov
  * @version $Revision$
  */
+
 package java.awt;
 
-
 /**
- * The AWTException class is used to provide notification and information
- * about AWT errors.
+ * The AWTException class is used to provide notification and information about
+ * AWT errors.
+ * 
+ * @since Android 1.0
  */
 public class AWTException extends Exception {
-    
-    /** The Constant serialVersionUID. */
+
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = -1900414231151323879L;
 
     /**
      * Instantiates a new AWT exception with the specified message.
      * 
-     * @param msg the specific message for current exception.
+     * @param msg
+     *            the specific message for current exception.
      */
     public AWTException(String msg) {
         super(msg);
     }
 
 }
-
diff --git a/awt/java/awt/AWTKeyStroke.java b/awt/java/awt/AWTKeyStroke.java
index 5e7de4e..f01f6f0 100644
--- a/awt/java/awt/AWTKeyStroke.java
+++ b/awt/java/awt/AWTKeyStroke.java
@@ -18,7 +18,9 @@
  * @author Dmitry A. Durnev
  * @version $Revision$
  */
+
 package java.awt;
+
 import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
 import java.io.ObjectStreamException;
@@ -36,7 +38,7 @@
  * The AWTKeyStroke holds all of the information for the complete act of 
  * typing a character. This includes the events that are generated when 
  * the key is pressed, released, or typed (pressed and released generating
- * a unicode character result) which are associated with the event
+ * a Unicode character result) which are associated with the event
  * objects KeyEvent.KEY_PRESSED, KeyEvent.KEY_RELEASED, or KeyEvent.KEY_TYPED.
  * It also holds information about which modifiers (such as control or 
  * shift) were used in conjunction with the keystroke. The following masks 
@@ -57,19 +59,41 @@
  *  The AWTKeyStroke is unique, and applications should not create their own 
  *  instances of AWTKeyStroke. All applications should use getAWTKeyStroke 
  *  methods for obtaining instances of AWTKeyStroke.
+ *  
+ *  @since Android 1.0
  */
 public class AWTKeyStroke implements Serializable {
-    
-    /** The Constant serialVersionUID. */
+
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = -6430539691155161871L;
 
-    /** The Constant cache. */
-    private static final Map<AWTKeyStroke, AWTKeyStroke> cache = new HashMap<AWTKeyStroke, AWTKeyStroke>(); //Map<AWTKeyStroke, ? extends AWTKeyStroke>
-    
-    /** The Constant keyEventTypesMap. */
-    private static final Map<Integer, String> keyEventTypesMap = new HashMap<Integer, String>(); //Map<int, String>
+    /**
+     * The Constant cache.
+     */
+    private static final Map<AWTKeyStroke, AWTKeyStroke> cache = new HashMap<AWTKeyStroke, AWTKeyStroke>(); // Map
 
-    private static Constructor<?> subConstructor;   
+    // <
+    // AWTKeyStroke
+    // ,
+    // ?
+    // extends
+    // AWTKeyStroke
+    // >
+
+    /**
+     * The Constant keyEventTypesMap.
+     */
+    private static final Map<Integer, String> keyEventTypesMap = new HashMap<Integer, String>(); // Map
+
+    // <
+    // int
+    // ,
+    // String
+    // >
+
+    private static Constructor<?> subConstructor;
 
     static {
         keyEventTypesMap.put(new Integer(KeyEvent.KEY_PRESSED), "pressed"); //$NON-NLS-1$
@@ -77,53 +101,66 @@
         keyEventTypesMap.put(new Integer(KeyEvent.KEY_TYPED), "typed"); //$NON-NLS-1$
     }
 
-    /** The key char. */
-    private char keyChar;
-    
-    /** The key code. */
-    private int keyCode;
-    
-    /** The modifiers. */
-    private int modifiers;
-    
-    /** The on key release. */
-    private boolean onKeyRelease;
-    
     /**
-     * Instantiates a new AWTKeyStroke. 
-     * getAWTKeyStroke method should be used by applications code.  
-     * 
-     * @param keyChar the key char
-     * @param keyCode the key code
-     * @param modifiers the modifiers
-     * @param onKeyRelease true if AWTKeyStroke is for a key release, overwise false. 
+     * The key char.
      */
-    protected AWTKeyStroke(char keyChar, int keyCode, int modifiers,
-            boolean onKeyRelease)
-    {
-       setAWTKeyStroke(keyChar, keyCode, modifiers, onKeyRelease);
+    private char keyChar;
+
+    /**
+     * The key code.
+     */
+    private int keyCode;
+
+    /**
+     * The modifiers.
+     */
+    private int modifiers;
+
+    /**
+     * The on key release.
+     */
+    private boolean onKeyRelease;
+
+    /**
+     * Instantiates a new AWTKeyStroke. getAWTKeyStroke method should be used by
+     * applications code.
+     * 
+     * @param keyChar
+     *            the key char.
+     * @param keyCode
+     *            the key code.
+     * @param modifiers
+     *            the modifiers.
+     * @param onKeyRelease
+     *            true if AWTKeyStroke is for a key release, false otherwise.
+     */
+    protected AWTKeyStroke(char keyChar, int keyCode, int modifiers, boolean onKeyRelease) {
+        setAWTKeyStroke(keyChar, keyCode, modifiers, onKeyRelease);
     }
 
-    /** Sets the awt key stroke.
+    /**
+     * Sets the AWT key stroke.
      * 
-     * @param keyChar the key char
-     * @param keyCode the key code
-     * @param modifiers the modifiers
-     * @param onKeyRelease the on key release
+     * @param keyChar
+     *            the key char.
+     * @param keyCode
+     *            the key code.
+     * @param modifiers
+     *            the modifiers.
+     * @param onKeyRelease
+     *            the on key release.
      */
-    private void setAWTKeyStroke( char keyChar, int keyCode, int modifiers,
-            boolean onKeyRelease)
-    {
+    private void setAWTKeyStroke(char keyChar, int keyCode, int modifiers, boolean onKeyRelease) {
         this.keyChar = keyChar;
         this.keyCode = keyCode;
         this.modifiers = modifiers;
         this.onKeyRelease = onKeyRelease;
     }
-    
+
     /**
      * Instantiates a new AWTKeyStroke with default parameters:
-     * KeyEvent.CHAR_UNDEFINED key char, KeyEvent.VK_UNDEFINED key code,
-     * without modifiers and false key realised value.
+     * KeyEvent.CHAR_UNDEFINED key char, KeyEvent.VK_UNDEFINED key code, without
+     * modifiers and false key realized value.
      */
     protected AWTKeyStroke() {
         this(KeyEvent.CHAR_UNDEFINED, KeyEvent.VK_UNDEFINED, 0, false);
@@ -132,42 +169,44 @@
     /**
      * Returns the unique number value for AWTKeyStroke object.
      * 
-     * @return the int unique value of the AWTKeyStroke object.
+     * @return the integer unique value of the AWTKeyStroke object.
      */
     @Override
     public int hashCode() {
-        return modifiers + ( keyCode != KeyEvent.VK_UNDEFINED ?
-                keyCode : keyChar) + (onKeyRelease ? -1 : 0);
+        return modifiers + (keyCode != KeyEvent.VK_UNDEFINED ? keyCode : keyChar)
+                + (onKeyRelease ? -1 : 0);
     }
 
     /**
      * Gets the set of modifiers for the AWTKeyStroke object.
      * 
-     * @return the int value which contains modifiers.
+     * @return the integer value which contains modifiers.
      */
     public final int getModifiers() {
         return modifiers;
     }
 
     /**
-     * Compares the AWTKeyStroke object to the specified object.
+     * Compares this AWTKeyStroke object to the specified object.
      * 
-     * @return true, if objects are identical, overwise false.
+     * @param anObject
+     *            the specified AWTKeyStroke object to compare with this
+     *            instance.
+     * @return true if objects are identical, false otherwise.
      */
     @Override
     public final boolean equals(Object anObject) {
         if (anObject instanceof AWTKeyStroke) {
             AWTKeyStroke key = (AWTKeyStroke)anObject;
-            return ((key.keyCode == keyCode) && (key.keyChar == keyChar) &&
-                    (key.modifiers == modifiers) &&
-                    (key.onKeyRelease == onKeyRelease));
+            return ((key.keyCode == keyCode) && (key.keyChar == keyChar)
+                    && (key.modifiers == modifiers) && (key.onKeyRelease == onKeyRelease));
         }
         return false;
     }
 
     /**
-     * Returns the string representation of the AWTKeyStroke.
-     * This string should contain key stroke properties.
+     * Returns the string representation of the AWTKeyStroke. This string should
+     * contain key stroke properties.
      * 
      * @return the string representation of the AWTKeyStroke.
      */
@@ -175,9 +214,10 @@
     public String toString() {
         int type = getKeyEventType();
         return InputEvent.getModifiersExText(getModifiers()) + " " + //$NON-NLS-1$
-            keyEventTypesMap.get(new Integer(type)) +  " " + //$NON-NLS-1$
-            (type == KeyEvent.KEY_TYPED ? new String(new char[] {keyChar}) :
-                                          KeyEvent.getKeyText(keyCode));
+                keyEventTypesMap.get(new Integer(type)) + " " + //$NON-NLS-1$
+                (type == KeyEvent.KEY_TYPED ? new String(new char[] {
+                    keyChar
+                }) : KeyEvent.getKeyText(keyCode));
     }
 
     /**
@@ -201,16 +241,18 @@
     /**
      * Gets the AWT key stroke.
      * 
-     * @param keyChar the key char
-     * @param keyCode the key code
-     * @param modifiers the modifiers
-     * @param onKeyRelease the on key release
-     * 
-     * @return the AWT key stroke
+     * @param keyChar
+     *            the key char.
+     * @param keyCode
+     *            the key code.
+     * @param modifiers
+     *            the modifiers.
+     * @param onKeyRelease
+     *            the on key release.
+     * @return the AWT key stroke.
      */
-    private static AWTKeyStroke getAWTKeyStroke(char keyChar, int keyCode,
-                                                int modifiers,
-                                                boolean onKeyRelease) {
+    private static AWTKeyStroke getAWTKeyStroke(char keyChar, int keyCode, int modifiers,
+            boolean onKeyRelease) {
         AWTKeyStroke key = newInstance(keyChar, keyCode, modifiers, onKeyRelease);
 
         AWTKeyStroke value = cache.get(key);
@@ -224,28 +266,30 @@
     /**
      * New instance.
      * 
-     * @param keyChar the key char
-     * @param keyCode the key code
-     * @param modifiers the modifiers
-     * @param onKeyRelease the on key release
-     * 
-     * @return the AWT key stroke
+     * @param keyChar
+     *            the key char.
+     * @param keyCode
+     *            the key code.
+     * @param modifiers
+     *            the modifiers.
+     * @param onKeyRelease
+     *            the on key release.
+     * @return the AWT key stroke.
      */
-    private static AWTKeyStroke newInstance(char keyChar, int keyCode,
-                                            int modifiers,
-                                            boolean onKeyRelease) {
+    private static AWTKeyStroke newInstance(char keyChar, int keyCode, int modifiers,
+            boolean onKeyRelease) {
         AWTKeyStroke key;
-        //???AWT
-//        if (subConstructor == null) {
-            key = new AWTKeyStroke();
-        //???AWT
-//        } else {
-//            try {
-//                key = (AWTKeyStroke) subConstructor.newInstance();
-//            } catch (Exception e) {
-//                throw new RuntimeException(e);
-//            }
-//        }
+        // ???AWT
+        // if (subConstructor == null) {
+        key = new AWTKeyStroke();
+        // ???AWT
+        // } else {
+        // try {
+        // key = (AWTKeyStroke) subConstructor.newInstance();
+        // } catch (Exception e) {
+        // throw new RuntimeException(e);
+        // }
+        // }
         int allModifiers = getAllModifiers(modifiers);
         key.setAWTKeyStroke(keyChar, keyCode, allModifiers, onKeyRelease);
         return key;
@@ -254,21 +298,22 @@
     /**
      * Adds the mask.
      * 
-     * @param mod the mod
-     * @param mask the mask
-     * 
-     * @return the int
+     * @param mod
+     *            the mod.
+     * @param mask
+     *            the mask.
+     * @return the int.
      */
     private static int addMask(int mod, int mask) {
         return ((mod & mask) != 0) ? (mod | mask) : mod;
     }
 
     /**
-     * return all (old & new) modifiers corresponding to.
+     * Return all (old & new) modifiers corresponding to.
      * 
-     * @param mod old or new modifiers
-     * 
-     * @return old and new modifiers together
+     * @param mod
+     *            old or new modifiers.
+     * @return old and new modifiers together.
      */
     static int getAllModifiers(int mod) {
         int allMod = mod;
@@ -289,27 +334,23 @@
     }
 
     /**
-     * Returns an instance of AWTKeyStroke for parsed string.
-     * 
-     * The string must have the following syntax:
+     * Returns an instance of AWTKeyStroke for parsed string. The string must
+     * have the following syntax:
      *<p>
      * &lt;modifiers&gt;* (&lt;typedID&gt; | &lt;pressedReleasedID&gt;)
      *<p>
-     * modifiers := shift | control | ctrl | meta | alt | altGraph
-     * <br> 
-     * typedID := typed <typedKey>
-     * <br>
-     * typedKey := string of length 1 giving the Unicode character.
-     * <br>
-     * pressedReleasedID := (pressed | released) <key>
-     * <br>
+     * modifiers := shift | control | ctrl | meta | alt | altGraph <br>
+     * typedID := typed <typedKey> <br>
+     * typedKey := string of length 1 giving the Unicode character. <br>
+     * pressedReleasedID := (pressed | released) <key> <br>
      * key := KeyEvent key code name, i.e. the name following "VK_".
      * <p>
-     * @param s the String which contains key stroke parameters.
      * 
+     * @param s
+     *            the String which contains key stroke parameters.
      * @return the AWTKeyStroke for string.
-     * 
-     * @throws IllegalArgumentException if string has incorrect format or null.
+     * @throws IllegalArgumentException
+     *             if string has incorrect format or null.
      */
     public static AWTKeyStroke getAWTKeyStroke(String s) {
         if (s == null) {
@@ -351,16 +392,15 @@
             throw new IllegalArgumentException(Messages.getString("awt.66")); //$NON-NLS-1$
         }
 
-        return getAWTKeyStroke(keyChar, keyCode, modifiers,
-                               release == Boolean.TRUE);
+        return getAWTKeyStroke(keyChar, keyCode, modifiers, release == Boolean.TRUE);
     }
 
     /**
      * Gets the next token.
      * 
-     * @param tokenizer the tokenizer
-     * 
-     * @return the next token
+     * @param tokenizer
+     *            the tokenizer.
+     * @return the next token.
      */
     private static String getNextToken(StringTokenizer tokenizer) {
         try {
@@ -374,9 +414,9 @@
     /**
      * Gets the key code.
      * 
-     * @param s the s
-     * 
-     * @return the key code
+     * @param s
+     *            the s.
+     * @return the key code.
      */
     static int getKeyCode(String s) {
         try {
@@ -394,8 +434,8 @@
     /**
      * Gets an instance of the AWTKeyStroke for specified character.
      * 
-     * @param keyChar the keyboard character value.
-     * 
+     * @param keyChar
+     *            the keyboard character value.
      * @return a AWTKeyStroke for specified character.
      */
     public static AWTKeyStroke getAWTKeyStroke(char keyChar) {
@@ -403,120 +443,121 @@
     }
 
     /**
-     * Returns an instance of AWTKeyStroke for a given key code, set 
-     * of modifiers, and specified key released flag value.
-     * The key codes are defined in java.awt.event.KeyEvent class. 
-     * The set of modifiers is given as a bitwise combination 
-     * of masks taken from the following list:
+     * Returns an instance of AWTKeyStroke for a given key code, set of
+     * modifiers, and specified key released flag value. The key codes are
+     * defined in java.awt.event.KeyEvent class. The set of modifiers is given
+     * as a bitwise combination of masks taken from the following list:
      * <ul>
-     * <li>java.awt.event.InputEvent.ALT_GRAPH_DOWN_MASK</li>
-     * <li>java.awt.event.InputEvent.ALT_DOWN_MASK</li>
-     * <li>java.awt.event.InputEvent.CTRL_DOWN_MASK</li>
-     * <li>java.awt.event.InputEvent.META_DOWN_MASK</li>
-     * <li>java.awt.event.InputEvent.SHIFT_DOWN_MASK</li>
-     * <li>java.awt.event.InputEvent.ALT_GRAPH_MASK</li>
-     * <li>java.awt.event.InputEvent.ALT_MASK</li>
-     * <li>java.awt.event.InputEvent.CTRL_MASK</li>
-     * <li>java.awt.event.InputEvent.META_MASK</li>  
-     * <li>java.awt.event.InputEvent.SHIFT_MASK</li>
+     * <li>java.awt.event.InputEvent.ALT_GRAPH_DOWN_MASK</li> <li>
+     * java.awt.event.InputEvent.ALT_DOWN_MASK</li> <li>
+     * java.awt.event.InputEvent.CTRL_DOWN_MASK</li> <li>
+     * java.awt.event.InputEvent.META_DOWN_MASK</li> <li>
+     * java.awt.event.InputEvent.SHIFT_DOWN_MASK</li> <li>
+     * java.awt.event.InputEvent.ALT_GRAPH_MASK</li> <li>
+     * java.awt.event.InputEvent.ALT_MASK</li> <li>
+     * java.awt.event.InputEvent.CTRL_MASK</li> <li>
+     * java.awt.event.InputEvent.META_MASK</li> <li>
+     * java.awt.event.InputEvent.SHIFT_MASK</li>
      * </ul>
-     *  <br>
-     *  
-     * @param keyCode the specified key code of keyboard.
-     * @param modifiers the bit set of modifiers.
+     * <br>
      * 
+     * @param keyCode
+     *            the specified key code of keyboard.
+     * @param modifiers
+     *            the bit set of modifiers.
+     * @param onKeyRelease
+     *            the value which represents whether this AWTKeyStroke shall
+     *            represents a key release.
      * @return the AWTKeyStroke.
      */
-    public static AWTKeyStroke getAWTKeyStroke(int keyCode, int modifiers,
-                                               boolean onKeyRelease) {
-        return getAWTKeyStroke(KeyEvent.CHAR_UNDEFINED, keyCode, modifiers,
-                               onKeyRelease);
+    public static AWTKeyStroke getAWTKeyStroke(int keyCode, int modifiers, boolean onKeyRelease) {
+        return getAWTKeyStroke(KeyEvent.CHAR_UNDEFINED, keyCode, modifiers, onKeyRelease);
     }
 
     /**
-     * Returns AWTKeyStroke for a specified character and set of modifiers. 
-     * The set of modifiers is given as a bitwise combination 
-     * of masks taken from the following list:
+     * Returns AWTKeyStroke for a specified character and set of modifiers. The
+     * set of modifiers is given as a bitwise combination of masks taken from
+     * the following list:
      * <ul>
-     * <li>java.awt.event.InputEvent.ALT_GRAPH_DOWN_MASK</li>
-     * <li>java.awt.event.InputEvent.ALT_DOWN_MASK</li>
-     * <li>java.awt.event.InputEvent.CTRL_DOWN_MASK</li>
-     * <li>java.awt.event.InputEvent.META_DOWN_MASK</li>
-     * <li>java.awt.event.InputEvent.SHIFT_DOWN_MASK</li>
-     * <li>java.awt.event.InputEvent.ALT_GRAPH_MASK</li>
-     * <li>java.awt.event.InputEvent.ALT_MASK</li>
-     * <li>java.awt.event.InputEvent.CTRL_MASK</li>
-     * <li>java.awt.event.InputEvent.META_MASK</li>  
-     * <li>java.awt.event.InputEvent.SHIFT_MASK</li>
+     * <li>java.awt.event.InputEvent.ALT_GRAPH_DOWN_MASK</li> <li>
+     * java.awt.event.InputEvent.ALT_DOWN_MASK</li> <li>
+     * java.awt.event.InputEvent.CTRL_DOWN_MASK</li> <li>
+     * java.awt.event.InputEvent.META_DOWN_MASK</li> <li>
+     * java.awt.event.InputEvent.SHIFT_DOWN_MASK</li> <li>
+     * java.awt.event.InputEvent.ALT_GRAPH_MASK</li> <li>
+     * java.awt.event.InputEvent.ALT_MASK</li> <li>
+     * java.awt.event.InputEvent.CTRL_MASK</li> <li>
+     * java.awt.event.InputEvent.META_MASK</li> <li>
+     * java.awt.event.InputEvent.SHIFT_MASK</li>
      * </ul>
      * 
-     * @param keyChar the Character object which represents keyboard character value.
-     * @param modifiers the bit set of modifiers.
-     * 
+     * @param keyChar
+     *            the Character object which represents keyboard character
+     *            value.
+     * @param modifiers
+     *            the bit set of modifiers.
      * @return the AWTKeyStroke object.
-     * 
-     * @throws IllegalArgumentException if keyChar value is null.
+     * @throws IllegalArgumentException
+     *             if keyChar value is null.
      */
     public static AWTKeyStroke getAWTKeyStroke(Character keyChar, int modifiers) {
         if (keyChar == null) {
             // awt.01='{0}' parameter is null
             throw new IllegalArgumentException(Messages.getString("awt.01", "keyChar")); //$NON-NLS-1$ //$NON-NLS-2$
         }
-        return getAWTKeyStroke(keyChar.charValue(), KeyEvent.VK_UNDEFINED,
-                               modifiers, false);
+        return getAWTKeyStroke(keyChar.charValue(), KeyEvent.VK_UNDEFINED, modifiers, false);
     }
 
     /**
-     * Returns an instance of AWTKeyStroke for a specified key code and 
-     * set of modifiers.
-     * The key codes are defined in java.awt.event.KeyEvent class. 
-     * The set of modifiers is given as a bitwise combination 
-     * of masks taken from the following list:
+     * Returns an instance of AWTKeyStroke for a specified key code and set of
+     * modifiers. The key codes are defined in java.awt.event.KeyEvent class.
+     * The set of modifiers is given as a bitwise combination of masks taken
+     * from the following list:
      * <ul>
-     * <li>java.awt.event.InputEvent.ALT_GRAPH_DOWN_MASK</li>
-     * <li>java.awt.event.InputEvent.ALT_DOWN_MASK</li>
-     * <li>java.awt.event.InputEvent.CTRL_DOWN_MASK</li>
-     * <li>java.awt.event.InputEvent.META_DOWN_MASK</li>
-     * <li>java.awt.event.InputEvent.SHIFT_DOWN_MASK</li>
-     * <li>java.awt.event.InputEvent.ALT_GRAPH_MASK</li>
-     * <li>java.awt.event.InputEvent.ALT_MASK</li>
-     * <li>java.awt.event.InputEvent.CTRL_MASK</li>
-     * <li>java.awt.event.InputEvent.META_MASK</li>  
-     * <li>java.awt.event.InputEvent.SHIFT_MASK</li>
+     * <li>java.awt.event.InputEvent.ALT_GRAPH_DOWN_MASK</li> <li>
+     * java.awt.event.InputEvent.ALT_DOWN_MASK</li> <li>
+     * java.awt.event.InputEvent.CTRL_DOWN_MASK</li> <li>
+     * java.awt.event.InputEvent.META_DOWN_MASK</li> <li>
+     * java.awt.event.InputEvent.SHIFT_DOWN_MASK</li> <li>
+     * java.awt.event.InputEvent.ALT_GRAPH_MASK</li> <li>
+     * java.awt.event.InputEvent.ALT_MASK</li> <li>
+     * java.awt.event.InputEvent.CTRL_MASK</li> <li>
+     * java.awt.event.InputEvent.META_MASK</li> <li>
+     * java.awt.event.InputEvent.SHIFT_MASK</li>
      * </ul>
-     *  
-     * @param keyCode the specified key code of keyboard.
-     * @param modifiers the bit set of modifiers.
      * 
-     * @return the AWTKeyStroke
+     * @param keyCode
+     *            the specified key code of keyboard.
+     * @param modifiers
+     *            the bit set of modifiers.
+     * @return the AWTKeyStroke.
      */
     public static AWTKeyStroke getAWTKeyStroke(int keyCode, int modifiers) {
         return getAWTKeyStroke(keyCode, modifiers, false);
     }
 
     /**
-     * Gets the AWTKeyStroke for a key event. This method obtains the key char 
+     * Gets the AWTKeyStroke for a key event. This method obtains the key char
      * and key code from the specified key event.
      * 
-     * @param anEvent the key event which identifies the desired AWTKeyStroke.
-     * 
+     * @param anEvent
+     *            the key event which identifies the desired AWTKeyStroke.
      * @return the AWTKeyStroke for the key event.
      */
     public static AWTKeyStroke getAWTKeyStrokeForEvent(KeyEvent anEvent) {
         int id = anEvent.getID();
         char undef = KeyEvent.CHAR_UNDEFINED;
-        char keyChar = (id == KeyEvent.KEY_TYPED ? anEvent.getKeyChar() :
-                                                   undef);
-        int keyCode = (keyChar == undef ? anEvent.getKeyCode() :
-                                          KeyEvent.VK_UNDEFINED);
+        char keyChar = (id == KeyEvent.KEY_TYPED ? anEvent.getKeyChar() : undef);
+        int keyCode = (keyChar == undef ? anEvent.getKeyCode() : KeyEvent.VK_UNDEFINED);
         return getAWTKeyStroke(keyChar, keyCode, anEvent.getModifiersEx(),
-                               id == KeyEvent.KEY_RELEASED);
+                id == KeyEvent.KEY_RELEASED);
     }
 
     /**
      * Gets the key event type for the AWTKeyStroke object.
      * 
-     * @return the key event type: KeyEvent.KEY_PRESSED, KeyEvent.KEY_TYPED, or KeyEvent.KEY_RELEASED
+     * @return the key event type: KeyEvent.KEY_PRESSED, KeyEvent.KEY_TYPED, or
+     *         KeyEvent.KEY_RELEASED.
      */
     public final int getKeyEventType() {
         if (keyCode == KeyEvent.VK_UNDEFINED) {
@@ -526,11 +567,11 @@
     }
 
     /**
-     * Retuns true if the key event is associated with the AWTKeyStroke is 
-     * KEY_RELEASED, overwise false.
+     * Returns true if the key event is associated with the AWTKeyStroke is
+     * KEY_RELEASED, false otherwise.
      * 
-     * @return true, if if the key event associated with the AWTKeyStroke is 
-     * KEY_RELEASED, overwise false.
+     * @return true, if if the key event associated with the AWTKeyStroke is
+     *         KEY_RELEASED, false otherwise.
      */
     public final boolean isOnKeyRelease() {
         return onKeyRelease;
@@ -539,50 +580,44 @@
     /**
      * Read resolve.
      * 
-     * @return the object
-     * 
-     * @throws ObjectStreamException the object stream exception
+     * @return the object.
+     * @throws ObjectStreamException
+     *             the object stream exception.
      */
     protected Object readResolve() throws ObjectStreamException {
-        return getAWTKeyStroke(this.keyChar, this.keyCode,
-                               this.modifiers, this.onKeyRelease);
+        return getAWTKeyStroke(this.keyChar, this.keyCode, this.modifiers, this.onKeyRelease);
     }
 
     /**
      * Register subclass.
      * 
-     * @param subclass the subclass
+     * @param subclass
+     *            the subclass.
      */
     protected static void registerSubclass(Class<?> subclass) {
-        //???AWT
+        // ???AWT
         /*
-        if (subclass == null) {
-            // awt.01='{0}' parameter is null
-            throw new IllegalArgumentException(Messages.getString("awt.01", "subclass")); //$NON-NLS-1$ //$NON-NLS-2$
-        }
-        if (! AWTKeyStroke.class.isAssignableFrom(subclass)) {
-            // awt.67=subclass is not derived from AWTKeyStroke
-            throw new ClassCastException(Messages.getString("awt.67")); //$NON-NLS-1$
-        }
-        try {
-            subConstructor = subclass.getDeclaredConstructor();
-            subConstructor.setAccessible(true);
-        } catch (SecurityException e) {
-            throw new RuntimeException(e);
-        } catch (NoSuchMethodException e) {
-            // awt.68=subclass could not be instantiated
-            throw new IllegalArgumentException(Messages.getString("awt.68")); //$NON-NLS-1$
-        }
-        cache.clear(); //flush the cache
-        */
+         * if (subclass == null) { // awt.01='{0}' parameter is null throw new
+         * IllegalArgumentException(Messages.getString("awt.01", "subclass"));
+         * //$NON-NLS-1$ //$NON-NLS-2$ } if (!
+         * AWTKeyStroke.class.isAssignableFrom(subclass)) { // awt.67=subclass
+         * is not derived from AWTKeyStroke throw new
+         * ClassCastException(Messages.getString("awt.67")); //$NON-NLS-1$ } try
+         * { subConstructor = subclass.getDeclaredConstructor();
+         * subConstructor.setAccessible(true); } catch (SecurityException e) {
+         * throw new RuntimeException(e); } catch (NoSuchMethodException e) { //
+         * awt.68=subclass could not be instantiated throw new
+         * IllegalArgumentException(Messages.getString("awt.68")); //$NON-NLS-1$
+         * } cache.clear(); //flush the cache
+         */
     }
 
     /**
      * Parses the modifier.
      * 
-     * @param strMod the str mod
-     * 
-     * @return the long
+     * @param strMod
+     *            the str mod.
+     * @return the long.
      */
     private static long parseModifier(String strMod) {
         long modifiers = 0l;
@@ -609,9 +644,9 @@
     /**
      * Parses the typed id.
      * 
-     * @param strTyped the str typed
-     * 
-     * @return true, if successful
+     * @param strTyped
+     *            the str typed.
+     * @return true, if successful.
      */
     private static boolean parseTypedID(String strTyped) {
         if (strTyped.equals("typed")) { //$NON-NLS-1$
@@ -624,9 +659,9 @@
     /**
      * Parses the typed key.
      * 
-     * @param strChar the str char
-     * 
-     * @return the char
+     * @param strChar
+     *            the str char.
+     * @return the char.
      */
     private static char parseTypedKey(String strChar) {
         char keyChar = KeyEvent.CHAR_UNDEFINED;
@@ -642,9 +677,9 @@
     /**
      * Parses the pressed released id.
      * 
-     * @param str the str
-     * 
-     * @return the boolean
+     * @param str
+     *            the str.
+     * @return the boolean.
      */
     private static Boolean parsePressedReleasedID(String str) {
 
@@ -659,9 +694,9 @@
     /**
      * Parses the key.
      * 
-     * @param strCode the str code
-     * 
-     * @return the int
+     * @param strCode
+     *            the str code.
+     * @return the int.
      */
     private static int parseKey(String strCode) {
         int keyCode = KeyEvent.VK_UNDEFINED;
@@ -675,4 +710,3 @@
         return keyCode;
     }
 }
-
diff --git a/awt/java/awt/AWTPermission.java b/awt/java/awt/AWTPermission.java
index 25326ab..4bd8357 100644
--- a/awt/java/awt/AWTPermission.java
+++ b/awt/java/awt/AWTPermission.java
@@ -18,24 +18,31 @@
  * @author Pavel Dolgov
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.security.BasicPermission;
 
 /**
- * The AWTPermission specifies the name of the permission and the 
- * corresponding action list.
+ * The AWTPermission specifies the name of the permission and the corresponding
+ * action list.
+ * 
+ * @since Android 1.0
  */
 public final class AWTPermission extends BasicPermission {
-    
-    /** The Constant serialVersionUID. */
+
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = 8890392402588814465L;
 
     /**
      * Instantiates a new AWTPermission with defined name and actions.
      * 
-     * @param name the name of a new AWTPermission. 
-     * @param actions the actions of a new AWTPermission.
+     * @param name
+     *            the name of a new AWTPermission.
+     * @param actions
+     *            the actions of a new AWTPermission.
      */
     public AWTPermission(String name, String actions) {
         super(name, actions);
@@ -44,11 +51,11 @@
     /**
      * Instantiates a new AWT permission with the defined name.
      * 
-     * @param name the name of a new AWTPermission. 
+     * @param name
+     *            the name of a new AWTPermission.
      */
     public AWTPermission(String name) {
         super(name);
     }
 
 }
-
diff --git a/awt/java/awt/ActiveEvent.java b/awt/java/awt/ActiveEvent.java
index 4133752..7044623 100644
--- a/awt/java/awt/ActiveEvent.java
+++ b/awt/java/awt/ActiveEvent.java
@@ -18,18 +18,21 @@
  * @author Michael Danilov
  * @version $Revision$
  */
+
 package java.awt;
 
 /**
- * This interface defines events that know how to dispatch themselves. 
- * Such event can be placed upon the event queue and its dispatch method 
- * will be called when the event is dispatched.
+ * This interface defines events that know how to dispatch themselves. Such
+ * event can be placed upon the event queue and its dispatch method will be
+ * called when the event is dispatched.
+ * 
+ * @since Android 1.0
  */
 public interface ActiveEvent {
 
     /**
-     * Dispatches the event to the listeners of the event's source, 
-     * or does whatever it is this event is supposed to do.
+     * Dispatches the event to the listeners of the event's source, or does
+     * whatever it is this event is supposed to do.
      */
     public void dispatch();
 
diff --git a/awt/java/awt/Adjustable.java b/awt/java/awt/Adjustable.java
index 3241cad..baf80f7 100644
--- a/awt/java/awt/Adjustable.java
+++ b/awt/java/awt/Adjustable.java
@@ -18,32 +18,35 @@
  * @author Pavel Dolgov
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.awt.event.AdjustmentListener;
 
 /**
- * The Adjustable interface represents an adjustable numeric value 
- * contained within a bounded range of values, such as the current 
- * location in scrollable region or the value of a gauge.
+ * The Adjustable interface represents an adjustable numeric value contained
+ * within a bounded range of values, such as the current location in scrollable
+ * region or the value of a gauge.
+ * 
+ * @since Android 1.0
  */
 public interface Adjustable {
 
-    /** 
-     * The Constant HORIZONTAL indicates that the Adjustable's orientation 
-     * is horizontal. 
+    /**
+     * The Constant HORIZONTAL indicates that the Adjustable's orientation is
+     * horizontal.
      */
     public static final int HORIZONTAL = 0;
 
-    /** 
-     * The Constant VERTICAL indicates that the Adjustable's orientation 
-     * is vertical. 
+    /**
+     * The Constant VERTICAL indicates that the Adjustable's orientation is
+     * vertical.
      */
     public static final int VERTICAL = 1;
 
-    /** 
-     * The Constant NO_ORIENTATION indicates that the Adjustable 
-     * has no orientation.
+    /**
+     * The Constant NO_ORIENTATION indicates that the Adjustable has no
+     * orientation.
      */
     public static final int NO_ORIENTATION = 2;
 
@@ -57,14 +60,16 @@
     /**
      * Sets the value to the Adjustable object.
      * 
-     * @param a0 the new value of the Adjustable object. 
+     * @param a0
+     *            the new value of the Adjustable object.
      */
     public void setValue(int a0);
 
     /**
      * Adds the AdjustmentListener to current Adjustment.
      * 
-     * @param a0 the AdjustmentListener object.
+     * @param a0
+     *            the AdjustmentListener object.
      */
     public void addAdjustmentListener(AdjustmentListener a0);
 
@@ -85,7 +90,7 @@
     /**
      * Gets the minimum value of the Adjustable.
      * 
-     * @return the minimum value of the Adjustable. 
+     * @return the minimum value of the Adjustable.
      */
     public int getMinimum();
 
@@ -113,44 +118,49 @@
     /**
      * Removes the adjustment listener of the Adjustable.
      * 
-     * @param a0 the specified AdjustmentListener to be removed.
+     * @param a0
+     *            the specified AdjustmentListener to be removed.
      */
     public void removeAdjustmentListener(AdjustmentListener a0);
 
     /**
      * Sets the block increment for the Adjustable.
      * 
-     * @param a0 the new block increment.
+     * @param a0
+     *            the new block increment.
      */
     public void setBlockIncrement(int a0);
 
     /**
      * Sets the maximum value of the Adjustable.
      * 
-     * @param a0 the new maximum of the Adjustable.
+     * @param a0
+     *            the new maximum of the Adjustable.
      */
     public void setMaximum(int a0);
 
     /**
      * Sets the minimum value of the Adjustable.
      * 
-     * @param a0 the new minimum of the Adjustable.
+     * @param a0
+     *            the new minimum of the Adjustable.
      */
     public void setMinimum(int a0);
 
     /**
      * Sets the unit increment of the Adjustable.
      * 
-     * @param a0 the new unit increment of the Adjustable.
+     * @param a0
+     *            the new unit increment of the Adjustable.
      */
     public void setUnitIncrement(int a0);
 
     /**
      * Sets the visible amount of the Adjustable.
      * 
-     * @param a0 the new visible amount of the Adjustable.
+     * @param a0
+     *            the new visible amount of the Adjustable.
      */
     public void setVisibleAmount(int a0);
 
 }
-
diff --git a/awt/java/awt/AlphaComposite.java b/awt/java/awt/AlphaComposite.java
index d26753c..8389eb4 100644
--- a/awt/java/awt/AlphaComposite.java
+++ b/awt/java/awt/AlphaComposite.java
@@ -18,6 +18,7 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.awt.Composite;
@@ -28,148 +29,181 @@
 import org.apache.harmony.awt.gl.ICompositeContext;
 import org.apache.harmony.awt.internal.nls.Messages;
 
-
 /**
- * The AlphaComposite class defines a basic alpha compositing rules for 
- * combining source and destination colors to achieve blending and 
- * transparency effects with graphics and images.
+ * The AlphaComposite class defines a basic alpha compositing rules for
+ * combining source and destination colors to achieve blending and transparency
+ * effects with graphics and images.
+ * 
+ * @since Android 1.0
  */
 public final class AlphaComposite implements Composite {
 
-    /** 
-     * The Constant CLEAR indicates that both the color and the alpha of 
-     * the destination are cleared (Porter-Duff Clear rule).
+    /**
+     * The Constant CLEAR indicates that both the color and the alpha of the
+     * destination are cleared (Porter-Duff Clear rule).
      */
     public static final int CLEAR = 1;
 
-    /** 
-     * The Constant SRC indicates that the source is copied to the destination 
+    /**
+     * The Constant SRC indicates that the source is copied to the destination
      * (Porter-Duff Source rule).
      */
     public static final int SRC = 2;
 
-    /** The Constant DST indicates that the destination is left untouched 
+    /**
+     * The Constant DST indicates that the destination is left untouched
      * (Porter-Duff Destination rule).
      */
     public static final int DST = 9;
 
-    /** 
-     * The Constant SRC_OVER indicates that the source is composited over 
-     * the destination (Porter-Duff Source Over Destination rule).
+    /**
+     * The Constant SRC_OVER indicates that the source is composited over the
+     * destination (Porter-Duff Source Over Destination rule).
      */
     public static final int SRC_OVER = 3;
 
     /**
-     * The Constant DST_OVER indicates that The destination is composited over 
-     * the source and the result replaces the destination 
-     * (Porter-Duff Destination Over Source rule).
+     * The Constant DST_OVER indicates that The destination is composited over
+     * the source and the result replaces the destination (Porter-Duff
+     * Destination Over Source rule).
      */
     public static final int DST_OVER = 4;
 
     /**
-     * The Constant SRC_IN indicates that the part of the source lying 
-     * inside of the destination replaces the destination (Porter-Duff 
-     * Source In Destination rule).
+     * The Constant SRC_IN indicates that the part of the source lying inside of
+     * the destination replaces the destination (Porter-Duff Source In
+     * Destination rule).
      */
     public static final int SRC_IN = 5;
 
-    /** 
-     * The Constant DST_IN indicates that the part of the destination 
-     * lying inside of the source replaces the destination 
-     * (Porter-Duff Destination In Source rule).
+    /**
+     * The Constant DST_IN indicates that the part of the destination lying
+     * inside of the source replaces the destination (Porter-Duff Destination In
+     * Source rule).
      */
     public static final int DST_IN = 6;
 
     /**
-     * The Constant SRC_OUT indicates that the part of the source lying 
-     * outside of the destination replaces the destination (Porter-Duff 
-     * Source Held Out By Destination rule).
+     * The Constant SRC_OUT indicates that the part of the source lying outside
+     * of the destination replaces the destination (Porter-Duff Source Held Out
+     * By Destination rule).
      */
     public static final int SRC_OUT = 7;
 
-    /** 
-     * The Constant DST_OUT indicates that the part of the destination 
-     * lying outside of the source replaces the destination (Porter-Duff 
-     * Destination Held Out By Source rule).
+    /**
+     * The Constant DST_OUT indicates that the part of the destination lying
+     * outside of the source replaces the destination (Porter-Duff Destination
+     * Held Out By Source rule).
      */
     public static final int DST_OUT = 8;
 
-    /** 
-     * The Constant SRC_ATOP indicates that the part of the source lying 
-     * inside of the destination is composited onto the destination 
-     * (Porter-Duff Source Atop Destination rule).
+    /**
+     * The Constant SRC_ATOP indicates that the part of the source lying inside
+     * of the destination is composited onto the destination (Porter-Duff Source
+     * Atop Destination rule).
      */
     public static final int SRC_ATOP = 10;
 
-    /** 
-     * The Constant DST_ATOP indicates that the part of the destination 
-     * lying inside of the source is composited over the source and replaces 
-     * the destination (Porter-Duff Destination Atop Source rule).
+    /**
+     * The Constant DST_ATOP indicates that the part of the destination lying
+     * inside of the source is composited over the source and replaces the
+     * destination (Porter-Duff Destination Atop Source rule).
      */
     public static final int DST_ATOP = 11;
 
     /**
-     * The Constant XOR indicates that the part of the source that lies 
-     * outside of the destination is combined with the part of the destination 
-     * that lies outside of the source (Porter-Duff Source Xor Destination rule).
+     * The Constant XOR indicates that the part of the source that lies outside
+     * of the destination is combined with the part of the destination that lies
+     * outside of the source (Porter-Duff Source Xor Destination rule).
      */
     public static final int XOR = 12;
 
-    /** AlphaComposite object with the opaque CLEAR rule and an alpha of 1.0f. */
+    /**
+     * AlphaComposite object with the opaque CLEAR rule and an alpha of 1.0f.
+     */
     public static final AlphaComposite Clear = new AlphaComposite(CLEAR);
 
-    /** AlphaComposite object with the opaque SRC rule and an alpha of 1.0f. */
+    /**
+     * AlphaComposite object with the opaque SRC rule and an alpha of 1.0f.
+     */
     public static final AlphaComposite Src = new AlphaComposite(SRC);
 
-    /** AlphaComposite object with the opaque DST rule and an alpha of 1.0f. */
+    /**
+     * AlphaComposite object with the opaque DST rule and an alpha of 1.0f.
+     */
     public static final AlphaComposite Dst = new AlphaComposite(DST);
 
-    /** AlphaComposite object with the opaque SRC_OVER rule and an alpha of 1.0f. */
+    /**
+     * AlphaComposite object with the opaque SRC_OVER rule and an alpha of 1.0f.
+     */
     public static final AlphaComposite SrcOver = new AlphaComposite(SRC_OVER);
 
-    /** AlphaComposite object with the opaque DST_OVER rule and an alpha of 1.0f. */
+    /**
+     * AlphaComposite object with the opaque DST_OVER rule and an alpha of 1.0f.
+     */
     public static final AlphaComposite DstOver = new AlphaComposite(DST_OVER);
 
-    /** AlphaComposite object with the opaque SRC_IN rule and an alpha of 1.0f. */
+    /**
+     * AlphaComposite object with the opaque SRC_IN rule and an alpha of 1.0f.
+     */
     public static final AlphaComposite SrcIn = new AlphaComposite(SRC_IN);
 
-    /** AlphaComposite object with the opaque DST_IN rule and an alpha of 1.0f. */
+    /**
+     * AlphaComposite object with the opaque DST_IN rule and an alpha of 1.0f.
+     */
     public static final AlphaComposite DstIn = new AlphaComposite(DST_IN);
 
-    /** AlphaComposite object with the opaque SRC_OUT rule and an alpha of 1.0f. */
+    /**
+     * AlphaComposite object with the opaque SRC_OUT rule and an alpha of 1.0f.
+     */
     public static final AlphaComposite SrcOut = new AlphaComposite(SRC_OUT);
 
-    /** AlphaComposite object with the opaque DST_OUT rule and an alpha of 1.0f. */
+    /**
+     * AlphaComposite object with the opaque DST_OUT rule and an alpha of 1.0f.
+     */
     public static final AlphaComposite DstOut = new AlphaComposite(DST_OUT);
 
-    /** AlphaComposite object with the opaque SRC_ATOP rule and an alpha of 1.0f. */
+    /**
+     * AlphaComposite object with the opaque SRC_ATOP rule and an alpha of 1.0f.
+     */
     public static final AlphaComposite SrcAtop = new AlphaComposite(SRC_ATOP);
 
-    /** AlphaComposite object with the opaque DST_ATOP rule and an alpha of 1.0f. */
+    /**
+     * AlphaComposite object with the opaque DST_ATOP rule and an alpha of 1.0f.
+     */
     public static final AlphaComposite DstAtop = new AlphaComposite(DST_ATOP);
 
-    /** AlphaComposite object with the opaque XOR rule and an alpha of 1.0f. */
+    /**
+     * AlphaComposite object with the opaque XOR rule and an alpha of 1.0f.
+     */
     public static final AlphaComposite Xor = new AlphaComposite(XOR);
 
-    /** The rule. */
+    /**
+     * The rule.
+     */
     private int rule;
-    
-    /** The alpha. */
+
+    /**
+     * The alpha.
+     */
     private float alpha;
 
     /**
-     * Instantiates a new alpha composite.
-     * Creates a context for the compositing operation. The context contains state that is used in performing the compositing operation.
+     * Instantiates a new alpha composite. Creates a context for the compositing
+     * operation. The context contains state that is used in performing the
+     * compositing operation.
      * 
-     * @param rule the rule
-     * @param alpha the alpha
+     * @param rule
+     *            the rule.
+     * @param alpha
+     *            the alpha.
      */
-    private AlphaComposite(int rule, float alpha){
-        if(rule < CLEAR || rule > XOR) {
+    private AlphaComposite(int rule, float alpha) {
+        if (rule < CLEAR || rule > XOR) {
             // awt.11D=Unknown rule
             throw new IllegalArgumentException(Messages.getString("awt.11D")); //$NON-NLS-1$
         }
-        if(alpha < 0.0f || alpha > 1.0f) {
+        if (alpha < 0.0f || alpha > 1.0f) {
             // awt.11E=Wrong alpha value
             throw new IllegalArgumentException(Messages.getString("awt.11E")); //$NON-NLS-1$
         }
@@ -181,41 +215,44 @@
     /**
      * Instantiates a new alpha composite.
      * 
-     * @param rule the rule
+     * @param rule
+     *            the rule.
      */
-    private AlphaComposite(int rule){
+    private AlphaComposite(int rule) {
         this(rule, 1.0f);
     }
 
     /**
      * Creates a CompositeContext object with the specified source ColorModel,
-     * destination ColorModel and RenderingHints parameters for a composing 
+     * destination ColorModel and RenderingHints parameters for a composing
      * operation.
      * 
-     * @param srcColorModel the source's ColorModel.
-     * @param dstColorModel the destination's ColorModel.
-     * @param hints the RenderingHints object.
-     * 
-     * @return the CompositeContext object.    
-     * 
-     * @see java.awt.Composite#createContext(java.awt.image.ColorModel, java.awt.image.ColorModel, java.awt.RenderingHints)
+     * @param srcColorModel
+     *            the source's ColorModel.
+     * @param dstColorModel
+     *            the destination's ColorModel.
+     * @param hints
+     *            the RenderingHints object.
+     * @return the CompositeContext object.
+     * @see java.awt.Composite#createContext(java.awt.image.ColorModel,
+     *      java.awt.image.ColorModel, java.awt.RenderingHints)
      */
-    public CompositeContext createContext(ColorModel srcColorModel,
-            ColorModel dstColorModel, RenderingHints hints) {
+    public CompositeContext createContext(ColorModel srcColorModel, ColorModel dstColorModel,
+            RenderingHints hints) {
         return new ICompositeContext(this, srcColorModel, dstColorModel);
     }
 
     /**
      * Compares the AlphaComposite object with the specified object.
      * 
-     * @param obj the Object to be compared.
-     * 
+     * @param obj
+     *            the Object to be compared.
      * @return true, if the AlphaComposite object is equal to the specified
-     * object.
+     *         object.
      */
     @Override
     public boolean equals(Object obj) {
-        if(!(obj instanceof AlphaComposite)) {
+        if (!(obj instanceof AlphaComposite)) {
             return false;
         }
         AlphaComposite other = (AlphaComposite)obj;
@@ -247,11 +284,11 @@
     }
 
     /**
-     * Gets the alpha value of this AlphaComposite object; returns 1.0 if 
-     * this AlphaComposite object doesn't have alpha value.
+     * Gets the alpha value of this AlphaComposite object; returns 1.0 if this
+     * AlphaComposite object doesn't have alpha value.
      * 
-     * @return the alpha value of this AlphaComposite object or 1.0 if 
-     * this AlphaComposite object doesn't have alpha value.
+     * @return the alpha value of this AlphaComposite object or 1.0 if this
+     *         AlphaComposite object doesn't have alpha value.
      */
     public float getAlpha() {
         return alpha;
@@ -260,13 +297,14 @@
     /**
      * Gets the AlphaComposite instance with the specified rule and alpha value.
      * 
-     * @param rule the compositing rule.
-     * @param alpha the alpha value.
-     * 
-     * @return AlphaComposite instance.
+     * @param rule
+     *            the compositing rule.
+     * @param alpha
+     *            the alpha value.
+     * @return the AlphaComposite instance.
      */
     public static AlphaComposite getInstance(int rule, float alpha) {
-        if(alpha == 1.0f) {
+        if (alpha == 1.0f) {
             return getInstance(rule);
         }
         return new AlphaComposite(rule, alpha);
@@ -275,41 +313,40 @@
     /**
      * Gets the AlphaComposite instance with the specified rule.
      * 
-     * @param rule the compositing rule.
-     * 
-     * @return AlphaComposite instance.
+     * @param rule
+     *            the compositing rule.
+     * @return the AlphaComposite instance.
      */
     public static AlphaComposite getInstance(int rule) {
-        switch(rule){
-        case CLEAR:
-            return Clear;
-        case SRC:
-            return Src;
-        case DST:
-            return Dst;
-        case SRC_OVER:
-            return SrcOver;
-        case DST_OVER:
-            return DstOver;
-        case SRC_IN:
-            return SrcIn;
-        case DST_IN:
-            return DstIn;
-        case SRC_OUT:
-            return SrcOut;
-        case DST_OUT:
-            return DstOut;
-        case SRC_ATOP:
-            return SrcAtop;
-        case DST_ATOP:
-            return DstAtop;
-        case XOR:
-            return Xor;
-        default:
-            // awt.11D=Unknown rule
-            throw new IllegalArgumentException(Messages.getString("awt.11D")); //$NON-NLS-1$
+        switch (rule) {
+            case CLEAR:
+                return Clear;
+            case SRC:
+                return Src;
+            case DST:
+                return Dst;
+            case SRC_OVER:
+                return SrcOver;
+            case DST_OVER:
+                return DstOver;
+            case SRC_IN:
+                return SrcIn;
+            case DST_IN:
+                return DstIn;
+            case SRC_OUT:
+                return SrcOut;
+            case DST_OUT:
+                return DstOut;
+            case SRC_ATOP:
+                return SrcAtop;
+            case DST_ATOP:
+                return DstAtop;
+            case XOR:
+                return Xor;
+            default:
+                // awt.11D=Unknown rule
+                throw new IllegalArgumentException(Messages.getString("awt.11D")); //$NON-NLS-1$
         }
     }
 
 }
-
diff --git a/awt/java/awt/BasicStroke.java b/awt/java/awt/BasicStroke.java
index 955dc6b..2457815 100644
--- a/awt/java/awt/BasicStroke.java
+++ b/awt/java/awt/BasicStroke.java
@@ -18,6 +18,7 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.awt.geom.GeneralPath;
@@ -27,139 +28,188 @@
 import org.apache.harmony.misc.HashCode;
 
 /**
- * The BasicStroke class specifies a set of rendering attributes for the outlines 
- * of graphics primitives. The BasicStroke attributes describe the shape of the 
- * pen which draws the outline of a Shape and the decorations applied at the ends
- * and joins of path segments of the Shape. The BasicStroke has the following
- * rendering attributes:
+ * The BasicStroke class specifies a set of rendering attributes for the
+ * outlines of graphics primitives. The BasicStroke attributes describe the
+ * shape of the pen which draws the outline of a Shape and the decorations
+ * applied at the ends and joins of path segments of the Shape. The BasicStroke
+ * has the following rendering attributes:
  * <p>
  * <ul>
- * <li> line width -the pen width which draws the outlines.</li>
- * <li> end caps - indicates the decoration applied to the ends of unclosed 
- * subpaths and dash segments. The BasicStroke defines three different decorations:
- * CAP_BUTT, CAP_ROUND, and CAP_SQUARE.</li>
- * <li>line joins - indicates the decoration applied at the intersection of 
- * two path segments and at the intersection of the endpoints of a subpath.
- * The BasicStroke defines three decorations: JOIN_BEVEL, JOIN_MITER, 
- * and JOIN_ROUND.</li>
- * <li>miter limit - the limit to trim a line join that has a JOIN_MITER 
+ * <li>line width -the pen width which draws the outlines.</li>
+ * <li>end caps - indicates the decoration applied to the ends of unclosed
+ * subpaths and dash segments. The BasicStroke defines three different
+ * decorations: CAP_BUTT, CAP_ROUND, and CAP_SQUARE.</li>
+ * <li>line joins - indicates the decoration applied at the intersection of two
+ * path segments and at the intersection of the endpoints of a subpath. The
+ * BasicStroke defines three decorations: JOIN_BEVEL, JOIN_MITER, and
+ * JOIN_ROUND.</li>
+ * <li>miter limit - the limit to trim a line join that has a JOIN_MITER
  * decoration.</li>
- * <li>dash attributes - the definition of how to make a dash pattern by 
- * alternating between opaque and transparent sections </li>
+ * <li>dash attributes - the definition of how to make a dash pattern by
+ * alternating between opaque and transparent sections</li>
  * </ul>
+ * </p>
+ * 
+ * @since Android 1.0
  */
 public class BasicStroke implements Stroke {
 
-    /** 
-     * The Constant CAP_BUTT indicates the ends of unclosed subpaths 
-     * and dash segments have no added decoration.
+    /**
+     * The Constant CAP_BUTT indicates the ends of unclosed subpaths and dash
+     * segments have no added decoration.
      */
     public static final int CAP_BUTT = 0;
-    
-    /** 
-     * The Constant CAP_ROUND indicates the ends of unclosed subpaths 
-     * and dash segments have a round decoration.
+
+    /**
+     * The Constant CAP_ROUND indicates the ends of unclosed subpaths and dash
+     * segments have a round decoration.
      */
     public static final int CAP_ROUND = 1;
-    
-    /** 
-     * The Constant CAP_SQUARE indicates the ends of unclosed subpaths 
-     * and dash segments have a square projection.
+
+    /**
+     * The Constant CAP_SQUARE indicates the ends of unclosed subpaths and dash
+     * segments have a square projection.
      */
     public static final int CAP_SQUARE = 2;
 
-    /** 
-     * The Constant JOIN_MITER indicates that path segments are joined by 
+    /**
+     * The Constant JOIN_MITER indicates that path segments are joined by
      * extending their outside edges until they meet.
      */
     public static final int JOIN_MITER = 0;
-    
-    /** 
-     * The Constant JOIN_ROUND indicates that path segments are joined by 
+
+    /**
+     * The Constant JOIN_ROUND indicates that path segments are joined by
      * rounding off the corner at a radius of half the line width.
      */
     public static final int JOIN_ROUND = 1;
-    
-    /** 
-     * The Constant JOIN_BEVEL indicates that path segments are joined by 
-     * connecting the outer corners of their wide outlines with 
-     * a straight segment.
+
+    /**
+     * The Constant JOIN_BEVEL indicates that path segments are joined by
+     * connecting the outer corners of their wide outlines with a straight
+     * segment.
      */
     public static final int JOIN_BEVEL = 2;
-    
-    /** Constants for calculating. */
-    static final int MAX_LEVEL = 20;        // Maximal deepness of curve subdivision
-    
-    /** The Constant CURVE_DELTA. */
-    static final double CURVE_DELTA = 2.0;  // Width tolerance
-    
-    /** The Constant CORNER_ANGLE. */
+
+    /**
+     * Constants for calculating.
+     */
+    static final int MAX_LEVEL = 20; // Maximal deepness of curve subdivision
+
+    /**
+     * The Constant CURVE_DELTA.
+     */
+    static final double CURVE_DELTA = 2.0; // Width tolerance
+
+    /**
+     * The Constant CORNER_ANGLE.
+     */
     static final double CORNER_ANGLE = 4.0; // Minimum corner angle
-    
-    /** The Constant CORNER_ZERO. */
+
+    /**
+     * The Constant CORNER_ZERO.
+     */
     static final double CORNER_ZERO = 0.01; // Zero angle
-    
-    /** The Constant CUBIC_ARC. */
+
+    /**
+     * The Constant CUBIC_ARC.
+     */
     static final double CUBIC_ARC = 4.0 / 3.0 * (Math.sqrt(2.0) - 1);
 
-    /** Stroke width. */
+    /**
+     * Stroke width.
+     */
     float width;
-    
-    /** Stroke cap type. */
+
+    /**
+     * Stroke cap type.
+     */
     int cap;
-    
-    /** Stroke join type. */
+
+    /**
+     * Stroke join type.
+     */
     int join;
-    
-    /** Stroke miter limit. */
+
+    /**
+     * Stroke miter limit.
+     */
     float miterLimit;
-    
-    /** Stroke dashes array. */
+
+    /**
+     * Stroke dashes array.
+     */
     float dash[];
-    
-    /** Stroke dash phase. */
+
+    /**
+     * Stroke dash phase.
+     */
     float dashPhase;
 
-    /** The temporary pre-calculated values. */
+    /**
+     * The temporary pre-calculated values.
+     */
     double curveDelta;
-    
-    /** The corner delta. */
+
+    /**
+     * The corner delta.
+     */
     double cornerDelta;
-    
-    /** The zero delta. */
+
+    /**
+     * The zero delta.
+     */
     double zeroDelta;
 
-    /** The w2. */
+    /**
+     * The w2.
+     */
     double w2;
-    
-    /** The fmy. */
+
+    /**
+     * The fmy.
+     */
     double fmx, fmy;
-    
-    /** The smy. */
+
+    /**
+     * The smy.
+     */
     double scx, scy, smx, smy;
-    
-    /** The cy. */
+
+    /**
+     * The cy.
+     */
     double mx, my, cx, cy;
 
-    /** The temporary indicators. */
+    /**
+     * The temporary indicators.
+     */
     boolean isMove;
-    
-    /** The is first. */
+
+    /**
+     * The is first.
+     */
     boolean isFirst;
-    
-    /** The check move. */
+
+    /**
+     * The check move.
+     */
     boolean checkMove;
-    
-    /** The temporary and destination work paths. */
+
+    /**
+     * The temporary and destination work paths.
+     */
     BufferedPath dst, lp, rp, sp;
-    
-    /** Stroke dasher class. */
+
+    /**
+     * Stroke dasher class.
+     */
     Dasher dasher;
 
     /**
-     * Instantiates a new BasicStroke with default width, cap, join, limit,
-     * dash attributes parameters. The default parameters are a solid line of 
-     * width 1.0, CAP_SQUARE, JOIN_MITER, a miter limit of 10.0, null dash attributes,
+     * Instantiates a new BasicStroke with default width, cap, join, limit, dash
+     * attributes parameters. The default parameters are a solid line of width
+     * 1.0, CAP_SQUARE, JOIN_MITER, a miter limit of 10.0, null dash attributes,
      * and a dash phase of 0.0f.
      */
     public BasicStroke() {
@@ -167,17 +217,24 @@
     }
 
     /**
-     * Instantiates a new BasicStroke with the specified width,  
-     * caps, joins, limit, dash attributes, dash phase parameters.
+     * Instantiates a new BasicStroke with the specified width, caps, joins,
+     * limit, dash attributes, dash phase parameters.
      * 
-     * @param width the width of BasikStroke.
-     * @param cap the end decoration of BasikStroke.
-     * @param join the join segments decoration.
-     * @param miterLimit the limit to trim the miter join.
-     * @param dash the array with the dashing pattern.
-     * @param dashPhase the offset to start the dashing pattern.
+     * @param width
+     *            the width of BasikStroke.
+     * @param cap
+     *            the end decoration of BasikStroke.
+     * @param join
+     *            the join segments decoration.
+     * @param miterLimit
+     *            the limit to trim the miter join.
+     * @param dash
+     *            the array with the dashing pattern.
+     * @param dashPhase
+     *            the offset to start the dashing pattern.
      */
-    public BasicStroke(float width, int cap, int join, float miterLimit, float[] dash, float dashPhase) {
+    public BasicStroke(float width, int cap, int join, float miterLimit, float[] dash,
+            float dashPhase) {
         if (width < 0.0f) {
             // awt.133=Negative width
             throw new IllegalArgumentException(Messages.getString("awt.133")); //$NON-NLS-1$
@@ -204,7 +261,7 @@
                 throw new IllegalArgumentException(Messages.getString("awt.138")); //$NON-NLS-1$
             }
             ZERO: {
-                for(int i = 0; i < dash.length; i++) {
+                for (int i = 0; i < dash.length; i++) {
                     if (dash[i] < 0.0) {
                         // awt.139=Negative dash[{0}]
                         throw new IllegalArgumentException(Messages.getString("awt.139", i)); //$NON-NLS-1$
@@ -226,35 +283,43 @@
     }
 
     /**
-     * Instantiates a new BasicStroke with specified width, cap, join, limit
-     * and default dash attributes parameters. 
+     * Instantiates a new BasicStroke with specified width, cap, join, limit and
+     * default dash attributes parameters.
      * 
-     * @param width the width of BasikStroke.
-     * @param cap the end decoration of BasikStroke.
-     * @param join the join segments decoration.
-     * @param miterLimit the limit to trim the miter join.
+     * @param width
+     *            the width of BasikStroke.
+     * @param cap
+     *            the end decoration of BasikStroke.
+     * @param join
+     *            the join segments decoration.
+     * @param miterLimit
+     *            the limit to trim the miter join.
      */
     public BasicStroke(float width, int cap, int join, float miterLimit) {
         this(width, cap, join, miterLimit, null, 0.0f);
     }
 
     /**
-     * Instantiates a new BasicStroke with specified width, cap, join
-     * and default limit and dash attributes parameters. 
+     * Instantiates a new BasicStroke with specified width, cap, join and
+     * default limit and dash attributes parameters.
      * 
-     * @param width the width of BasikStroke.
-     * @param cap the end decoration of BasikStroke.
-     * @param join the join segments decoration.
+     * @param width
+     *            the width of BasikStroke.
+     * @param cap
+     *            the end decoration of BasikStroke.
+     * @param join
+     *            the join segments decoration.
      */
     public BasicStroke(float width, int cap, int join) {
         this(width, cap, join, 10.0f, null, 0.0f);
     }
 
     /**
-     * Instantiates a new BasicStroke with specified width and default cap, join,
-     * limit, dash attributes parameters.
+     * Instantiates a new BasicStroke with specified width and default cap,
+     * join, limit, dash attributes parameters.
      * 
-     * @param width the width of BasicStroke.
+     * @param width
+     *            the width of BasicStroke.
      */
     public BasicStroke(float width) {
         this(width, CAP_SQUARE, JOIN_MITER, 10.0f, null, 0.0f);
@@ -288,7 +353,8 @@
     }
 
     /**
-     * Gets the miter limit of the BasicStroke (the limit to trim the miter join).
+     * Gets the miter limit of the BasicStroke (the limit to trim the miter
+     * join).
      * 
      * @return the miter limit of the BasicStroke.
      */
@@ -338,10 +404,10 @@
     /**
      * Compares this BasicStroke object with the specified Object.
      * 
-     * @param obj the Object to be compared.
-     * 
-     * @return true, if the Object is a BasicStroke with the same data
-     * values as this BasicStroke; false otherwise. 
+     * @param obj
+     *            the Object to be compared.
+     * @return true, if the Object is a BasicStroke with the same data values as
+     *         this BasicStroke; false otherwise.
      */
     @Override
     public boolean equals(Object obj) {
@@ -350,13 +416,9 @@
         }
         if (obj instanceof BasicStroke) {
             BasicStroke bs = (BasicStroke)obj;
-            return
-                bs.width == width &&
-                bs.cap == cap &&
-                bs.join == join &&
-                bs.miterLimit == miterLimit &&
-                bs.dashPhase == dashPhase &&
-                java.util.Arrays.equals(bs.dash, dash);
+            return bs.width == width && bs.cap == cap && bs.join == join
+                    && bs.miterLimit == miterLimit && bs.dashPhase == dashPhase
+                    && java.util.Arrays.equals(bs.dash, dash);
         }
         return false;
     }
@@ -364,9 +426,9 @@
     /**
      * Calculates allowable curve derivation.
      * 
-     * @param width the width
-     * 
-     * @return the curve delta
+     * @param width
+     *            the width.
+     * @return the curve delta.
      */
     double getCurveDelta(double width) {
         double a = width + CURVE_DELTA;
@@ -378,9 +440,9 @@
     /**
      * Calculates the value to detect a small angle.
      * 
-     * @param width the width
-     * 
-     * @return the corner delta
+     * @param width
+     *            the width.
+     * @return the corner delta.
      */
     double getCornerDelta(double width) {
         return width * width * Math.sin(Math.PI * CORNER_ANGLE / 180.0);
@@ -389,22 +451,21 @@
     /**
      * Calculates value to detect a zero angle.
      * 
-     * @param width the width
-     * 
-     * @return the zero delta
+     * @param width
+     *            the width.
+     * @return the zero delta.
      */
     double getZeroDelta(double width) {
         return width * width * Math.sin(Math.PI * CORNER_ZERO / 180.0);
     }
 
     /**
-     * Creates a Shape from the outline of the specified shape 
-     * drawn with this BasicStroke.
+     * Creates a Shape from the outline of the specified shape drawn with this
+     * BasicStroke.
      * 
-     * @param s the specified Shape to be stroked.
-     * 
+     * @param s
+     *            the specified Shape to be stroked.
      * @return the Shape of the stroked outline.
-     * 
      * @see java.awt.Stroke#createStrokedShape(java.awt.Shape)
      */
     public Shape createStrokedShape(Shape s) {
@@ -429,7 +490,8 @@
     /**
      * Generates a shape with a solid (not dashed) outline.
      * 
-     * @param p - the PathIterator of source shape
+     * @param p
+     *            the PathIterator of source shape.
      */
     void createSolidShape(PathIterator p) {
         double coords[] = new double[6];
@@ -439,36 +501,37 @@
         checkMove = true;
         boolean isClosed = true;
 
-        while(!p.isDone()) {
-            switch(p.currentSegment(coords)) {
-            case PathIterator.SEG_MOVETO:
-                if (!isClosed) {
-                    closeSolidShape();
-                }
-                rp.clean();
-                mx = cx = coords[0];
-                my = cy = coords[1];
-                isMove = true;
-                isClosed = false;
-                break;
-            case PathIterator.SEG_LINETO:
-                addLine(cx, cy, cx = coords[0], cy = coords[1], true);
-                break;
-            case PathIterator.SEG_QUADTO:
-                addQuad(cx, cy, coords[0], coords[1], cx = coords[2], cy = coords[3]);
-                break;
-            case PathIterator.SEG_CUBICTO:
-                addCubic(cx, cy, coords[0], coords[1], coords[2], coords[3], cx = coords[4], cy = coords[5]);
-                break;
-            case PathIterator.SEG_CLOSE:
-                addLine(cx, cy, mx, my, false);
-                addJoin(lp, mx, my, lp.xMove, lp.yMove, true);
-                addJoin(rp, mx, my, rp.xMove, rp.yMove, false);
-                lp.closePath();
-                rp.closePath();
-                lp.appendReverse(rp);
-                isClosed = true;
-                break;
+        while (!p.isDone()) {
+            switch (p.currentSegment(coords)) {
+                case PathIterator.SEG_MOVETO:
+                    if (!isClosed) {
+                        closeSolidShape();
+                    }
+                    rp.clean();
+                    mx = cx = coords[0];
+                    my = cy = coords[1];
+                    isMove = true;
+                    isClosed = false;
+                    break;
+                case PathIterator.SEG_LINETO:
+                    addLine(cx, cy, cx = coords[0], cy = coords[1], true);
+                    break;
+                case PathIterator.SEG_QUADTO:
+                    addQuad(cx, cy, coords[0], coords[1], cx = coords[2], cy = coords[3]);
+                    break;
+                case PathIterator.SEG_CUBICTO:
+                    addCubic(cx, cy, coords[0], coords[1], coords[2], coords[3], cx = coords[4],
+                            cy = coords[5]);
+                    break;
+                case PathIterator.SEG_CLOSE:
+                    addLine(cx, cy, mx, my, false);
+                    addJoin(lp, mx, my, lp.xMove, lp.yMove, true);
+                    addJoin(rp, mx, my, rp.xMove, rp.yMove, false);
+                    lp.closePath();
+                    rp.closePath();
+                    lp.appendReverse(rp);
+                    isClosed = true;
+                    break;
             }
             p.next();
         }
@@ -492,7 +555,8 @@
     /**
      * Generates dashed stroked shape.
      * 
-     * @param p - the PathIterator of source shape
+     * @param p
+     *            the PathIterator of source shape.
      */
     void createDashedShape(PathIterator p) {
         double coords[] = new double[6];
@@ -502,52 +566,53 @@
         checkMove = false;
         boolean isClosed = true;
 
-        while(!p.isDone()) {
-            switch(p.currentSegment(coords)) {
-            case PathIterator.SEG_MOVETO:
+        while (!p.isDone()) {
+            switch (p.currentSegment(coords)) {
+                case PathIterator.SEG_MOVETO:
 
-                if (!isClosed) {
-                    closeDashedShape();
-                }
+                    if (!isClosed) {
+                        closeDashedShape();
+                    }
 
-                dasher = new Dasher(dash, dashPhase);
-                lp.clean();
-                rp.clean();
-                sp = null;
-                isFirst = true;
-                isMove = true;
-                isClosed = false;
-                mx = cx = coords[0];
-                my = cy = coords[1];
-                break;
-            case PathIterator.SEG_LINETO:
-                addDashLine(cx, cy, cx = coords[0], cy = coords[1]);
-                break;
-            case PathIterator.SEG_QUADTO:
-                addDashQuad(cx, cy, coords[0], coords[1], cx = coords[2], cy = coords[3]);
-                break;
-            case PathIterator.SEG_CUBICTO:
-                addDashCubic(cx, cy, coords[0], coords[1], coords[2], coords[3], cx = coords[4], cy = coords[5]);
-                break;
-            case PathIterator.SEG_CLOSE:
-                addDashLine(cx, cy, cx = mx, cy = my);
-
-                if (dasher.isConnected()) {
-                    // Connect current and head segments
-                    addJoin(lp, fmx, fmy, sp.xMove, sp.yMove, true);
-                    lp.join(sp);
-                    addJoin(lp, fmx, fmy, rp.xLast, rp.yLast, true);
-                    lp.combine(rp);
-                    addCap(lp, smx, smy, lp.xMove, lp.yMove);
-                    lp.closePath();
-                    dst.append(lp);
+                    dasher = new Dasher(dash, dashPhase);
+                    lp.clean();
+                    rp.clean();
                     sp = null;
-                } else {
-                    closeDashedShape();
-                }
+                    isFirst = true;
+                    isMove = true;
+                    isClosed = false;
+                    mx = cx = coords[0];
+                    my = cy = coords[1];
+                    break;
+                case PathIterator.SEG_LINETO:
+                    addDashLine(cx, cy, cx = coords[0], cy = coords[1]);
+                    break;
+                case PathIterator.SEG_QUADTO:
+                    addDashQuad(cx, cy, coords[0], coords[1], cx = coords[2], cy = coords[3]);
+                    break;
+                case PathIterator.SEG_CUBICTO:
+                    addDashCubic(cx, cy, coords[0], coords[1], coords[2], coords[3],
+                            cx = coords[4], cy = coords[5]);
+                    break;
+                case PathIterator.SEG_CLOSE:
+                    addDashLine(cx, cy, cx = mx, cy = my);
 
-                isClosed = true;
-                break;
+                    if (dasher.isConnected()) {
+                        // Connect current and head segments
+                        addJoin(lp, fmx, fmy, sp.xMove, sp.yMove, true);
+                        lp.join(sp);
+                        addJoin(lp, fmx, fmy, rp.xLast, rp.yLast, true);
+                        lp.combine(rp);
+                        addCap(lp, smx, smy, lp.xMove, lp.yMove);
+                        lp.closePath();
+                        dst.append(lp);
+                        sp = null;
+                    } else {
+                        closeDashedShape();
+                    }
+
+                    isClosed = true;
+                    break;
             }
             p.next();
         }
@@ -583,11 +648,16 @@
     /**
      * Adds cap to the work path.
      * 
-     * @param p - the BufferedPath object of work path
-     * @param x0 - the x coordinate of the source path
-     * @param y0 - the y coordinate on the source path
-     * @param x2 - the x coordinate of the next point on the work path
-     * @param y2 - the y coordinate of the next point on the work path
+     * @param p
+     *            the BufferedPath object of work path.
+     * @param x0
+     *            the x coordinate of the source path.
+     * @param y0
+     *            the y coordinate on the source path.
+     * @param x2
+     *            the x coordinate of the next point on the work path.
+     * @param y2
+     *            the y coordinate of the next point on the work path.
      */
     void addCap(BufferedPath p, double x0, double y0, double x2, double y2) {
         double x1 = p.xLast;
@@ -597,42 +667,49 @@
         double x20 = x2 - x0;
         double y20 = y2 - y0;
 
-        switch(cap) {
-        case CAP_BUTT:
-            p.lineTo(x2, y2);
-            break;
-        case CAP_ROUND:
-            double mx = x10 * CUBIC_ARC;
-            double my = y10 * CUBIC_ARC;
+        switch (cap) {
+            case CAP_BUTT:
+                p.lineTo(x2, y2);
+                break;
+            case CAP_ROUND:
+                double mx = x10 * CUBIC_ARC;
+                double my = y10 * CUBIC_ARC;
 
-            double x3 = x0 + y10;
-            double y3 = y0 - x10;
+                double x3 = x0 + y10;
+                double y3 = y0 - x10;
 
-            x10 *= CUBIC_ARC;
-            y10 *= CUBIC_ARC;
-            x20 *= CUBIC_ARC;
-            y20 *= CUBIC_ARC;
+                x10 *= CUBIC_ARC;
+                y10 *= CUBIC_ARC;
+                x20 *= CUBIC_ARC;
+                y20 *= CUBIC_ARC;
 
-            p.cubicTo(x1 + y10, y1 - x10, x3 + mx, y3 + my, x3, y3);
-            p.cubicTo(x3 - mx, y3 - my, x2 - y20, y2 + x20, x2, y2);
-            break;
-        case CAP_SQUARE:
-            p.lineTo(x1 + y10, y1 - x10);
-            p.lineTo(x2 - y20, y2 + x20);
-            p.lineTo(x2, y2);
-            break;
+                p.cubicTo(x1 + y10, y1 - x10, x3 + mx, y3 + my, x3, y3);
+                p.cubicTo(x3 - mx, y3 - my, x2 - y20, y2 + x20, x2, y2);
+                break;
+            case CAP_SQUARE:
+                p.lineTo(x1 + y10, y1 - x10);
+                p.lineTo(x2 - y20, y2 + x20);
+                p.lineTo(x2, y2);
+                break;
         }
     }
 
     /**
      * Adds bevel and miter join to the work path.
      * 
-     * @param p - the BufferedPath object of work path
-     * @param x0 - the x coordinate of the source path
-     * @param y0 - the y coordinate on the source path
-     * @param x2 - the x coordinate of the next point on the work path
-     * @param y2 - the y coordinate of the next point on the work path
-     * @param isLeft - the orientation of work path, true if work path lies to the left from source path, false otherwise
+     * @param p
+     *            the BufferedPath object of work path.
+     * @param x0
+     *            the x coordinate of the source path.
+     * @param y0
+     *            the y coordinate on the source path.
+     * @param x2
+     *            the x coordinate of the next point on the work path.
+     * @param y2
+     *            the y coordinate of the next point on the work path.
+     * @param isLeft
+     *            the orientation of work path, true if work path lies to the
+     *            left from source path, false otherwise.
      */
     void addJoin(BufferedPath p, double x0, double y0, double x2, double y2, boolean isLeft) {
         double x1 = p.xLast;
@@ -667,26 +744,26 @@
             p.lineTo(x0, y0);
             p.lineTo(x2, y2);
         } else {
-            switch(join) {
-            case JOIN_BEVEL:
-                p.lineTo(x2, y2);
-                break;
-            case JOIN_MITER:
-                double s1 = x1 * x10 + y1 * y10;
-                double s2 = x2 * x20 + y2 * y20;
-                double x3 = (s1 * y20 - s2 * y10) / sin0;
-                double y3 = (s2 * x10 - s1 * x20) / sin0;
-                double x30 = x3 - x0;
-                double y30 = y3 - y0;
-                double miterLength = Math.sqrt(x30 * x30 + y30 * y30);
-                if (miterLength < miterLimit * w2) {
-                    p.lineTo(x3, y3);
-                }
-                p.lineTo(x2, y2);
-                break;
-            case JOIN_ROUND:
-                addRoundJoin(p, x0, y0, x2, y2, isLeft);
-                break;
+            switch (join) {
+                case JOIN_BEVEL:
+                    p.lineTo(x2, y2);
+                    break;
+                case JOIN_MITER:
+                    double s1 = x1 * x10 + y1 * y10;
+                    double s2 = x2 * x20 + y2 * y20;
+                    double x3 = (s1 * y20 - s2 * y10) / sin0;
+                    double y3 = (s2 * x10 - s1 * x20) / sin0;
+                    double x30 = x3 - x0;
+                    double y30 = y3 - y0;
+                    double miterLength = Math.sqrt(x30 * x30 + y30 * y30);
+                    if (miterLength < miterLimit * w2) {
+                        p.lineTo(x3, y3);
+                    }
+                    p.lineTo(x2, y2);
+                    break;
+                case JOIN_ROUND:
+                    addRoundJoin(p, x0, y0, x2, y2, isLeft);
+                    break;
             }
         }
     }
@@ -694,12 +771,19 @@
     /**
      * Adds round join to the work path.
      * 
-     * @param p - the BufferedPath object of work path
-     * @param x0 - the x coordinate of the source path
-     * @param y0 - the y coordinate on the source path
-     * @param x2 - the x coordinate of the next point on the work path
-     * @param y2 - the y coordinate of the next point on the work path
-     * @param isLeft - the orientation of work path, true if work path lies to the left from source path, false otherwise
+     * @param p
+     *            the BufferedPath object of work path.
+     * @param x0
+     *            the x coordinate of the source path.
+     * @param y0
+     *            the y coordinate on the source path.
+     * @param x2
+     *            the x coordinate of the next point on the work path.
+     * @param y2
+     *            the y coordinate of the next point on the work path.
+     * @param isLeft
+     *            the orientation of work path, true if work path lies to the
+     *            left from source path, false otherwise.
      */
     void addRoundJoin(BufferedPath p, double x0, double y0, double x2, double y2, boolean isLeft) {
         double x1 = p.xLast;
@@ -763,11 +847,16 @@
     /**
      * Adds solid line segment to the work path.
      * 
-     * @param x1 - the x coordinate of the start line point
-     * @param y1 - the y coordinate of the start line point
-     * @param x2 - the x coordinate of the end line point
-     * @param y2 - the y coordinate of the end line point
-     * @param zero - if true it's allowable to add zero length line segment
+     * @param x1
+     *            the x coordinate of the start line point.
+     * @param y1
+     *            the y coordinate of the start line point.
+     * @param x2
+     *            the x coordinate of the end line point.
+     * @param y2
+     *            the y coordinate of the end line point.
+     * @param zero
+     *            if true it's allowable to add zero length line segment.
      */
     void addLine(double x1, double y1, double x2, double y2, boolean zero) {
         double dx = x2 - x1;
@@ -808,12 +897,18 @@
     /**
      * Adds solid quad segment to the work path.
      * 
-     * @param x1 - the x coordinate of the first control point
-     * @param y1 - the y coordinate of the first control point
-     * @param x2 - the x coordinate of the second control point
-     * @param y2 - the y coordinate of the second control point
-     * @param x3 - the x coordinate of the third control point
-     * @param y3 - the y coordinate of the third control point
+     * @param x1
+     *            the x coordinate of the first control point.
+     * @param y1
+     *            the y coordinate of the first control point.
+     * @param x2
+     *            the x coordinate of the second control point.
+     * @param y2
+     *            the y coordinate of the second control point.
+     * @param x3
+     *            the x coordinate of the third control point.
+     * @param y3
+     *            the y coordinate of the third control point.
      */
     void addQuad(double x1, double y1, double x2, double y2, double x3, double y3) {
         double x21 = x2 - x1;
@@ -841,11 +936,11 @@
 
         double w;
         w = w2 / l21;
-        double mx1 = - y21 * w;
-        double my1 =   x21 * w;
+        double mx1 = -y21 * w;
+        double my1 = x21 * w;
         w = w2 / l23;
-        double mx3 =   y23 * w;
-        double my3 = - x23 * w;
+        double mx3 = y23 * w;
+        double my3 = -x23 * w;
 
         double lx1 = x1 + mx1;
         double ly1 = y1 + my1;
@@ -903,15 +998,23 @@
     }
 
     /**
-     * Subdivides solid quad curve to make outline for source quad segment and adds it to work path.
+     * Subdivides solid quad curve to make outline for source quad segment and
+     * adds it to work path.
      * 
-     * @param x1 - the x coordinate of the first control point
-     * @param y1 - the y coordinate of the first control point
-     * @param x2 - the x coordinate of the second control point
-     * @param y2 - the y coordinate of the second control point
-     * @param x3 - the x coordinate of the third control point
-     * @param y3 - the y coordinate of the third control point
-     * @param level - the maximum level of subdivision deepness
+     * @param x1
+     *            the x coordinate of the first control point.
+     * @param y1
+     *            the y coordinate of the first control point.
+     * @param x2
+     *            the x coordinate of the second control point.
+     * @param y2
+     *            the y coordinate of the second control point.
+     * @param x3
+     *            the x coordinate of the third control point.
+     * @param y3
+     *            the y coordinate of the third control point.
+     * @param level
+     *            the maximum level of subdivision deepness.
      */
     void addSubQuad(double x1, double y1, double x2, double y2, double x3, double y3, int level) {
         double x21 = x2 - x1;
@@ -939,8 +1042,8 @@
             double mx2 = (x21 * l23 + x23 * l21) * w;
             double my2 = (y21 * l23 + y23 * l21) * w;
             w = w2 / l23;
-            double mx3 =   y23 * w;
-            double my3 = - x23 * w;
+            double mx3 = y23 * w;
+            double my3 = -x23 * w;
             lp.quadTo(x2 + mx2, y2 + my2, x3 + mx3, y3 + my3);
             rp.quadTo(x2 - mx2, y2 - my2, x3 - mx3, y3 - my3);
         }
@@ -949,16 +1052,25 @@
     /**
      * Adds solid cubic segment to the work path.
      * 
-     * @param x1 - the x coordinate of the first control point
-     * @param y1 - the y coordinate of the first control point
-     * @param x2 - the x coordinate of the second control point
-     * @param y2 - the y coordinate of the second control point
-     * @param x3 - the x coordinate of the third control point
-     * @param y3 - the y coordinate of the third control point
-     * @param x4 - the x coordinate of the fours control point
-     * @param y4 - the y coordinate of the fours control point
+     * @param x1
+     *            the x coordinate of the first control point.
+     * @param y1
+     *            the y coordinate of the first control point.
+     * @param x2
+     *            the x coordinate of the second control point.
+     * @param y2
+     *            the y coordinate of the second control point.
+     * @param x3
+     *            the x coordinate of the third control point.
+     * @param y3
+     *            the y coordinate of the third control point.
+     * @param x4
+     *            the x coordinate of the fours control point.
+     * @param y4
+     *            the y coordinate of the fours control point.
      */
-    void addCubic(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4) {
+    void addCubic(double x1, double y1, double x2, double y2, double x3, double y3, double x4,
+            double y4) {
         double x12 = x1 - x2;
         double y12 = y1 - y2;
         double x23 = x2 - x3;
@@ -997,35 +1109,32 @@
 
         if (l12 == 0.0) {
             w = w2 / l23;
-            mx1 =   y23 * w;
-            my1 = - x23 * w;
+            mx1 = y23 * w;
+            my1 = -x23 * w;
             w = w2 / l34;
-            mx4 =   y34 * w;
-            my4 = - x34 * w;
-            onLine = - x23 * y34 + y23 * x34 == 0.0; // sin3
-        } else
-        if (l34 == 0.0) {
+            mx4 = y34 * w;
+            my4 = -x34 * w;
+            onLine = -x23 * y34 + y23 * x34 == 0.0; // sin3
+        } else if (l34 == 0.0) {
             w = w2 / l12;
-            mx1 =   y12 * w;
-            my1 = - x12 * w;
+            mx1 = y12 * w;
+            my1 = -x12 * w;
             w = w2 / l23;
-            mx4 =   y23 * w;
-            my4 = - x23 * w;
-            onLine = - x12 * y23 + y12 * x23 == 0.0; // sin2
+            mx4 = y23 * w;
+            my4 = -x23 * w;
+            onLine = -x12 * y23 + y12 * x23 == 0.0; // sin2
         } else {
             w = w2 / l12;
-            mx1 =   y12 * w;
-            my1 = - x12 * w;
+            mx1 = y12 * w;
+            my1 = -x12 * w;
             w = w2 / l34;
-            mx4 =   y34 * w;
-            my4 = - x34 * w;
+            mx4 = y34 * w;
+            my4 = -x34 * w;
             if (l23 == 0.0) {
-                onLine = - x12 * y34 + y12 * x34 == 0.0;
+                onLine = -x12 * y34 + y12 * x34 == 0.0;
             } else {
-                onLine =
-                    - x12 * y34 + y12 * x34 == 0.0 &&
-                    - x12 * y23 + y12 * x23 == 0.0 && // sin2
-                    - x23 * y34 + y23 * x34 == 0.0;   // sin3
+                onLine = -x12 * y34 + y12 * x34 == 0.0 && -x12 * y23 + y12 * x23 == 0.0 && // sin2
+                        -x23 * y34 + y23 * x34 == 0.0; // sin3
             }
         }
 
@@ -1063,8 +1172,7 @@
                 if (0.0 < t && t < 1.0) {
                     roots[rc++] = t;
                 }
-            } else
-            if (d > 0.0) {
+            } else if (d > 0.0) {
                 d = Math.sqrt(d);
                 double z = l12 + l34 - l23 - l23;
                 double t;
@@ -1087,15 +1195,15 @@
                 }
                 roots[rc++] = 1.0;
 
-                double ax = - x34 - x12 + x23 + x23;
-                double ay = - y34 - y12 + y23 + y23;
-                double bx = 3.0 * (- x23 + x12);
-                double by = 3.0 * (- y23 + y12);
-                double cx = 3.0 * (- x12);
-                double cy = 3.0 * (- y12);
+                double ax = -x34 - x12 + x23 + x23;
+                double ay = -y34 - y12 + y23 + y23;
+                double bx = 3.0 * (-x23 + x12);
+                double by = 3.0 * (-y23 + y12);
+                double cx = 3.0 * (-x12);
+                double cy = 3.0 * (-y12);
                 double xPrev = x1;
                 double yPrev = y1;
-                for(int i = 0; i < rc; i++) {
+                for (int i = 0; i < rc; i++) {
                     double t = roots[i];
                     double px = t * (t * (t * ax + bx) + cx) + x1;
                     double py = t * (t * (t * ay + by) + cy) + y1;
@@ -1109,8 +1217,8 @@
                     }
                     xPrev = px;
                     yPrev = py;
-                    mx1 = - mx1;
-                    my1 = - my1;
+                    mx1 = -mx1;
+                    my1 = -my1;
                 }
             } else {
                 lp.cubicTo(x2 + mx1, y2 + my1, x3 + mx4, y3 + my4, x4 + mx4, y4 + my4);
@@ -1122,19 +1230,30 @@
     }
 
     /**
-     * Subdivides solid cubic curve to make outline for source quad segment and adds it to work path.
+     * Subdivides solid cubic curve to make outline for source quad segment and
+     * adds it to work path.
      * 
-     * @param x1 - the x coordinate of the first control point
-     * @param y1 - the y coordinate of the first control point
-     * @param x2 - the x coordinate of the second control point
-     * @param y2 - the y coordinate of the second control point
-     * @param x3 - the x coordinate of the third control point
-     * @param y3 - the y coordinate of the third control point
-     * @param x4 - the x coordinate of the fours control point
-     * @param y4 - the y coordinate of the fours control point
-     * @param level - the maximum level of subdivision deepness
+     * @param x1
+     *            the x coordinate of the first control point.
+     * @param y1
+     *            the y coordinate of the first control point.
+     * @param x2
+     *            the x coordinate of the second control point.
+     * @param y2
+     *            the y coordinate of the second control point.
+     * @param x3
+     *            the x coordinate of the third control point.
+     * @param y3
+     *            the y coordinate of the third control point.
+     * @param x4
+     *            the x coordinate of the fours control point.
+     * @param y4
+     *            the y coordinate of the fours control point.
+     * @param level
+     *            the maximum level of subdivision deepness.
      */
-    void addSubCubic(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, int level) {
+    void addSubCubic(double x1, double y1, double x2, double y2, double x3, double y3, double x4,
+            double y4, int level) {
         double x12 = x1 - x2;
         double y12 = y1 - y2;
         double x23 = x2 - x3;
@@ -1142,19 +1261,18 @@
         double x34 = x3 - x4;
         double y34 = y3 - y4;
 
-        double cos2 = - x12 * x23 - y12 * y23;
-        double cos3 = - x23 * x34 - y23 * y34;
-        double sin2 = - x12 * y23 + y12 * x23;
-        double sin3 = - x23 * y34 + y23 * x34;
-        double sin0 = - x12 * y34 + y12 * x34;
-        double cos0 = - x12 * x34 - y12 * y34;
+        double cos2 = -x12 * x23 - y12 * y23;
+        double cos3 = -x23 * x34 - y23 * y34;
+        double sin2 = -x12 * y23 + y12 * x23;
+        double sin3 = -x23 * y34 + y23 * x34;
+        double sin0 = -x12 * y34 + y12 * x34;
+        double cos0 = -x12 * x34 - y12 * y34;
 
-        if (level < MAX_LEVEL && (sin2 != 0.0 || sin3 != 0.0 || sin0 != 0.0) &&
-            (cos2 >= 0.0 || cos3 >= 0.0 || cos0 >= 0.0 ||
-            (Math.abs(sin2 / cos2) > curveDelta) ||
-            (Math.abs(sin3 / cos3) > curveDelta) ||
-            (Math.abs(sin0 / cos0) > curveDelta)))
-        {
+        if (level < MAX_LEVEL
+                && (sin2 != 0.0 || sin3 != 0.0 || sin0 != 0.0)
+                && (cos2 >= 0.0 || cos3 >= 0.0 || cos0 >= 0.0
+                        || (Math.abs(sin2 / cos2) > curveDelta)
+                        || (Math.abs(sin3 / cos3) > curveDelta) || (Math.abs(sin0 / cos0) > curveDelta))) {
             double cx = (x2 + x3) / 2.0;
             double cy = (y2 + y3) / 2.0;
             double lx2 = (x2 + x1) / 2.0;
@@ -1177,27 +1295,26 @@
 
             if (l12 == 0.0) {
                 w = w2 / l23;
-                mx1 =   y23 * w;
-                my1 = - x23 * w;
+                mx1 = y23 * w;
+                my1 = -x23 * w;
                 w = w2 / l34;
-                mx4 =   y34 * w;
-                my4 = - x34 * w;
-            } else
-            if (l34 == 0.0) {
+                mx4 = y34 * w;
+                my4 = -x34 * w;
+            } else if (l34 == 0.0) {
                 w = w2 / l12;
-                mx1 =   y12 * w;
-                my1 = - x12 * w;
+                mx1 = y12 * w;
+                my1 = -x12 * w;
                 w = w2 / l23;
-                mx4 =   y23 * w;
-                my4 = - x23 * w;
+                mx4 = y23 * w;
+                my4 = -x23 * w;
             } else {
                 // Common case
                 w = w2 / l12;
-                mx1 =   y12 * w;
-                my1 = - x12 * w;
+                mx1 = y12 * w;
+                my1 = -x12 * w;
                 w = w2 / l34;
-                mx4 =   y34 * w;
-                my4 = - x34 * w;
+                mx4 = y34 * w;
+                my4 = -x34 * w;
             }
 
             if (sin2 == 0.0) {
@@ -1225,10 +1342,14 @@
     /**
      * Adds dashed line segment to the work path.
      * 
-     * @param x1 - the x coordinate of the start line point
-     * @param y1 - the y coordinate of the start line point
-     * @param x2 - the x coordinate of the end line point
-     * @param y2 - the y coordinate of the end line point
+     * @param x1
+     *            the x coordinate of the start line point.
+     * @param y1
+     *            the y coordinate of the start line point.
+     * @param x2
+     *            the x coordinate of the end line point.
+     * @param y2
+     *            the y coordinate of the end line point.
      */
     void addDashLine(double x1, double y1, double x2, double y2) {
         double x21 = x2 - x1;
@@ -1243,12 +1364,12 @@
         double px1, py1;
         px1 = py1 = 0.0;
         double w = w2 / l21;
-        double mx = - y21 * w;
-        double my =   x21 * w;
+        double mx = -y21 * w;
+        double my = x21 * w;
 
         dasher.init(new DashIterator.Line(l21));
 
-        while(!dasher.eof()) {
+        while (!dasher.eof()) {
             double t = dasher.getValue();
             scx = x1 + t * x21;
             scy = y1 + t * y21;
@@ -1271,28 +1392,27 @@
                     addJoin(lp, x1, y1, lx1, ly1, true);
                     addJoin(rp, x1, y1, rx1, ry1, false);
                 }
-            } else
-                if (dasher.isContinue()) {
-                    double px2 = scx;
-                    double py2 = scy;
-                    lp.lineTo(px2 + mx, py2 + my);
-                    rp.lineTo(px2 - mx, py2 - my);
-                    if (dasher.close) {
-                        addCap(lp, px2, py2, rp.xLast, rp.yLast);
-                        lp.combine(rp);
-                        if (isFirst) {
-                            isFirst = false;
-                            fmx = smx;
-                            fmy = smy;
-                            sp = lp;
-                            lp = new BufferedPath();
-                        } else {
-                            addCap(lp, smx, smy, lp.xMove, lp.yMove);
-                            lp.closePath();
-                        }
-                        isMove = true;
+            } else if (dasher.isContinue()) {
+                double px2 = scx;
+                double py2 = scy;
+                lp.lineTo(px2 + mx, py2 + my);
+                rp.lineTo(px2 - mx, py2 - my);
+                if (dasher.close) {
+                    addCap(lp, px2, py2, rp.xLast, rp.yLast);
+                    lp.combine(rp);
+                    if (isFirst) {
+                        isFirst = false;
+                        fmx = smx;
+                        fmy = smy;
+                        sp = lp;
+                        lp = new BufferedPath();
+                    } else {
+                        addCap(lp, smx, smy, lp.xMove, lp.yMove);
+                        lp.closePath();
                     }
+                    isMove = true;
                 }
+            }
 
             dasher.next();
         }
@@ -1301,12 +1421,18 @@
     /**
      * Adds dashed quad segment to the work path.
      * 
-     * @param x1 - the x coordinate of the first control point
-     * @param y1 - the y coordinate of the first control point
-     * @param x2 - the x coordinate of the second control point
-     * @param y2 - the y coordinate of the second control point
-     * @param x3 - the x coordinate of the third control point
-     * @param y3 - the y coordinate of the third control point
+     * @param x1
+     *            the x coordinate of the first control point.
+     * @param y1
+     *            the y coordinate of the first control point.
+     * @param x2
+     *            the x coordinate of the second control point.
+     * @param y2
+     *            the y coordinate of the second control point.
+     * @param x3
+     *            the x coordinate of the third control point.
+     * @param y3
+     *            the y coordinate of the third control point.
      */
     void addDashQuad(double x1, double y1, double x2, double y2, double x3, double y3) {
 
@@ -1345,7 +1471,7 @@
 
         dasher.init(new DashIterator.Quad(x1, y1, x2, y2, x3, y3));
 
-        while(!dasher.eof()) {
+        while (!dasher.eof()) {
             double t = dasher.getValue();
             double dx = t * ax + bx;
             double dy = t * ay + by;
@@ -1357,8 +1483,8 @@
                 dx1 = dx;
                 dy1 = dy;
                 double w = w2 / Math.sqrt(dx1 * dx1 + dy1 * dy1);
-                double mx1 = - dy1 * w;
-                double my1 =   dx1 * w;
+                double mx1 = -dy1 * w;
+                double my1 = dx1 * w;
                 double lx1 = px1 + mx1;
                 double ly1 = py1 + my1;
                 double rx1 = px1 - mx1;
@@ -1374,33 +1500,32 @@
                     addJoin(lp, x1, y1, lx1, ly1, true);
                     addJoin(rp, x1, y1, rx1, ry1, false);
                 }
-            } else 
-                if (dasher.isContinue()) {
-                    double px3 = scx;
-                    double py3 = scy;
-                    double sx = x2 - x23 * prev;
-                    double sy = y2 - y23 * prev;
-                    double t2 = (t - prev) / (1 - prev);
-                    double px2 = px1 + (sx - px1) * t2;
-                    double py2 = py1 + (sy - py1) * t2;
+            } else if (dasher.isContinue()) {
+                double px3 = scx;
+                double py3 = scy;
+                double sx = x2 - x23 * prev;
+                double sy = y2 - y23 * prev;
+                double t2 = (t - prev) / (1 - prev);
+                double px2 = px1 + (sx - px1) * t2;
+                double py2 = py1 + (sy - py1) * t2;
 
-                    addQuad(px1, py1, px2, py2, px3, py3);
-                    if (dasher.isClosed()) {
-                        addCap(lp, px3, py3, rp.xLast, rp.yLast);
-                        lp.combine(rp);
-                        if (isFirst) {
-                            isFirst = false;
-                            fmx = smx;
-                            fmy = smy;
-                            sp = lp;
-                            lp = new BufferedPath();
-                        } else {
-                            addCap(lp, smx, smy, lp.xMove, lp.yMove);
-                            lp.closePath();
-                        }
-                        isMove = true;
+                addQuad(px1, py1, px2, py2, px3, py3);
+                if (dasher.isClosed()) {
+                    addCap(lp, px3, py3, rp.xLast, rp.yLast);
+                    lp.combine(rp);
+                    if (isFirst) {
+                        isFirst = false;
+                        fmx = smx;
+                        fmy = smy;
+                        sp = lp;
+                        lp = new BufferedPath();
+                    } else {
+                        addCap(lp, smx, smy, lp.xMove, lp.yMove);
+                        lp.closePath();
                     }
+                    isMove = true;
                 }
+            }
 
             prev = t;
             dasher.next();
@@ -1410,16 +1535,25 @@
     /**
      * Adds dashed cubic segment to the work path.
      * 
-     * @param x1 - the x coordinate of the first control point
-     * @param y1 - the y coordinate of the first control point
-     * @param x2 - the x coordinate of the second control point
-     * @param y2 - the y coordinate of the second control point
-     * @param x3 - the x coordinate of the third control point
-     * @param y3 - the y coordinate of the third control point
-     * @param x4 - the x coordinate of the fours control point
-     * @param y4 - the y coordinate of the fours control point
+     * @param x1
+     *            the x coordinate of the first control point.
+     * @param y1
+     *            the y coordinate of the first control point.
+     * @param x2
+     *            the x coordinate of the second control point.
+     * @param y2
+     *            the y coordinate of the second control point.
+     * @param x3
+     *            the x coordinate of the third control point.
+     * @param y3
+     *            the y coordinate of the third control point.
+     * @param x4
+     *            the x coordinate of the fours control point.
+     * @param y4
+     *            the y coordinate of the fours control point.
      */
-    void addDashCubic(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4) {
+    void addDashCubic(double x1, double y1, double x2, double y2, double x3, double y3, double x4,
+            double y4) {
 
         double x12 = x1 - x2;
         double y12 = y1 - y2;
@@ -1469,7 +1603,7 @@
 
         dasher.init(new DashIterator.Cubic(x1, y1, x2, y2, x3, y3, x4, y4));
 
-        while(!dasher.eof()) {
+        while (!dasher.eof()) {
 
             double t = dasher.getValue();
             scx = t * (t * (t * ax + bx) + cx) + dx;
@@ -1480,8 +1614,8 @@
                 double dx1 = t * (t * (ax + ax + ax) + bx + bx) + cx;
                 double dy1 = t * (t * (ay + ay + ay) + by + by) + cy;
                 double w = w2 / Math.sqrt(dx1 * dx1 + dy1 * dy1);
-                double mx1 = - dy1 * w;
-                double my1 =   dx1 * w;
+                double mx1 = -dy1 * w;
+                double my1 = dx1 * w;
                 double lx1 = px1 + mx1;
                 double ly1 = py1 + my1;
                 double rx1 = px1 - mx1;
@@ -1497,42 +1631,41 @@
                     addJoin(lp, x1, y1, lx1, ly1, true);
                     addJoin(rp, x1, y1, rx1, ry1, false);
                 }
-            } else 
-                if (dasher.isContinue()) {
-                    double sx1 = x2 - x23 * prev;
-                    double sy1 = y2 - y23 * prev;
-                    double sx2 = x3 - x34 * prev;
-                    double sy2 = y3 - y34 * prev;
-                    double sx3 = sx1 + (sx2 - sx1) * prev;
-                    double sy3 = sy1 + (sy2 - sy1) * prev;
-                    double t2 = (t - prev) / (1 - prev);
-                    double sx4 = sx3 + (sx2 - sx3) * t2;
-                    double sy4 = sy3 + (sy2 - sy3) * t2;
+            } else if (dasher.isContinue()) {
+                double sx1 = x2 - x23 * prev;
+                double sy1 = y2 - y23 * prev;
+                double sx2 = x3 - x34 * prev;
+                double sy2 = y3 - y34 * prev;
+                double sx3 = sx1 + (sx2 - sx1) * prev;
+                double sy3 = sy1 + (sy2 - sy1) * prev;
+                double t2 = (t - prev) / (1 - prev);
+                double sx4 = sx3 + (sx2 - sx3) * t2;
+                double sy4 = sy3 + (sy2 - sy3) * t2;
 
-                    double px4 = scx;
-                    double py4 = scy;
-                    double px2 = px1 + (sx3 - px1) * t2;
-                    double py2 = py1 + (sy3 - py1) * t2;
-                    double px3 = px2 + (sx4 - px2) * t2;
-                    double py3 = py2 + (sy4 - py2) * t2;
+                double px4 = scx;
+                double py4 = scy;
+                double px2 = px1 + (sx3 - px1) * t2;
+                double py2 = py1 + (sy3 - py1) * t2;
+                double px3 = px2 + (sx4 - px2) * t2;
+                double py3 = py2 + (sy4 - py2) * t2;
 
-                    addCubic(px1, py1, px2, py2, px3, py3, px4, py4);
-                    if (dasher.isClosed()) {
-                        addCap(lp, px4, py4, rp.xLast, rp.yLast);
-                        lp.combine(rp);
-                        if (isFirst) {
-                            isFirst = false;
-                            fmx = smx;
-                            fmy = smy;
-                            sp = lp;
-                            lp = new BufferedPath();
-                        } else {
-                            addCap(lp, smx, smy, lp.xMove, lp.yMove);
-                            lp.closePath();
-                        }
-                        isMove = true;
+                addCubic(px1, py1, px2, py2, px3, py3, px4, py4);
+                if (dasher.isClosed()) {
+                    addCap(lp, px4, py4, rp.xLast, rp.yLast);
+                    lp.combine(rp);
+                    if (isFirst) {
+                        isFirst = false;
+                        fmx = smx;
+                        fmy = smy;
+                        sp = lp;
+                        lp = new BufferedPath();
+                    } else {
+                        addCap(lp, smx, smy, lp.xMove, lp.yMove);
+                        lp.closePath();
                     }
+                    isMove = true;
                 }
+            }
 
             prev = t;
             dasher.next();
@@ -1543,30 +1676,44 @@
      * Dasher class provides dashing for particular dash style.
      */
     class Dasher {
-        
-        /** The pos. */
+
+        /**
+         * The pos.
+         */
         double pos;
-        
-        /** The first. */
+
+        /**
+         * The first.
+         */
         boolean close, visible, first;
-        
-        /** The dash. */
+
+        /**
+         * The dash.
+         */
         float dash[];
-        
-        /** The phase. */
+
+        /**
+         * The phase.
+         */
         float phase;
-        
-        /** The index. */
+
+        /**
+         * The index.
+         */
         int index;
-        
-        /** The iter. */
+
+        /**
+         * The iter.
+         */
         DashIterator iter;
-        
+
         /**
          * Instantiates a new dasher.
          * 
-         * @param dash the dash
-         * @param phase the phase
+         * @param dash
+         *            the dash.
+         * @param phase
+         *            the phase.
          */
         Dasher(float dash[], float phase) {
             this.dash = dash;
@@ -1578,52 +1725,53 @@
                 visible = !visible;
                 pos -= dash[index];
                 index = (index + 1) % dash.length;
-            }            
+            }
             pos = -pos;
             first = visible;
         }
-        
+
         /**
          * Inits the.
          * 
-         * @param iter the iter
+         * @param iter
+         *            the iter.
          */
         void init(DashIterator iter) {
             this.iter = iter;
             close = true;
         }
-        
+
         /**
          * Checks if is open.
          * 
-         * @return true, if is open
+         * @return true, if is open.
          */
         boolean isOpen() {
             return visible && pos < iter.length;
         }
-        
+
         /**
          * Checks if is continue.
          * 
-         * @return true, if is continue
+         * @return true, if is continue.
          */
         boolean isContinue() {
             return !visible && pos > 0;
         }
-        
+
         /**
          * Checks if is closed.
          * 
-         * @return true, if is closed
+         * @return true, if is closed.
          */
         boolean isClosed() {
             return close;
         }
-        
+
         /**
          * Checks if is connected.
          * 
-         * @return true, if is connected
+         * @return true, if is connected.
          */
         boolean isConnected() {
             return first && !close;
@@ -1632,7 +1780,7 @@
         /**
          * Eof.
          * 
-         * @return true, if successful
+         * @return true, if successful.
          */
         boolean eof() {
             if (!close) {
@@ -1648,7 +1796,7 @@
             }
             return false;
         }
-        
+
         /**
          * Next.
          */
@@ -1663,17 +1811,17 @@
             }
             visible = !visible;
         }
-        
+
         /**
          * Gets the value.
          * 
-         * @return the value
+         * @return the value.
          */
         double getValue() {
             double t = iter.getNext(pos);
             return t < 0 ? 0 : (t > 1 ? 1 : t);
         }
-        
+
     }
 
     /**
@@ -1681,7 +1829,9 @@
      */
     static abstract class DashIterator {
 
-        /** The Constant FLATNESS. */
+        /**
+         * The Constant FLATNESS.
+         */
         static final double FLATNESS = 1.0;
 
         /**
@@ -1692,7 +1842,8 @@
             /**
              * Instantiates a new line.
              * 
-             * @param len the len
+             * @param len
+             *            the len.
              */
             Line(double len) {
                 length = len;
@@ -1710,36 +1861,56 @@
          */
         static class Quad extends DashIterator {
 
-            /** The val size. */
+            /**
+             * The val size.
+             */
             int valSize;
-            
-            /** The val pos. */
+
+            /**
+             * The val pos.
+             */
             int valPos;
-            
-            /** The cur len. */
+
+            /**
+             * The cur len.
+             */
             double curLen;
-            
-            /** The prev len. */
+
+            /**
+             * The prev len.
+             */
             double prevLen;
-            
-            /** The last len. */
+
+            /**
+             * The last len.
+             */
             double lastLen;
-            
-            /** The values. */
+
+            /**
+             * The values.
+             */
             double[] values;
-            
-            /** The step. */
+
+            /**
+             * The step.
+             */
             double step;
 
             /**
              * Instantiates a new quad.
              * 
-             * @param x1 the x1
-             * @param y1 the y1
-             * @param x2 the x2
-             * @param y2 the y2
-             * @param x3 the x3
-             * @param y3 the y3
+             * @param x1
+             *            the x1.
+             * @param y1
+             *            the y1.
+             * @param x2
+             *            the x2.
+             * @param y2
+             *            the y2.
+             * @param x3
+             *            the x3.
+             * @param y3
+             *            the y3.
              */
             Quad(double x1, double y1, double x2, double y2, double x3, double y3) {
 
@@ -1766,7 +1937,7 @@
                 double pvx = vx;
                 double pvy = vy;
                 length = 0.0;
-                for(int i = 0; i < n; i++) {
+                for (int i = 0; i < n; i++) {
                     vx += dx1;
                     vy += dy1;
                     dx1 += dx2;
@@ -1804,40 +1975,63 @@
          */
         static class Cubic extends DashIterator {
 
-            /** The val size. */
+            /**
+             * The val size.
+             */
             int valSize;
-            
-            /** The val pos. */
+
+            /**
+             * The val pos.
+             */
             int valPos;
-            
-            /** The cur len. */
+
+            /**
+             * The cur len.
+             */
             double curLen;
-            
-            /** The prev len. */
+
+            /**
+             * The prev len.
+             */
             double prevLen;
-            
-            /** The last len. */
+
+            /**
+             * The last len.
+             */
             double lastLen;
-            
-            /** The values. */
+
+            /**
+             * The values.
+             */
             double[] values;
-            
-            /** The step. */
+
+            /**
+             * The step.
+             */
             double step;
 
             /**
              * Instantiates a new cubic.
              * 
-             * @param x1 the x1
-             * @param y1 the y1
-             * @param x2 the x2
-             * @param y2 the y2
-             * @param x3 the x3
-             * @param y3 the y3
-             * @param x4 the x4
-             * @param y4 the y4
+             * @param x1
+             *            the x1.
+             * @param y1
+             *            the y1.
+             * @param x2
+             *            the x2.
+             * @param y2
+             *            the y2.
+             * @param x3
+             *            the x3.
+             * @param y3
+             *            the y3.
+             * @param x4
+             *            the x4.
+             * @param y4
+             *            the y4.
              */
-            Cubic(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4) {
+            Cubic(double x1, double y1, double x2, double y2, double x3, double y3, double x4,
+                    double y4) {
 
                 double nx1 = x1 + x3 - x2 - x2;
                 double ny1 = y1 + y3 - y2 - y2;
@@ -1869,7 +2063,7 @@
                 double pvx = vx;
                 double pvy = vy;
                 length = 0.0;
-                for(int i = 0; i < n; i++) {
+                for (int i = 0; i < n; i++) {
                     vx += dx1;
                     vy += dy1;
                     dx1 += dx2;
@@ -1904,15 +2098,17 @@
 
         }
 
-        /** The length. */
+        /**
+         * The length.
+         */
         double length;
 
         /**
          * Gets the next.
          * 
-         * @param dashPos the dash pos
-         * 
-         * @return the next
+         * @param dashPos
+         *            the dash pos.
+         * @return the next.
          */
         abstract double getNext(double dashPos);
 
@@ -1923,39 +2119,60 @@
      */
     static class BufferedPath {
 
-        /** The Constant bufCapacity. */
+        /**
+         * The Constant bufCapacity.
+         */
         private static final int bufCapacity = 10;
 
-        /** The point shift. */
+        /**
+         * The point shift.
+         */
         static int pointShift[] = {
-                2,  // MOVETO
-                2,  // LINETO
-                4,  // QUADTO
-                6,  // CUBICTO
-                0}; // CLOSE
+                2, // MOVETO
+                2, // LINETO
+                4, // QUADTO
+                6, // CUBICTO
+                0
+        }; // CLOSE
 
-        /** The types. */
+        /**
+         * The types.
+         */
         byte[] types;
-        
-        /** The points. */
+
+        /**
+         * The points.
+         */
         float[] points;
-        
-        /** The type size. */
+
+        /**
+         * The type size.
+         */
         int typeSize;
-        
-        /** The point size. */
+
+        /**
+         * The point size.
+         */
         int pointSize;
 
-        /** The x last. */
+        /**
+         * The x last.
+         */
         float xLast;
-        
-        /** The y last. */
+
+        /**
+         * The y last.
+         */
         float yLast;
-        
-        /** The x move. */
+
+        /**
+         * The x move.
+         */
         float xMove;
-        
-        /** The y move. */
+
+        /**
+         * The y move.
+         */
         float yMove;
 
         /**
@@ -1969,8 +2186,10 @@
         /**
          * Check buf.
          * 
-         * @param typeCount the type count
-         * @param pointCount the point count
+         * @param typeCount
+         *            the type count.
+         * @param pointCount
+         *            the point count.
          */
         void checkBuf(int typeCount, int pointCount) {
             if (typeSize + typeCount > types.length) {
@@ -1988,7 +2207,7 @@
         /**
          * Checks if is empty.
          * 
-         * @return true, if is empty
+         * @return true, if is empty.
          */
         boolean isEmpty() {
             return typeSize == 0;
@@ -2005,8 +2224,10 @@
         /**
          * Move to.
          * 
-         * @param x the x
-         * @param y the y
+         * @param x
+         *            the x.
+         * @param y
+         *            the y.
          */
         void moveTo(double x, double y) {
             checkBuf(1, 2);
@@ -2018,8 +2239,10 @@
         /**
          * Line to.
          * 
-         * @param x the x
-         * @param y the y
+         * @param x
+         *            the x.
+         * @param y
+         *            the y.
          */
         void lineTo(double x, double y) {
             checkBuf(1, 2);
@@ -2031,10 +2254,14 @@
         /**
          * Quad to.
          * 
-         * @param x1 the x1
-         * @param y1 the y1
-         * @param x2 the x2
-         * @param y2 the y2
+         * @param x1
+         *            the x1.
+         * @param y1
+         *            the y1.
+         * @param x2
+         *            the x2.
+         * @param y2
+         *            the y2.
          */
         void quadTo(double x1, double y1, double x2, double y2) {
             checkBuf(1, 4);
@@ -2048,12 +2275,18 @@
         /**
          * Cubic to.
          * 
-         * @param x1 the x1
-         * @param y1 the y1
-         * @param x2 the x2
-         * @param y2 the y2
-         * @param x3 the x3
-         * @param y3 the y3
+         * @param x1
+         *            the x1.
+         * @param y1
+         *            the y1.
+         * @param x2
+         *            the x2.
+         * @param y2
+         *            the y2.
+         * @param x3
+         *            the x3.
+         * @param y3
+         *            the y3.
          */
         void cubicTo(double x1, double y1, double x2, double y2, double x3, double y3) {
             checkBuf(1, 6);
@@ -2077,8 +2310,10 @@
         /**
          * Sets the last.
          * 
-         * @param x the x
-         * @param y the y
+         * @param x
+         *            the x.
+         * @param y
+         *            the y.
          */
         void setLast(double x, double y) {
             points[pointSize - 2] = xLast = (float)x;
@@ -2088,7 +2323,8 @@
         /**
          * Append.
          * 
-         * @param p the p
+         * @param p
+         *            the p.
          */
         void append(BufferedPath p) {
             checkBuf(p.typeSize, p.pointSize);
@@ -2103,18 +2339,19 @@
         /**
          * Append reverse.
          * 
-         * @param p the p
+         * @param p
+         *            the p.
          */
         void appendReverse(BufferedPath p) {
             checkBuf(p.typeSize, p.pointSize);
             // Skip last point, beacause it's the first point of the second path
-            for(int i = p.pointSize - 2; i >= 0; i -= 2) {
+            for (int i = p.pointSize - 2; i >= 0; i -= 2) {
                 points[pointSize++] = p.points[i + 0];
                 points[pointSize++] = p.points[i + 1];
             }
             // Skip first type, beacuse it's always MOVETO
             int closeIndex = 0;
-            for(int i = p.typeSize - 1; i >= 0; i--) {
+            for (int i = p.typeSize - 1; i >= 0; i--) {
                 byte type = p.types[i];
                 if (type == PathIterator.SEG_MOVETO) {
                     types[closeIndex] = PathIterator.SEG_MOVETO;
@@ -2133,7 +2370,8 @@
         /**
          * Join.
          * 
-         * @param p the p
+         * @param p
+         *            the p.
          */
         void join(BufferedPath p) {
             // Skip MOVETO
@@ -2149,17 +2387,18 @@
         /**
          * Combine.
          * 
-         * @param p the p
+         * @param p
+         *            the p.
          */
         void combine(BufferedPath p) {
             checkBuf(p.typeSize - 1, p.pointSize - 2);
             // Skip last point, beacause it's the first point of the second path
-            for(int i = p.pointSize - 4; i >= 0; i -= 2) {
+            for (int i = p.pointSize - 4; i >= 0; i -= 2) {
                 points[pointSize++] = p.points[i + 0];
                 points[pointSize++] = p.points[i + 1];
             }
             // Skip first type, beacuse it's always MOVETO
-            for(int i = p.typeSize - 1; i >= 1; i--) {
+            for (int i = p.typeSize - 1; i >= 1; i--) {
                 types[typeSize++] = p.types[i];
             }
             xLast = points[pointSize - 2];
@@ -2169,29 +2408,30 @@
         /**
          * Creates the general path.
          * 
-         * @return the general path
+         * @return the general path.
          */
         GeneralPath createGeneralPath() {
             GeneralPath p = new GeneralPath();
             int j = 0;
-            for(int i = 0; i < typeSize; i++) {
+            for (int i = 0; i < typeSize; i++) {
                 int type = types[i];
-                switch(type){
-                case PathIterator.SEG_MOVETO:
-                    p.moveTo(points[j], points[j + 1]);
-                    break;
-                case PathIterator.SEG_LINETO:
-                    p.lineTo(points[j], points[j + 1]);
-                    break;
-                case PathIterator.SEG_QUADTO:
-                    p.quadTo(points[j], points[j + 1], points[j + 2], points[j + 3]);
-                    break;
-                case PathIterator.SEG_CUBICTO:
-                    p.curveTo(points[j], points[j + 1], points[j + 2], points[j + 3], points[j + 4], points[j + 5]);
-                    break;
-                case PathIterator.SEG_CLOSE:
-                    p.closePath();
-                    break;
+                switch (type) {
+                    case PathIterator.SEG_MOVETO:
+                        p.moveTo(points[j], points[j + 1]);
+                        break;
+                    case PathIterator.SEG_LINETO:
+                        p.lineTo(points[j], points[j + 1]);
+                        break;
+                    case PathIterator.SEG_QUADTO:
+                        p.quadTo(points[j], points[j + 1], points[j + 2], points[j + 3]);
+                        break;
+                    case PathIterator.SEG_CUBICTO:
+                        p.curveTo(points[j], points[j + 1], points[j + 2], points[j + 3],
+                                points[j + 4], points[j + 5]);
+                        break;
+                    case PathIterator.SEG_CLOSE:
+                        p.closePath();
+                        break;
                 }
                 j += pointShift[type];
             }
@@ -2201,4 +2441,3 @@
     }
 
 }
-
diff --git a/awt/java/awt/BufferCapabilities.java b/awt/java/awt/BufferCapabilities.java
index 80e8add..cd5fe7b 100644
--- a/awt/java/awt/BufferCapabilities.java
+++ b/awt/java/awt/BufferCapabilities.java
@@ -18,35 +18,45 @@
  * @author Alexey A. Petrenko
  * @version $Revision$
  */
+
 package java.awt;
 
-
 /**
- * The BufferCapabilities class represents the capabilities 
- * and other properties of the image buffers.
+ * The BufferCapabilities class represents the capabilities and other properties
+ * of the image buffers.
+ * 
+ * @since Android 1.0
  */
 public class BufferCapabilities implements Cloneable {
-    
-    /** The front buffer capabilities. */
+
+    /**
+     * The front buffer capabilities.
+     */
     private final ImageCapabilities frontBufferCapabilities;
-    
-    /** The back buffer capabilities. */
+
+    /**
+     * The back buffer capabilities.
+     */
     private final ImageCapabilities backBufferCapabilities;
-    
-    /** The flip contents. */
+
+    /**
+     * The flip contents.
+     */
     private final FlipContents flipContents;
 
     /**
      * Instantiates a new BufferCapabilities object.
      * 
-     * @param frontBufferCapabilities the front buffer capabilities, 
-     * can not be null.
-     * @param backBufferCapabilities the the back and intermediate 
-     * buffers capabilities, can not be null.
-     * @param flipContents the back buffer contents after page flipping, 
-     * null if page flipping is not used.
+     * @param frontBufferCapabilities
+     *            the front buffer capabilities, can not be null.
+     * @param backBufferCapabilities
+     *            the the back and intermediate buffers capabilities, can not be
+     *            null.
+     * @param flipContents
+     *            the back buffer contents after page flipping, null if page
+     *            flipping is not used.
      */
-    public BufferCapabilities(ImageCapabilities frontBufferCapabilities, 
+    public BufferCapabilities(ImageCapabilities frontBufferCapabilities,
             ImageCapabilities backBufferCapabilities, FlipContents flipContents) {
         if (frontBufferCapabilities == null || backBufferCapabilities == null) {
             throw new IllegalArgumentException();
@@ -70,8 +80,8 @@
     /**
      * Gets the image capabilities of the front buffer.
      * 
-     * @return the ImageCapabilities object represented capabilities 
-     * of the front buffer. 
+     * @return the ImageCapabilities object represented capabilities of the
+     *         front buffer.
      */
     public ImageCapabilities getFrontBufferCapabilities() {
         return frontBufferCapabilities;
@@ -80,15 +90,15 @@
     /**
      * Gets the image capabilities of the back buffer.
      * 
-     * @return the ImageCapabilities object represented capabilities 
-     * of the back buffer. 
+     * @return the ImageCapabilities object represented capabilities of the back
+     *         buffer.
      */
     public ImageCapabilities getBackBufferCapabilities() {
         return backBufferCapabilities;
     }
 
     /**
-     * Gets the flip contents of the back buffer after page-flipping. 
+     * Gets the flip contents of the back buffer after page-flipping.
      * 
      * @return the FlipContents of the back buffer after page-flipping.
      */
@@ -99,8 +109,7 @@
     /**
      * Checks if the buffer strategy uses page flipping.
      * 
-     * @return true, if the buffer strategy uses page flipping,
-     * false otherwise.
+     * @return true, if the buffer strategy uses page flipping, false otherwise.
      */
     public boolean isPageFlipping() {
         return flipContents != null;
@@ -110,7 +119,7 @@
      * Checks if page flipping is only available in full-screen mode.
      * 
      * @return true, if page flipping is only available in full-screen mode,
-     * false otherwise.
+     *         false otherwise.
      */
     public boolean isFullScreenRequired() {
         return false;
@@ -119,39 +128,40 @@
     /**
      * Checks if page flipping can be performed using more than two buffers.
      * 
-     * @return true, if page flipping can be performed using more than two buffers,
-     * false otherwise.
+     * @return true, if page flipping can be performed using more than two
+     *         buffers, false otherwise.
      */
     public boolean isMultiBufferAvailable() {
         return false;
     }
 
     /**
-     * The FlipContents class represents a set of possible back buffer contents 
+     * The FlipContents class represents a set of possible back buffer contents
      * after page-flipping.
+     * 
+     * @since Android 1.0
      */
     public static final class FlipContents {
-        
+
         /**
-         * The back buffered contents are cleared with the background color 
+         * The back buffered contents are cleared with the background color
          * after flipping.
          */
         public static final FlipContents BACKGROUND = new FlipContents();
-        
-        /** 
-         * The back buffered contents are copied to the front buffer before 
+
+        /**
+         * The back buffered contents are copied to the front buffer before
          * flipping.
          */
         public static final FlipContents COPIED = new FlipContents();
-        
-        /** 
-         * The back buffer contents are the prior contents of the 
-         * front buffer.
+
+        /**
+         * The back buffer contents are the prior contents of the front buffer.
          */
         public static final FlipContents PRIOR = new FlipContents();
-        
-        /** 
-         * The back buffer contents are undefined after flipping 
+
+        /**
+         * The back buffer contents are undefined after flipping
          */
         public static final FlipContents UNDEFINED = new FlipContents();
 
diff --git a/awt/java/awt/Color.java b/awt/java/awt/Color.java
index e1e4178..93c532d 100644
--- a/awt/java/awt/Color.java
+++ b/awt/java/awt/Color.java
@@ -18,6 +18,7 @@
  * @author Oleg V. Khaschansky
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.awt.color.ColorSpace;
@@ -33,155 +34,230 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Color class defines colors in the default sRGB color 
- * space or in the specified ColorSpace. Every Color contains alpha value.
- * The alpha value defines the transparency of a color and can be represented
- * by a float value in the range 0.0 - 1.0 or 0 - 255. 
-  */
+ * The Color class defines colors in the default sRGB color space or in the
+ * specified ColorSpace. Every Color contains alpha value. The alpha value
+ * defines the transparency of a color and can be represented by a float value
+ * in the range 0.0 - 1.0 or 0 - 255.
+ * 
+ * @since Android 1.0
+ */
 public class Color implements Paint, Serializable {
-    
-    /** The Constant serialVersionUID. */
+
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = 118526816881161077L;
 
     /*
-     * The values of the following colors are based on 1.5 release behavior which
-     * can be revealed using the following or similar code:
-     *   Color c = Color.white;
-     *   System.out.println(c);
+     * The values of the following colors are based on 1.5 release behavior
+     * which can be revealed using the following or similar code: Color c =
+     * Color.white; System.out.println(c);
      */
 
-    /** The color white. */
+    /**
+     * The color white.
+     */
     public static final Color white = new Color(255, 255, 255);
 
-    /** The color white. */
+    /**
+     * The color white.
+     */
     public static final Color WHITE = white;
 
-    /** The color light gray. */
+    /**
+     * The color light gray.
+     */
     public static final Color lightGray = new Color(192, 192, 192);
 
-    /** The color light gray. */
+    /**
+     * The color light gray.
+     */
     public static final Color LIGHT_GRAY = lightGray;
 
-    /** The color gray. */
+    /**
+     * The color gray.
+     */
     public static final Color gray = new Color(128, 128, 128);
 
-    /** The color gray. */
+    /**
+     * The color gray.
+     */
     public static final Color GRAY = gray;
 
-    /** The color dark gray. */
+    /**
+     * The color dark gray.
+     */
     public static final Color darkGray = new Color(64, 64, 64);
 
-    /** The color dark gray. */
+    /**
+     * The color dark gray.
+     */
     public static final Color DARK_GRAY = darkGray;
 
-    /** The color black. */
+    /**
+     * The color black.
+     */
     public static final Color black = new Color(0, 0, 0);
 
-    /** The color black. */
+    /**
+     * The color black.
+     */
     public static final Color BLACK = black;
 
-    /** The color red. */
+    /**
+     * The color red.
+     */
     public static final Color red = new Color(255, 0, 0);
 
-    /** The color red. */
+    /**
+     * The color red.
+     */
     public static final Color RED = red;
 
-    /** The color pink. */
+    /**
+     * The color pink.
+     */
     public static final Color pink = new Color(255, 175, 175);
 
-    /** The color pink. */
+    /**
+     * The color pink.
+     */
     public static final Color PINK = pink;
 
-    /** The color orange. */
+    /**
+     * The color orange.
+     */
     public static final Color orange = new Color(255, 200, 0);
 
-    /** The color orange. */
+    /**
+     * The color orange.
+     */
     public static final Color ORANGE = orange;
 
-    /** The color yellow. */
+    /**
+     * The color yellow.
+     */
     public static final Color yellow = new Color(255, 255, 0);
 
-    /** The color yellow. */
+    /**
+     * The color yellow.
+     */
     public static final Color YELLOW = yellow;
 
-    /** The color green. */
+    /**
+     * The color green.
+     */
     public static final Color green = new Color(0, 255, 0);
 
-    /** The color green. */
+    /**
+     * The color green.
+     */
     public static final Color GREEN = green;
 
-    /** The color magenta. */
+    /**
+     * The color magenta.
+     */
     public static final Color magenta = new Color(255, 0, 255);
 
-    /** The color magenta. */
+    /**
+     * The color magenta.
+     */
     public static final Color MAGENTA = magenta;
 
-    /** The color cyan. */
+    /**
+     * The color cyan.
+     */
     public static final Color cyan = new Color(0, 255, 255);
 
-    /** The color cyan. */
+    /**
+     * The color cyan.
+     */
     public static final Color CYAN = cyan;
 
-    /** The color blue. */
+    /**
+     * The color blue.
+     */
     public static final Color blue = new Color(0, 0, 255);
 
-    /** The color blue. */
+    /**
+     * The color blue.
+     */
     public static final Color BLUE = blue;
 
-    /** integer RGB value. */
+    /**
+     * integer RGB value.
+     */
     int value;
 
-    /** Float sRGB value. */
+    /**
+     * Float sRGB value.
+     */
     private float[] frgbvalue;
 
-    /** Color in an arbitrary color space with <code>float</code> components. If null, other value should be used. */
+    /**
+     * Color in an arbitrary color space with <code>float</code> components. If
+     * null, other value should be used.
+     */
     private float fvalue[];
 
-    /** Float alpha value. If frgbvalue is null, this is not valid data. */
+    /**
+     * Float alpha value. If frgbvalue is null, this is not valid data.
+     */
     private float falpha;
 
-    /** The color's color space if applicable. */
+    /**
+     * The color's color space if applicable.
+     */
     private ColorSpace cs;
 
     /*
-     * The value of the SCALE_FACTOR is based on 1.5 release behavior which
-     * can be revealed using the following code:
-     *   Color c = new Color(100, 100, 100);
-     *   Color bc = c.brighter();
-     *   System.out.println("Brighter factor: " + ((float)c.getRed())/((float)bc.getRed()));
-     *   Color dc = c.darker();
-     *   System.out.println("Darker factor: " + ((float)dc.getRed())/((float)c.getRed()));
-     * The result is the same for brighter and darker methods, so we need only
-     * one scale factor for both.
+     * The value of the SCALE_FACTOR is based on 1.5 release behavior which can
+     * be revealed using the following code: Color c = new Color(100, 100, 100);
+     * Color bc = c.brighter(); System.out.println("Brighter factor: " +
+     * ((float)c.getRed())/((float)bc.getRed())); Color dc = c.darker();
+     * System.out.println("Darker factor: " +
+     * ((float)dc.getRed())/((float)c.getRed())); The result is the same for
+     * brighter and darker methods, so we need only one scale factor for both.
      */
-    /** The Constant SCALE_FACTOR. */
+    /**
+     * The Constant SCALE_FACTOR.
+     */
     private static final double SCALE_FACTOR = 0.7;
 
-    /** The Constant MIN_SCALABLE. */
-    private static final int MIN_SCALABLE = 3; // should increase when multiplied by SCALE_FACTOR
+    /**
+     * The Constant MIN_SCALABLE.
+     */
+    private static final int MIN_SCALABLE = 3; // should increase when
 
-    /** The current paint context. */
+    // multiplied by SCALE_FACTOR
+
+    /**
+     * The current paint context.
+     */
     transient private PaintContext currentPaintContext;
 
     /**
-     * Creates a color in the specified ColorSpace, the specified color 
-     * components and the specified alpha. 
+     * Creates a color in the specified ColorSpace, the specified color
+     * components and the specified alpha.
      * 
-     * @param cspace the ColorSpace to be used to define the components.
-     * @param components the components.
-     * @param alpha the alpha.
+     * @param cspace
+     *            the ColorSpace to be used to define the components.
+     * @param components
+     *            the components.
+     * @param alpha
+     *            the alpha.
      */
     public Color(ColorSpace cspace, float[] components, float alpha) {
         int nComps = cspace.getNumComponents();
         float comp;
         fvalue = new float[nComps];
 
-        for(int i=0 ; i<nComps; i++) {
+        for (int i = 0; i < nComps; i++) {
             comp = components[i];
-            if(comp < 0.0f || comp > 1.0f) {
-                // awt.107=Color parameter outside of expected range: component {0}.
-                throw new IllegalArgumentException(
-                        Messages.getString("awt.107", i)); //$NON-NLS-1$
+            if (comp < 0.0f || comp > 1.0f) {
+                // awt.107=Color parameter outside of expected range: component
+                // {0}.
+                throw new IllegalArgumentException(Messages.getString("awt.107", i)); //$NON-NLS-1$
             }
             fvalue[i] = components[i];
         }
@@ -196,22 +272,22 @@
 
         frgbvalue = cs.toRGB(fvalue);
 
-        value =  ((int)(frgbvalue[2]*255 + 0.5))    |
-                (((int)(frgbvalue[1]*255 + 0.5)) << 8 )  |
-                (((int)(frgbvalue[0]*255 + 0.5)) << 16 ) |
-                (((int)(falpha*255 + 0.5)) << 24 );
+        value = ((int)(frgbvalue[2] * 255 + 0.5)) | (((int)(frgbvalue[1] * 255 + 0.5)) << 8)
+                | (((int)(frgbvalue[0] * 255 + 0.5)) << 16) | (((int)(falpha * 255 + 0.5)) << 24);
     }
 
     /**
-     * Instantiates a new sRGB color with the specified combined 
-     * RGBA value consisting of the alpha component in bits 24-31, 
-     * the red component in bits 16-23, the green component in bits 8-15, 
-     * and the blue component in bits 0-7. If the hasalpha argument is 
-     * false, the alpha has default value - 255.
+     * Instantiates a new sRGB color with the specified combined RGBA value
+     * consisting of the alpha component in bits 24-31, the red component in
+     * bits 16-23, the green component in bits 8-15, and the blue component in
+     * bits 0-7. If the hasalpha argument is false, the alpha has default value
+     * - 255.
      * 
-     * @param rgba the RGBA components.
-     * @param hasAlpha alpha parameter is true if alpha bits are valid,
-     * false otherwise.
+     * @param rgba
+     *            the RGBA components.
+     * @param hasAlpha
+     *            the alpha parameter is true if alpha bits are valid, false
+     *            otherwise.
      */
     public Color(int rgba, boolean hasAlpha) {
         if (!hasAlpha) {
@@ -222,13 +298,17 @@
     }
 
     /**
-     * Instantiates a new color with the specified red, green, blue and alpha 
+     * Instantiates a new color with the specified red, green, blue and alpha
      * components.
      * 
-     * @param r the red component.
-     * @param g the green component.
-     * @param b the blue component.
-     * @param a the alpha component.
+     * @param r
+     *            the red component.
+     * @param g
+     *            the green component.
+     * @param b
+     *            the blue component.
+     * @param a
+     *            the alpha component.
      */
     public Color(int r, int g, int b, int a) {
         if ((r & 0xFF) != r || (g & 0xFF) != g || (b & 0xFF) != b || (a & 0xFF) != a) {
@@ -239,12 +319,15 @@
     }
 
     /**
-     * Instantiates a new opaque sRGB color with the specified red, green, 
-     * and blue values. The Alpha component is set to the default - 1.0.
+     * Instantiates a new opaque sRGB color with the specified red, green, and
+     * blue values. The Alpha component is set to the default - 1.0.
      * 
-     * @param r the red component. 
-     * @param g the green component.
-     * @param b the blue component.
+     * @param r
+     *            the red component.
+     * @param g
+     *            the green component.
+     * @param b
+     *            the blue component.
      */
     public Color(int r, int g, int b) {
         if ((r & 0xFF) != r || (g & 0xFF) != g || (b & 0xFF) != b) {
@@ -256,31 +339,32 @@
     }
 
     /**
-     * Instantiates a new sRGB color with the specified 
-     * RGB value consisting of the red component in bits 16-23, 
-     * the green component in bits 8-15, and the blue component 
-     * in bits 0-7. Alpha has default value - 255.
+     * Instantiates a new sRGB color with the specified RGB value consisting of
+     * the red component in bits 16-23, the green component in bits 8-15, and
+     * the blue component in bits 0-7. Alpha has default value - 255.
      * 
-     * @param rgb the RGB components.
+     * @param rgb
+     *            the RGB components.
      */
     public Color(int rgb) {
         value = rgb | 0xFF000000;
     }
 
     /**
-     * Instantiates a new color with the specified red, green, blue and alpha 
+     * Instantiates a new color with the specified red, green, blue and alpha
      * components.
      * 
-     * @param r the red component.
-     * @param g the green component.
-     * @param b the blue component.
-     * @param a the alpha component.
+     * @param r
+     *            the red component.
+     * @param g
+     *            the green component.
+     * @param b
+     *            the blue component.
+     * @param a
+     *            the alpha component.
      */
     public Color(float r, float g, float b, float a) {
-        this((int)(r*255+0.5),
-                (int)(g*255+0.5),
-                (int)(b*255+0.5),
-                (int)(a*255+0.5));
+        this((int)(r * 255 + 0.5), (int)(g * 255 + 0.5), (int)(b * 255 + 0.5), (int)(a * 255 + 0.5));
         falpha = a;
         fvalue = new float[3];
         fvalue[0] = r;
@@ -290,25 +374,23 @@
     }
 
     /**
-     * Instantiates a new color with the specified red, green, and blue 
-     * components and default alfa value - 1.0.
+     * Instantiates a new color with the specified red, green, and blue
+     * components and default alpha value - 1.0.
      * 
-     * @param r the red component.
-     * @param g the green component.
-     * @param b the blue component.
+     * @param r
+     *            the red component.
+     * @param g
+     *            the green component.
+     * @param b
+     *            the blue component.
      */
     public Color(float r, float g, float b) {
         this(r, g, b, 1.0f);
     }
 
-    public PaintContext createContext(
-            ColorModel cm,
-            Rectangle r,
-            Rectangle2D r2d,
-            AffineTransform xform,
-            RenderingHints rhs
-    ) {
-        if(currentPaintContext != null) {
+    public PaintContext createContext(ColorModel cm, Rectangle r, Rectangle2D r2d,
+            AffineTransform xform, RenderingHints rhs) {
+        if (currentPaintContext != null) {
             return currentPaintContext;
         }
         currentPaintContext = new Color.ColorPaintContext(value);
@@ -323,15 +405,12 @@
     @Override
     public String toString() {
         /*
-           The format of the string is based on 1.5 release behavior which
-           can be revealed using the following code:
+         * The format of the string is based on 1.5 release behavior which can
+         * be revealed using the following code: Color c = new Color(1, 2, 3);
+         * System.out.println(c);
+         */
 
-           Color c = new Color(1, 2, 3);
-           System.out.println(c);
-        */
-        
-        return getClass().getName() +
-                "[r=" + getRed() + //$NON-NLS-1$
+        return getClass().getName() + "[r=" + getRed() + //$NON-NLS-1$
                 ",g=" + getGreen() + //$NON-NLS-1$
                 ",b=" + getBlue() + //$NON-NLS-1$
                 "]"; //$NON-NLS-1$
@@ -340,65 +419,67 @@
     /**
      * Compares the specified Object to the Color.
      * 
-     * @param obj the Object to be compared.
-     * 
-     * @return true, if the specified Object is a Color whose 
-     * value is equal to this Color, false otherwise.
+     * @param obj
+     *            the Object to be compared.
+     * @return true, if the specified Object is a Color whose value is equal to
+     *         this Color, false otherwise.
      */
     @Override
     public boolean equals(Object obj) {
-        if(obj instanceof Color) {
+        if (obj instanceof Color) {
             return ((Color)obj).value == this.value;
         }
         return false;
     }
 
     /**
-     * Returns a float array containing the color and alpha components of 
-     * the Color in the specified ColorSpace. 
+     * Returns a float array containing the color and alpha components of the
+     * Color in the specified ColorSpace.
      * 
-     * @param colorSpace the specified ColorSpace.
-     * @param components the results of this method will be written to
-     * this float array. If null, a float array will be created.
-     * 
+     * @param colorSpace
+     *            the specified ColorSpace.
+     * @param components
+     *            the results of this method will be written to this float
+     *            array. If null, a float array will be created.
      * @return the color and alpha components in a float array.
      */
     public float[] getComponents(ColorSpace colorSpace, float[] components) {
         int nComps = colorSpace.getNumComponents();
-        if(components == null) {
-            components = new float[nComps+1];
+        if (components == null) {
+            components = new float[nComps + 1];
         }
 
         getColorComponents(colorSpace, components);
 
-        if(frgbvalue != null) {
+        if (frgbvalue != null) {
             components[nComps] = falpha;
         } else {
-            components[nComps] = getAlpha()/255f;
+            components[nComps] = getAlpha() / 255f;
         }
 
         return components;
     }
 
     /**
-     * Returns a float array containing the color components of 
-     * the Color in the specified ColorSpace.
+     * Returns a float array containing the color components of the Color in the
+     * specified ColorSpace.
      * 
-     * @param colorSpace the specified ColorSpace.
-     * @param components the results of this method will be written to
-     * this float array. If null, a float array will be created.
-     * 
+     * @param colorSpace
+     *            the specified ColorSpace.
+     * @param components
+     *            the results of this method will be written to this float
+     *            array. If null, a float array will be created.
      * @return the color components in a float array.
      */
     public float[] getColorComponents(ColorSpace colorSpace, float[] components) {
         float[] cieXYZComponents = getColorSpace().toCIEXYZ(getColorComponents(null));
         float[] csComponents = colorSpace.fromCIEXYZ(cieXYZComponents);
 
-        if(components == null) {
+        if (components == null) {
             return csComponents;
         }
 
-        for(int i=0; i<csComponents.length; i++) {
+        for (int i = 0; i < csComponents.length; i++) {
             components[i] = csComponents[i];
         }
 
@@ -419,16 +500,14 @@
     }
 
     /**
-     * Creates a new Color which is a darker than this Color
-     * according to a fixed scale factor.
+     * Creates a new Color which is a darker than this Color according to a
+     * fixed scale factor.
      * 
      * @return the darker Color.
      */
     public Color darker() {
-        return new Color(
-                (int)(getRed()*SCALE_FACTOR),
-                (int)(getGreen()*SCALE_FACTOR),
-                (int)(getBlue()*SCALE_FACTOR));
+        return new Color((int)(getRed() * SCALE_FACTOR), (int)(getGreen() * SCALE_FACTOR),
+                (int)(getBlue() * SCALE_FACTOR));
     }
 
     /**
@@ -442,28 +521,28 @@
         int b = getBlue();
         int g = getGreen();
 
-        if(r == 0 && b == 0 && g == 0) {
+        if (r == 0 && b == 0 && g == 0) {
             return new Color(MIN_SCALABLE, MIN_SCALABLE, MIN_SCALABLE);
         }
 
-        if(r < MIN_SCALABLE && r != 0) {
+        if (r < MIN_SCALABLE && r != 0) {
             r = MIN_SCALABLE;
         } else {
-            r = (int) (r/SCALE_FACTOR);
+            r = (int)(r / SCALE_FACTOR);
             r = (r > 255) ? 255 : r;
         }
 
-        if(b < MIN_SCALABLE && b != 0) {
+        if (b < MIN_SCALABLE && b != 0) {
             b = MIN_SCALABLE;
         } else {
-            b = (int) (b/SCALE_FACTOR);
+            b = (int)(b / SCALE_FACTOR);
             b = (b > 255) ? 255 : b;
         }
 
-        if(g < MIN_SCALABLE && g != 0) {
+        if (g < MIN_SCALABLE && g != 0) {
             g = MIN_SCALABLE;
         } else {
-            g = (int) (g/SCALE_FACTOR);
+            g = (int)(g / SCALE_FACTOR);
             g = (g > 255) ? 255 : g;
         }
 
@@ -471,24 +550,24 @@
     }
 
     /**
-     * Returns a float array containing the color and alpha components of 
-     * the Color in the default sRGB color space. 
+     * Returns a float array containing the color and alpha components of the
+     * Color in the default sRGB color space.
      * 
-     * @param components the results of this method will be written to
-     * this float array. A new float array will be created if this
-     * argument is null.
-     * 
+     * @param components
+     *            the results of this method will be written to this float
+     *            array. A new float array will be created if this argument is
+     *            null.
      * @return the RGB color and alpha components in a float array.
      */
     public float[] getRGBComponents(float[] components) {
-        if(components == null) {
+        if (components == null) {
             components = new float[4];
         }
 
-        if(frgbvalue != null) {
+        if (frgbvalue != null) {
             components[3] = falpha;
         } else {
-            components[3] = getAlpha()/255f;
+            components[3] = getAlpha() / 255f;
         }
 
         getRGBColorComponents(components);
@@ -497,52 +576,52 @@
     }
 
     /**
-     * Returns a float array containing the color components of 
-     * the Color in the default sRGB color space. 
+     * Returns a float array containing the color components of the Color in the
+     * default sRGB color space.
      * 
-     * @param components the results of this method will be written to
-     * this float array. A new float array will be created if this
-     * argument is null.
-     * 
+     * @param components
+     *            the results of this method will be written to this float
+     *            array. A new float array will be created if this argument is
+     *            null.
      * @return the RGB color components in a float array.
      */
     public float[] getRGBColorComponents(float[] components) {
-        if(components == null) {
+        if (components == null) {
             components = new float[3];
         }
 
-        if(frgbvalue != null) {
+        if (frgbvalue != null) {
             components[2] = frgbvalue[2];
             components[1] = frgbvalue[1];
             components[0] = frgbvalue[0];
         } else {
-            components[2] = getBlue()/255f;
-            components[1] = getGreen()/255f;
-            components[0] = getRed()/255f;
+            components[2] = getBlue() / 255f;
+            components[1] = getGreen() / 255f;
+            components[0] = getRed() / 255f;
         }
 
         return components;
     }
 
     /**
-     * Returns a float array which contains the color and alpha components of 
+     * Returns a float array which contains the color and alpha components of
      * the Color in the ColorSpace of the Color.
      * 
-     * @param components the results of this method will be written to
-     * this float array. A new float array will be created if this
-     * argument is null.
-     * 
+     * @param components
+     *            the results of this method will be written to this float
+     *            array. A new float array will be created if this argument is
+     *            null.
      * @return the color and alpha components in a float array.
      */
     public float[] getComponents(float[] components) {
-        if(fvalue == null) {
+        if (fvalue == null) {
             return getRGBComponents(components);
         }
 
         int nColorComps = fvalue.length;
 
-        if(components == null) {
-            components = new float[nColorComps+1];
+        if (components == null) {
+            components = new float[nColorComps + 1];
         }
 
         getColorComponents(components);
@@ -553,25 +632,25 @@
     }
 
     /**
-     * Returns a float array which contains the color components of 
-     * the Color in the ColorSpace of the Color.
+     * Returns a float array which contains the color components of the Color in
+     * the ColorSpace of the Color.
      * 
-     * @param components the results of this method will be written to
-     * this float array. A new float array will be created if this
-     * argument is null.
-     * 
+     * @param components
+     *            the results of this method will be written to this float
+     *            array. A new float array will be created if this argument is
+     *            null.
      * @return the color components in a float array.
      */
     public float[] getColorComponents(float[] components) {
-        if(fvalue == null) {
+        if (fvalue == null) {
             return getRGBColorComponents(components);
         }
 
-        if(components == null) {
+        if (components == null) {
             components = new float[fvalue.length];
         }
 
-        for(int i=0; i<fvalue.length; i++) {
+        for (int i = 0; i < fvalue.length; i++) {
             components[i] = fvalue[i];
         }
 
@@ -589,7 +668,7 @@
     }
 
     public int getTransparency() {
-        switch(getAlpha()) {
+        switch (getAlpha()) {
             case 0xff:
                 return Transparency.OPAQUE;
             case 0:
@@ -609,7 +688,8 @@
     }
 
     /**
-     * Gets the RGB value that represents the color in the default sRGB ColorModel.
+     * Gets the RGB value that represents the color in the default sRGB
+     * ColorModel.
      * 
      * @return the RGB color value in the default sRGB ColorModel.
      */
@@ -645,14 +725,15 @@
     }
 
     /**
-     * Gets the Color from the specified string, or returns the Color
-     * specified by the second parameter.
+     * Gets the Color from the specified string, or returns the Color specified
+     * by the second parameter.
      * 
-     * @param nm the specified string.
-     * @param def the default Color.
-     * 
-     * @return the color from the specified string, or the Color
-     * specified by the second parameter.
+     * @param nm
+     *            the specified string.
+     * @param def
+     *            the default Color.
+     * @return the color from the specified string, or the Color specified by
+     *         the second parameter.
      */
     public static Color getColor(String nm, Color def) {
         Integer integer = Integer.getInteger(nm);
@@ -668,11 +749,12 @@
      * Gets the Color from the specified string, or returns the Color converted
      * from the second parameter.
      * 
-     * @param nm the specified string.
-     * @param def the default Color.
-     * 
-     * @return the color from the specified string, or the Color
-     * converted from the second parameter.
+     * @param nm
+     *            the specified string.
+     * @param def
+     *            the default Color.
+     * @return the color from the specified string, or the Color converted from
+     *         the second parameter.
      */
     public static Color getColor(String nm, int def) {
         Integer integer = Integer.getInteger(nm);
@@ -687,8 +769,8 @@
     /**
      * Gets the Color from the specified String.
      * 
-     * @param nm the specified string.
-     * 
+     * @param nm
+     *            the specified string.
      * @return the Color object, or null.
      */
     public static Color getColor(String nm) {
@@ -704,10 +786,12 @@
     /**
      * Decodes a String to an integer and returns the specified opaque Color.
      * 
-     * @param nm a String which represents an opaque color as a 24-bit integer.
-     * 
-     * @throws NumberFormatException if the specified string can not be
-     * converted to an integer.
+     * @param nm
+     *            the String which represents an opaque color as a 24-bit
+     *            integer.
+     * @return the Color object from the given String.
+     * @throws NumberFormatException
+     *             if the specified string can not be converted to an integer.
      */
     public static Color decode(String nm) throws NumberFormatException {
         Integer integer = Integer.decode(nm);
@@ -717,31 +801,36 @@
     /**
      * Gets a Color object using the specified values of the HSB color model.
      * 
-     * @param h the hue component of the Color.
-     * @param s the saturation of the Color.
-     * @param b the brightness of the Color.
-     * 
-     * @return a color object with the specified hue, saturation and 
-     * brightness values.
+     * @param h
+     *            the hue component of the Color.
+     * @param s
+     *            the saturation of the Color.
+     * @param b
+     *            the brightness of the Color.
+     * @return a color object with the specified hue, saturation and brightness
+     *         values.
      */
     public static Color getHSBColor(float h, float s, float b) {
         return new Color(HSBtoRGB(h, s, b));
     }
 
     /**
-     * Converts the Color specified by the RGB model to an equivalent 
-     * color in the HSB model.
+     * Converts the Color specified by the RGB model to an equivalent color in
+     * the HSB model.
      * 
-     * @param r the red component.
-     * @param g the green component.
-     * @param b the blue component.
-     * @param hsbvals the array of result hue, saturation, brightness
-     * values or null.
-     * 
+     * @param r
+     *            the red component.
+     * @param g
+     *            the green component.
+     * @param b
+     *            the blue component.
+     * @param hsbvals
+     *            the array of result hue, saturation, brightness values or
+     *            null.
      * @return the float array of hue, saturation, brightness values.
      */
     public static float[] RGBtoHSB(int r, int g, int b, float[] hsbvals) {
-        if(hsbvals == null) {
+        if (hsbvals == null) {
             hsbvals = new float[3];
         }
 
@@ -750,12 +839,12 @@
 
         float H, S, B;
 
-        B = V/255.f;
+        B = V / 255.f;
 
-        if(V == temp) {
+        if (V == temp) {
             H = S = 0;
         } else {
-            S = (V - temp)/((float)V);
+            S = (V - temp) / ((float)V);
 
             float Cr = (V - r) / (float)(V - temp);
             float Cg = (V - g) / (float)(V - temp);
@@ -770,7 +859,7 @@
             }
 
             H /= 6.f;
-            if(H < 0) {
+            if (H < 0) {
                 H++;
             }
         }
@@ -783,50 +872,70 @@
     }
 
     /**
-     * Converts the Color specified by the HSB model to an equivalent 
-     * color in the default RGB model.
+     * Converts the Color specified by the HSB model to an equivalent color in
+     * the default RGB model.
      * 
-     * @param hue the hue component of the Color.
-     * @param saturation the saturation of the Color.
-     * @param brightness the brightness of the Color.
-     * 
-     * @return the RGB value of the color with the specified hue, 
-     * saturation and brightness.
+     * @param hue
+     *            the hue component of the Color.
+     * @param saturation
+     *            the saturation of the Color.
+     * @param brightness
+     *            the brightness of the Color.
+     * @return the RGB value of the color with the specified hue, saturation and
+     *         brightness.
      */
     public static int HSBtoRGB(float hue, float saturation, float brightness) {
         float fr, fg, fb;
 
-        if(saturation == 0) {
+        if (saturation == 0) {
             fr = fg = fb = brightness;
         } else {
             float H = (hue - (float)Math.floor(hue)) * 6;
-            int I = (int) Math.floor(H);
+            int I = (int)Math.floor(H);
             float F = H - I;
             float M = brightness * (1 - saturation);
             float N = brightness * (1 - saturation * F);
             float K = brightness * (1 - saturation * (1 - F));
 
-            switch(I) {
+            switch (I) {
                 case 0:
-                    fr = brightness; fg = K; fb = M; break;
+                    fr = brightness;
+                    fg = K;
+                    fb = M;
+                    break;
                 case 1:
-                    fr = N; fg = brightness; fb = M; break;
+                    fr = N;
+                    fg = brightness;
+                    fb = M;
+                    break;
                 case 2:
-                    fr = M; fg = brightness; fb = K; break;
+                    fr = M;
+                    fg = brightness;
+                    fb = K;
+                    break;
                 case 3:
-                    fr = M; fg = N; fb = brightness; break;
+                    fr = M;
+                    fg = N;
+                    fb = brightness;
+                    break;
                 case 4:
-                    fr = K; fg = M; fb = brightness; break;
+                    fr = K;
+                    fg = M;
+                    fb = brightness;
+                    break;
                 case 5:
-                    fr = brightness; fg = M; fb = N; break;
+                    fr = brightness;
+                    fg = M;
+                    fb = N;
+                    break;
                 default:
                     fr = fb = fg = 0; // impossible, to supress compiler error
             }
         }
 
-        int r = (int) (fr * 255. + 0.5);
-        int g = (int) (fg * 255. + 0.5);
-        int b = (int) (fb * 255. + 0.5);
+        int r = (int)(fr * 255. + 0.5);
+        int g = (int)(fg * 255. + 0.5);
+        int b = (int)(fb * 255. + 0.5);
 
         return (r << 16) | (g << 8) | b | 0xFF000000;
     }
@@ -835,17 +944,22 @@
      * The Class ColorPaintContext.
      */
     class ColorPaintContext implements PaintContext {
-        
-        /** The rgb value. */
+
+        /**
+         * The RGB value.
+         */
         int rgbValue;
-        
-        /** The saved raster. */
+
+        /**
+         * The saved raster.
+         */
         WritableRaster savedRaster = null;
 
         /**
          * Instantiates a new color paint context.
          * 
-         * @param rgb the rgb
+         * @param rgb
+         *            the RGB value.
          */
         protected ColorPaintContext(int rgb) {
             rgbValue = rgb;
@@ -860,15 +974,11 @@
         }
 
         public Raster getRaster(int x, int y, int w, int h) {
-            if (savedRaster == null ||
-                    w != savedRaster.getWidth() ||
-                    h != savedRaster.getHeight()) {
-                savedRaster =
-                        getColorModel().createCompatibleWritableRaster(w, h);
+            if (savedRaster == null || w != savedRaster.getWidth() || h != savedRaster.getHeight()) {
+                savedRaster = getColorModel().createCompatibleWritableRaster(w, h);
 
                 // Suppose we have here simple INT/RGB color/sample model
-                DataBufferInt intBuffer =
-                        (DataBufferInt) savedRaster.getDataBuffer();
+                DataBufferInt intBuffer = (DataBufferInt)savedRaster.getDataBuffer();
                 int rgbValues[] = intBuffer.getData();
                 int rgbFillValue = rgbValue;
                 Arrays.fill(rgbValues, rgbFillValue);
@@ -878,4 +988,3 @@
         }
     }
 }
-
diff --git a/awt/java/awt/Component.java b/awt/java/awt/Component.java
index f19d285..c52a9f4 100644
--- a/awt/java/awt/Component.java
+++ b/awt/java/awt/Component.java
@@ -78,547 +78,273 @@
 //import javax.accessibility.AccessibleState;
 //import javax.accessibility.AccessibleStateSet;
 
-import org.apache.harmony.awt.ClipRegion;
-//import org.apache.harmony.awt.FieldsAccessor;
+import org.apache.harmony.awt.ClipRegion; //import org.apache.harmony.awt.FieldsAccessor;
 import org.apache.harmony.awt.gl.MultiRectArea;
 import org.apache.harmony.awt.internal.nls.Messages;
-import org.apache.harmony.awt.state.State;
-//import org.apache.harmony.awt.text.TextFieldKit;
+import org.apache.harmony.awt.state.State; //import org.apache.harmony.awt.text.TextFieldKit;
 //import org.apache.harmony.awt.text.TextKit;
 import org.apache.harmony.awt.wtk.NativeWindow;
+import org.apache.harmony.luni.util.NotImplementedException;
 
 /**
- * The abstract Component class specifies an object with a graphical 
- * representation that can be displayed on the screen and that can 
- * interact with the user (for example: scrollbars, buttons, checkboxes).
+ * The abstract Component class specifies an object with a graphical
+ * representation that can be displayed on the screen and that can interact with
+ * the user (for example: scrollbars, buttons, checkboxes).
+ * 
+ * @since Android 1.0
  */
 public abstract class Component implements ImageObserver, MenuContainer, Serializable {
-    
-    /** The Constant serialVersionUID. */
+
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = -7644114512714619750L;
 
-    /** The Constant TOP_ALIGNMENT indicates the top alignment of the component. */
+    /**
+     * The Constant TOP_ALIGNMENT indicates the top alignment of the component.
+     */
     public static final float TOP_ALIGNMENT = 0.0f;
 
-    /** The Constant CENTER_ALIGNMENT indicates the center alignment of the component. */
+    /**
+     * The Constant CENTER_ALIGNMENT indicates the center alignment of the
+     * component.
+     */
     public static final float CENTER_ALIGNMENT = 0.5f;
 
-    /** The Constant BOTTOM_ALIGNMENT indicates the bottom alignment of the component. */
+    /**
+     * The Constant BOTTOM_ALIGNMENT indicates the bottom alignment of the
+     * component.
+     */
     public static final float BOTTOM_ALIGNMENT = 1.0f;
 
-    /** The Constant LEFT_ALIGNMENT indicates the left alignment of the component. */
+    /**
+     * The Constant LEFT_ALIGNMENT indicates the left alignment of the
+     * component.
+     */
     public static final float LEFT_ALIGNMENT = 0.0f;
 
-    /** The Constant RIGHT_ALIGNMENT indicates the right alignment of the component. */
+    /**
+     * The Constant RIGHT_ALIGNMENT indicates the right alignment of the
+     * component.
+     */
     public static final float RIGHT_ALIGNMENT = 1.0f;
 
-    /** The Constant childClassesFlags. */
+    /**
+     * The Constant childClassesFlags.
+     */
     private static final Hashtable<Class<?>, Boolean> childClassesFlags = new Hashtable<Class<?>, Boolean>();
 
-    /** The Constant peer. */
+    /**
+     * The Constant peer.
+     */
     private static final ComponentPeer peer = new ComponentPeer() {
     };
 
-    /** The Constant incrementalImageUpdate. */
+    /**
+     * The Constant incrementalImageUpdate.
+     */
     private static final boolean incrementalImageUpdate;
 
-    /** The toolkit. */
+    /**
+     * The toolkit.
+     */
     final transient Toolkit toolkit = Toolkit.getDefaultToolkit();
 
-    //???AWT
+    // ???AWT
     /*
-    protected abstract class AccessibleAWTComponent extends AccessibleContext implements
-            Serializable, AccessibleComponent {
-        private static final long serialVersionUID = 642321655757800191L;
-
-        protected class AccessibleAWTComponentHandler implements ComponentListener {
-            protected AccessibleAWTComponentHandler() {
-            }
-
-            public void componentHidden(ComponentEvent e) {
-                if (behaviour.isLightweight()) {
-                    return;
-                }
-                firePropertyChange(AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
-                        AccessibleState.VISIBLE, null);
-            }
-
-            public void componentMoved(ComponentEvent e) {
-            }
-
-            public void componentResized(ComponentEvent e) {
-            }
-
-            public void componentShown(ComponentEvent e) {
-                if (behaviour.isLightweight()) {
-                    return;
-                }
-                firePropertyChange(AccessibleContext.ACCESSIBLE_STATE_PROPERTY, null,
-                        AccessibleState.VISIBLE);
-            }
-        }
-
-        protected class AccessibleAWTFocusHandler implements FocusListener {
-            public void focusGained(FocusEvent e) {
-                if (behaviour.isLightweight()) {
-                    return;
-                }
-                firePropertyChange(AccessibleContext.ACCESSIBLE_STATE_PROPERTY, null,
-                        AccessibleState.FOCUSED);
-            }
-
-            public void focusLost(FocusEvent e) {
-                if (behaviour.isLightweight()) {
-                    return;
-                }
-                firePropertyChange(AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
-                        AccessibleState.FOCUSED, null);
-            }
-        }
-    
-        protected ComponentListener accessibleAWTComponentHandler;
-    
-        protected FocusListener accessibleAWTFocusHandler;
-        */
-        /*
-         * Number of registered property change listeners.
-         */
-        /*
-        int listenersCount;
-
-        public void addFocusListener(FocusListener l) {
-            Component.this.addFocusListener(l);
-        }
-
-        @Override
-        public void addPropertyChangeListener(PropertyChangeListener listener) {
-            toolkit.lockAWT();
-            try {
-                super.addPropertyChangeListener(listener);
-                listenersCount++;
-                if (accessibleAWTComponentHandler == null) {
-                    accessibleAWTComponentHandler = new AccessibleAWTComponentHandler();
-                    Component.this.addComponentListener(accessibleAWTComponentHandler);
-                }
-                if (accessibleAWTFocusHandler == null) {
-                    accessibleAWTFocusHandler = new AccessibleAWTFocusHandler();
-                    Component.this.addFocusListener(accessibleAWTFocusHandler);
-                }
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-        
-        public boolean contains(Point p) {
-            toolkit.lockAWT();
-            try {
-                return Component.this.contains(p);
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public Accessible getAccessibleAt(Point arg0) {
-            toolkit.lockAWT();
-            try {
-                return null;
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public Color getBackground() {
-            toolkit.lockAWT();
-            try {
-                return Component.this.getBackground();
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public Rectangle getBounds() {
-            toolkit.lockAWT();
-            try {
-                return Component.this.getBounds();
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public Cursor getCursor() {
-            toolkit.lockAWT();
-            try {
-                return Component.this.getCursor();
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public Font getFont() {
-            toolkit.lockAWT();
-            try {
-                return Component.this.getFont();
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public FontMetrics getFontMetrics(Font f) {
-            toolkit.lockAWT();
-            try {
-                return Component.this.getFontMetrics(f);
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public Color getForeground() {
-            toolkit.lockAWT();
-            try {
-                return Component.this.getForeground();
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public Point getLocation() {
-            toolkit.lockAWT();
-            try {
-                return Component.this.getLocation();
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public Point getLocationOnScreen() {
-            toolkit.lockAWT();
-            try {
-                return Component.this.getLocationOnScreen();
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public Dimension getSize() {
-            toolkit.lockAWT();
-            try {
-                return Component.this.getSize();
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public boolean isEnabled() {
-            toolkit.lockAWT();
-            try {
-                return Component.this.isEnabled();
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public boolean isFocusTraversable() {
-            toolkit.lockAWT();
-            try {
-                return Component.this.isFocusTraversable();
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public boolean isShowing() {
-            toolkit.lockAWT();
-            try {
-                return Component.this.isShowing();
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public boolean isVisible() {
-            toolkit.lockAWT();
-            try {
-                return Component.this.isVisible();
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public void removeFocusListener(FocusListener l) {
-            Component.this.removeFocusListener(l);
-        }
-
-        @Override
-        public void removePropertyChangeListener(PropertyChangeListener listener) {
-            toolkit.lockAWT();
-            try {
-                super.removePropertyChangeListener(listener);
-                listenersCount--;
-                if (listenersCount > 0) {
-                    return;
-                }
-                // if there are no more listeners, remove handlers:
-                Component.this.removeFocusListener(accessibleAWTFocusHandler);
-                Component.this.removeComponentListener(accessibleAWTComponentHandler);
-                accessibleAWTComponentHandler = null;
-                accessibleAWTFocusHandler = null;
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public void requestFocus() {
-            toolkit.lockAWT();
-            try {
-                Component.this.requestFocus();
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public void setBackground(Color color) {
-            toolkit.lockAWT();
-            try {
-                Component.this.setBackground(color);
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public void setBounds(Rectangle r) {
-            toolkit.lockAWT();
-            try {
-                Component.this.setBounds(r);
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public void setCursor(Cursor cursor) {
-            toolkit.lockAWT();
-            try {
-                Component.this.setCursor(cursor);
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public void setEnabled(boolean enabled) {
-            toolkit.lockAWT();
-            try {
-                Component.this.setEnabled(enabled);
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public void setFont(Font f) {
-            toolkit.lockAWT();
-            try {
-                Component.this.setFont(f);
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public void setForeground(Color color) {
-            toolkit.lockAWT();
-            try {
-                Component.this.setForeground(color);
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public void setLocation(Point p) {
-            toolkit.lockAWT();
-            try {
-                Component.this.setLocation(p);
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public void setSize(Dimension size) {
-            toolkit.lockAWT();
-            try {
-                Component.this.setSize(size);
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        public void setVisible(boolean visible) {
-            toolkit.lockAWT();
-            try {
-                Component.this.setVisible(visible);
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-        
-        @Override
-        public Accessible getAccessibleParent() {
-            toolkit.lockAWT();
-            try {
-                Accessible aParent = super.getAccessibleParent();
-                if (aParent != null) {
-                    return aParent;
-                }
-                Container parent = getParent();
-                return (parent instanceof Accessible ? (Accessible) parent : null);
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        @Override
-        public Accessible getAccessibleChild(int i) {
-            toolkit.lockAWT();
-            try {
-                return null;
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        @Override
-        public int getAccessibleChildrenCount() {
-            toolkit.lockAWT();
-            try {
-                return 0;
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        @Override
-        public AccessibleComponent getAccessibleComponent() {
-            return this;
-        }
-
-        @Override
-        public String getAccessibleDescription() {
-            return super.getAccessibleDescription(); // why override?
-        }
-
-        @Override
-        public int getAccessibleIndexInParent() {
-            toolkit.lockAWT();
-            try {
-                if (getAccessibleParent() == null) {
-                    return -1;
-                }
-                int count = 0;
-                Container parent = getParent();
-                for (int i = 0; i < parent.getComponentCount(); i++) {
-                    Component aComp = parent.getComponent(i);
-                    if (aComp instanceof Accessible) {
-                        if (aComp == Component.this) {
-                            return count;
-                        }
-                        ++count;
-                    }
-                }
-                return -1;
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        @Override
-        public AccessibleRole getAccessibleRole() {
-            toolkit.lockAWT();
-            try {
-                return AccessibleRole.AWT_COMPONENT;
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        @Override
-        public AccessibleStateSet getAccessibleStateSet() {
-            toolkit.lockAWT();
-            try {
-                AccessibleStateSet set = new AccessibleStateSet();
-                if (isEnabled()) {
-                    set.add(AccessibleState.ENABLED);
-                }
-                if (isFocusable()) {
-                    set.add(AccessibleState.FOCUSABLE);
-                }
-                if (hasFocus()) {
-                    set.add(AccessibleState.FOCUSED);
-                }
-                if (isOpaque()) {
-                    set.add(AccessibleState.OPAQUE);
-                }
-                if (isShowing()) {
-                    set.add(AccessibleState.SHOWING);
-                }
-                if (isVisible()) {
-                    set.add(AccessibleState.VISIBLE);
-                }
-                return set;
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        @Override
-        public Locale getLocale() throws IllegalComponentStateException {
-            toolkit.lockAWT();
-            try {
-                return Component.this.getLocale();
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-    }
-    */
+     * protected abstract class AccessibleAWTComponent extends AccessibleContext
+     * implements Serializable, AccessibleComponent { private static final long
+     * serialVersionUID = 642321655757800191L; protected class
+     * AccessibleAWTComponentHandler implements ComponentListener { protected
+     * AccessibleAWTComponentHandler() { } public void
+     * componentHidden(ComponentEvent e) { if (behaviour.isLightweight()) {
+     * return; } firePropertyChange(AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+     * AccessibleState.VISIBLE, null); } public void
+     * componentMoved(ComponentEvent e) { } public void
+     * componentResized(ComponentEvent e) { } public void
+     * componentShown(ComponentEvent e) { if (behaviour.isLightweight()) {
+     * return; } firePropertyChange(AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+     * null, AccessibleState.VISIBLE); } } protected class
+     * AccessibleAWTFocusHandler implements FocusListener { public void
+     * focusGained(FocusEvent e) { if (behaviour.isLightweight()) { return; }
+     * firePropertyChange(AccessibleContext.ACCESSIBLE_STATE_PROPERTY, null,
+     * AccessibleState.FOCUSED); } public void focusLost(FocusEvent e) { if
+     * (behaviour.isLightweight()) { return; }
+     * firePropertyChange(AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+     * AccessibleState.FOCUSED, null); } } protected ComponentListener
+     * accessibleAWTComponentHandler; protected FocusListener
+     * accessibleAWTFocusHandler;
+     */
+    /*
+     * Number of registered property change listeners.
+     */
+    /*
+     * int listenersCount; public void addFocusListener(FocusListener l) {
+     * Component.this.addFocusListener(l); }
+     * @Override public void addPropertyChangeListener(PropertyChangeListener
+     * listener) { toolkit.lockAWT(); try {
+     * super.addPropertyChangeListener(listener); listenersCount++; if
+     * (accessibleAWTComponentHandler == null) { accessibleAWTComponentHandler =
+     * new AccessibleAWTComponentHandler();
+     * Component.this.addComponentListener(accessibleAWTComponentHandler); } if
+     * (accessibleAWTFocusHandler == null) { accessibleAWTFocusHandler = new
+     * AccessibleAWTFocusHandler();
+     * Component.this.addFocusListener(accessibleAWTFocusHandler); } } finally {
+     * toolkit.unlockAWT(); } } public boolean contains(Point p) {
+     * toolkit.lockAWT(); try { return Component.this.contains(p); } finally {
+     * toolkit.unlockAWT(); } } public Accessible getAccessibleAt(Point arg0) {
+     * toolkit.lockAWT(); try { return null; } finally { toolkit.unlockAWT(); }
+     * } public Color getBackground() { toolkit.lockAWT(); try { return
+     * Component.this.getBackground(); } finally { toolkit.unlockAWT(); } }
+     * public Rectangle getBounds() { toolkit.lockAWT(); try { return
+     * Component.this.getBounds(); } finally { toolkit.unlockAWT(); } } public
+     * Cursor getCursor() { toolkit.lockAWT(); try { return
+     * Component.this.getCursor(); } finally { toolkit.unlockAWT(); } } public
+     * Font getFont() { toolkit.lockAWT(); try { return
+     * Component.this.getFont(); } finally { toolkit.unlockAWT(); } } public
+     * FontMetrics getFontMetrics(Font f) { toolkit.lockAWT(); try { return
+     * Component.this.getFontMetrics(f); } finally { toolkit.unlockAWT(); } }
+     * public Color getForeground() { toolkit.lockAWT(); try { return
+     * Component.this.getForeground(); } finally { toolkit.unlockAWT(); } }
+     * public Point getLocation() { toolkit.lockAWT(); try { return
+     * Component.this.getLocation(); } finally { toolkit.unlockAWT(); } } public
+     * Point getLocationOnScreen() { toolkit.lockAWT(); try { return
+     * Component.this.getLocationOnScreen(); } finally { toolkit.unlockAWT(); }
+     * } public Dimension getSize() { toolkit.lockAWT(); try { return
+     * Component.this.getSize(); } finally { toolkit.unlockAWT(); } } public
+     * boolean isEnabled() { toolkit.lockAWT(); try { return
+     * Component.this.isEnabled(); } finally { toolkit.unlockAWT(); } } public
+     * boolean isFocusTraversable() { toolkit.lockAWT(); try { return
+     * Component.this.isFocusTraversable(); } finally { toolkit.unlockAWT(); } }
+     * public boolean isShowing() { toolkit.lockAWT(); try { return
+     * Component.this.isShowing(); } finally { toolkit.unlockAWT(); } } public
+     * boolean isVisible() { toolkit.lockAWT(); try { return
+     * Component.this.isVisible(); } finally { toolkit.unlockAWT(); } } public
+     * void removeFocusListener(FocusListener l) {
+     * Component.this.removeFocusListener(l); }
+     * @Override public void removePropertyChangeListener(PropertyChangeListener
+     * listener) { toolkit.lockAWT(); try {
+     * super.removePropertyChangeListener(listener); listenersCount--; if
+     * (listenersCount > 0) { return; } // if there are no more listeners,
+     * remove handlers:
+     * Component.this.removeFocusListener(accessibleAWTFocusHandler);
+     * Component.this.removeComponentListener(accessibleAWTComponentHandler);
+     * accessibleAWTComponentHandler = null; accessibleAWTFocusHandler = null; }
+     * finally { toolkit.unlockAWT(); } } public void requestFocus() {
+     * toolkit.lockAWT(); try { Component.this.requestFocus(); } finally {
+     * toolkit.unlockAWT(); } } public void setBackground(Color color) {
+     * toolkit.lockAWT(); try { Component.this.setBackground(color); } finally {
+     * toolkit.unlockAWT(); } } public void setBounds(Rectangle r) {
+     * toolkit.lockAWT(); try { Component.this.setBounds(r); } finally {
+     * toolkit.unlockAWT(); } } public void setCursor(Cursor cursor) {
+     * toolkit.lockAWT(); try { Component.this.setCursor(cursor); } finally {
+     * toolkit.unlockAWT(); } } public void setEnabled(boolean enabled) {
+     * toolkit.lockAWT(); try { Component.this.setEnabled(enabled); } finally {
+     * toolkit.unlockAWT(); } } public void setFont(Font f) { toolkit.lockAWT();
+     * try { Component.this.setFont(f); } finally { toolkit.unlockAWT(); } }
+     * public void setForeground(Color color) { toolkit.lockAWT(); try {
+     * Component.this.setForeground(color); } finally { toolkit.unlockAWT(); } }
+     * public void setLocation(Point p) { toolkit.lockAWT(); try {
+     * Component.this.setLocation(p); } finally { toolkit.unlockAWT(); } }
+     * public void setSize(Dimension size) { toolkit.lockAWT(); try {
+     * Component.this.setSize(size); } finally { toolkit.unlockAWT(); } } public
+     * void setVisible(boolean visible) { toolkit.lockAWT(); try {
+     * Component.this.setVisible(visible); } finally { toolkit.unlockAWT(); } }
+     * @Override public Accessible getAccessibleParent() { toolkit.lockAWT();
+     * try { Accessible aParent = super.getAccessibleParent(); if (aParent !=
+     * null) { return aParent; } Container parent = getParent(); return (parent
+     * instanceof Accessible ? (Accessible) parent : null); } finally {
+     * toolkit.unlockAWT(); } }
+     * @Override public Accessible getAccessibleChild(int i) {
+     * toolkit.lockAWT(); try { return null; } finally { toolkit.unlockAWT(); }
+     * }
+     * @Override public int getAccessibleChildrenCount() { toolkit.lockAWT();
+     * try { return 0; } finally { toolkit.unlockAWT(); } }
+     * @Override public AccessibleComponent getAccessibleComponent() { return
+     * this; }
+     * @Override public String getAccessibleDescription() { return
+     * super.getAccessibleDescription(); // why override? }
+     * @Override public int getAccessibleIndexInParent() { toolkit.lockAWT();
+     * try { if (getAccessibleParent() == null) { return -1; } int count = 0;
+     * Container parent = getParent(); for (int i = 0; i <
+     * parent.getComponentCount(); i++) { Component aComp =
+     * parent.getComponent(i); if (aComp instanceof Accessible) { if (aComp ==
+     * Component.this) { return count; } ++count; } } return -1; } finally {
+     * toolkit.unlockAWT(); } }
+     * @Override public AccessibleRole getAccessibleRole() { toolkit.lockAWT();
+     * try { return AccessibleRole.AWT_COMPONENT; } finally {
+     * toolkit.unlockAWT(); } }
+     * @Override public AccessibleStateSet getAccessibleStateSet() {
+     * toolkit.lockAWT(); try { AccessibleStateSet set = new
+     * AccessibleStateSet(); if (isEnabled()) {
+     * set.add(AccessibleState.ENABLED); } if (isFocusable()) {
+     * set.add(AccessibleState.FOCUSABLE); } if (hasFocus()) {
+     * set.add(AccessibleState.FOCUSED); } if (isOpaque()) {
+     * set.add(AccessibleState.OPAQUE); } if (isShowing()) {
+     * set.add(AccessibleState.SHOWING); } if (isVisible()) {
+     * set.add(AccessibleState.VISIBLE); } return set; } finally {
+     * toolkit.unlockAWT(); } }
+     * @Override public Locale getLocale() throws IllegalComponentStateException
+     * { toolkit.lockAWT(); try { return Component.this.getLocale(); } finally {
+     * toolkit.unlockAWT(); } } }
+     */
     /**
-     * The BltBufferStrategy class provides opportunity of blitting 
-     * offscreen surfaces to a component. For more information on 
-     * blitting, see <a href="http://en.wikipedia.org/wiki/Bit_blit">Bit blit</a>.
+     * The BltBufferStrategy class provides opportunity of blitting offscreen
+     * surfaces to a component. For more information on blitting, see <a
+     * href="http://en.wikipedia.org/wiki/Bit_blit">Bit blit</a>.
+     * 
+     * @since Android 1.0
      */
     protected class BltBufferStrategy extends BufferStrategy {
-        
-        /** The back buffers. */
+
+        /**
+         * The back buffers.
+         */
         protected VolatileImage[] backBuffers;
 
-        /** The caps. */
+        /**
+         * The caps.
+         */
         protected BufferCapabilities caps;
 
-        /** The width. */
+        /**
+         * The width.
+         */
         protected int width;
 
-        /** The height. */
+        /**
+         * The height.
+         */
         protected int height;
 
-        /** The validated contents. */
+        /**
+         * The validated contents.
+         */
         protected boolean validatedContents;
 
         /**
          * Instantiates a new BltBufferStrategy buffer strategy.
          * 
-         * @param numBuffers the number of buffers.
-         * @param caps the BufferCapabilities.
-         * 
-         * @throws NotImplementedException the not implemented exception.
+         * @param numBuffers
+         *            the number of buffers.
+         * @param caps
+         *            the BufferCapabilities.
+         * @throws NotImplementedException
+         *             the not implemented exception.
          */
-        protected BltBufferStrategy(int numBuffers, BufferCapabilities caps) throws org.apache.harmony.luni.util.NotImplementedException {
+        protected BltBufferStrategy(int numBuffers, BufferCapabilities caps)
+                throws org.apache.harmony.luni.util.NotImplementedException {
             if (true) {
                 throw new RuntimeException("Method is not implemented"); //$NON-NLS-1$
             }
         }
 
         /**
-         * Returns true if the drawing buffer has been lost since the last call 
-         * to getDrawGraphics. 
+         * Returns true if the drawing buffer has been lost since the last call
+         * to getDrawGraphics.
          * 
-         * @return true if the drawing buffer has been lost since the last call 
-         * to getDrawGraphics, false otherwise.
-         *  
+         * @return true if the drawing buffer has been lost since the last call
+         *         to getDrawGraphics, false otherwise.
          * @see java.awt.image.BufferStrategy#contentsLost()
          */
         @Override
@@ -634,9 +360,8 @@
          * state and reinitialized to the default background color.
          * 
          * @return true if the drawing buffer has been restored from a lost
-         * state and reinitialized to the default background color,
-         * false otherwise.
-         *           
+         *         state and reinitialized to the default background color,
+         *         false otherwise.
          * @see java.awt.image.BufferStrategy#contentsRestored()
          */
         @Override
@@ -650,7 +375,8 @@
         /**
          * Creates the back buffers.
          * 
-         * @param numBuffers the number of buffers.
+         * @param numBuffers
+         *            the number of buffers.
          */
         protected void createBackBuffers(int numBuffers) {
             if (true) {
@@ -662,19 +388,17 @@
          * Returns the BufferCapabilities of the buffer strategy.
          * 
          * @return the BufferCapabilities.
-         * 
          * @see java.awt.image.BufferStrategy#getCapabilities()
          */
         @Override
         public BufferCapabilities getCapabilities() {
-            return (BufferCapabilities) caps.clone();
+            return (BufferCapabilities)caps.clone();
         }
 
         /**
          * Gets Graphics of current buffer strategy.
          * 
          * @return the Graphics of current buffer strategy.
-         * 
          * @see java.awt.image.BufferStrategy#getDrawGraphics()
          */
         @Override
@@ -708,56 +432,68 @@
     }
 
     /**
-     * The FlipBufferStrategy class is for flipping buffers on a component. 
+     * The FlipBufferStrategy class is for flipping buffers on a component.
+     * 
+     * @since Android 1.0
      */
     protected class FlipBufferStrategy extends BufferStrategy {
-        
-        /** The Buffer Capabilities. */
+
+        /**
+         * The Buffer Capabilities.
+         */
         protected BufferCapabilities caps;
 
-        /** The drawing buffer. */
+        /**
+         * The drawing buffer.
+         */
         protected Image drawBuffer;
 
-        /** The drawing VolatileImage buffer. */
+        /**
+         * The drawing VolatileImage buffer.
+         */
         protected VolatileImage drawVBuffer;
 
-        /** The number of buffers. */
+        /**
+         * The number of buffers.
+         */
         protected int numBuffers;
 
-        /** The validated contents indicates if the drawing buffer is restored from
-         * lost state. */
+        /**
+         * The validated contents indicates if the drawing buffer is restored
+         * from lost state.
+         */
         protected boolean validatedContents;
 
         /**
          * Instantiates a new flip buffer strategy.
          * 
-         * @param numBuffers the number of buffers.
-         * @param caps the BufferCapabilities.
-         * 
-         * @throws AWTException if the capabilities supplied could not 
-         * be supported or met.
+         * @param numBuffers
+         *            the number of buffers.
+         * @param caps
+         *            the BufferCapabilities.
+         * @throws AWTException
+         *             if the capabilities supplied could not be supported or
+         *             met.
          */
-        protected FlipBufferStrategy(int numBuffers, BufferCapabilities caps)
-                throws AWTException {
-            //???AWT
+        protected FlipBufferStrategy(int numBuffers, BufferCapabilities caps) throws AWTException {
+            // ???AWT
             /*
-            if (!(Component.this instanceof Window) && !(Component.this instanceof Canvas)) {
-                // awt.14B=Only Canvas or Window is allowed
-                throw new ClassCastException(Messages.getString("awt.14B")); //$NON-NLS-1$
-            }
-            */
+             * if (!(Component.this instanceof Window) && !(Component.this
+             * instanceof Canvas)) { // awt.14B=Only Canvas or Window is allowed
+             * throw new ClassCastException(Messages.getString("awt.14B"));
+             * //$NON-NLS-1$ }
+             */
             // TODO: throw new AWTException("Capabilities are not supported");
             this.numBuffers = numBuffers;
-            this.caps = (BufferCapabilities) caps.clone();
+            this.caps = (BufferCapabilities)caps.clone();
         }
 
         /**
-         * Returns true if the drawing buffer has been lost since the last call 
-         * to getDrawGraphics. 
+         * Returns true if the drawing buffer has been lost since the last call
+         * to getDrawGraphics.
          * 
-         * @return true if the drawing buffer has been lost since the last call 
-         * to getDrawGraphics, false otherwise.
-         * 
+         * @return true if the drawing buffer has been lost since the last call
+         *         to getDrawGraphics, false otherwise.
          * @see java.awt.image.BufferStrategy#contentsLost()
          */
         @Override
@@ -773,9 +509,8 @@
          * state and reinitialized to the default background color.
          * 
          * @return true if the drawing buffer has been restored from a lost
-         * state and reinitialized to the default background color,
-         * false otherwise. 
-         * 
+         *         state and reinitialized to the default background color,
+         *         false otherwise.
          * @see java.awt.image.BufferStrategy#contentsRestored()
          */
         @Override
@@ -789,14 +524,14 @@
         /**
          * Creates flipping buffers with the specified buffer capabilities.
          * 
-         * @param numBuffers the number of buffers.
-         * @param caps the BufferCapabilities.
-         * 
-         * @throws AWTException if the capabilities could not be 
-         * supported or met.
+         * @param numBuffers
+         *            the number of buffers.
+         * @param caps
+         *            the BufferCapabilities.
+         * @throws AWTException
+         *             if the capabilities could not be supported or met.
          */
-        protected void createBuffers(int numBuffers, BufferCapabilities caps)
-                throws AWTException {
+        protected void createBuffers(int numBuffers, BufferCapabilities caps) throws AWTException {
             if (numBuffers < 2) {
                 // awt.14C=Number of buffers must be greater than one
                 throw new IllegalArgumentException(Messages.getString("awt.14C")); //$NON-NLS-1$
@@ -827,7 +562,8 @@
         /**
          * Flips the contents of the back buffer to the front buffer.
          * 
-         * @param flipAction the flip action.
+         * @param flipAction
+         *            the flip action.
          */
         protected void flip(BufferCapabilities.FlipContents flipAction) {
             if (true) {
@@ -851,19 +587,17 @@
          * Returns the BufferCapabilities of the buffer strategy.
          * 
          * @return the BufferCapabilities.
-         * 
          * @see java.awt.image.BufferStrategy#getCapabilities()
          */
         @Override
         public BufferCapabilities getCapabilities() {
-            return (BufferCapabilities) caps.clone();
+            return (BufferCapabilities)caps.clone();
         }
 
         /**
          * Gets Graphics of current buffer strategy.
          * 
          * @return the Graphics of current buffer strategy.
-         * 
          * @see java.awt.image.BufferStrategy#getDrawGraphics()
          */
         @Override
@@ -900,14 +634,16 @@
      * The internal component's state utilized by the visual theme.
      */
     class ComponentState implements State {
-        
-        /** The default minimum size. */
+
+        /**
+         * The default minimum size.
+         */
         private Dimension defaultMinimumSize = new Dimension();
 
         /**
          * Checks if the component is enabled.
          * 
-         * @return true, if the component is enabled
+         * @return true, if the component is enabled.
          */
         public boolean isEnabled() {
             return enabled;
@@ -916,7 +652,7 @@
         /**
          * Checks if the component is visible.
          * 
-         * @return true, if the component is visible
+         * @return true, if the component is visible.
          */
         public boolean isVisible() {
             return visible;
@@ -925,17 +661,17 @@
         /**
          * Checks if is focused.
          * 
-         * @return true, if is focused
+         * @return true, if is focused.
          */
         public boolean isFocused() {
-            //???AWT: return isFocusOwner();
+            // ???AWT: return isFocusOwner();
             return false;
         }
 
         /**
          * Gets the font.
          * 
-         * @return the font
+         * @return the font.
          */
         public Font getFont() {
             return Component.this.getFont();
@@ -944,7 +680,7 @@
         /**
          * Checks if the font has been set.
          * 
-         * @return true, if the font has been set
+         * @return true, if the font has been set.
          */
         public boolean isFontSet() {
             return font != null;
@@ -953,7 +689,7 @@
         /**
          * Gets the background color.
          * 
-         * @return the background color
+         * @return the background color.
          */
         public Color getBackground() {
             Color c = Component.this.getBackground();
@@ -963,7 +699,7 @@
         /**
          * Checks if the background is set.
          * 
-         * @return true, if the background is set
+         * @return true, if the background is set.
          */
         public boolean isBackgroundSet() {
             return backColor != null;
@@ -972,7 +708,7 @@
         /**
          * Gets the text color.
          * 
-         * @return the text color
+         * @return the text color.
          */
         public Color getTextColor() {
             Color c = getForeground();
@@ -982,7 +718,7 @@
         /**
          * Checks if the text color is set.
          * 
-         * @return true, if the text color is set
+         * @return true, if the text color is set.
          */
         public boolean isTextColorSet() {
             return foreColor != null;
@@ -991,7 +727,7 @@
         /**
          * Gets the font metrics.
          * 
-         * @return the font metrics
+         * @return the font metrics.
          */
         @SuppressWarnings("deprecation")
         public FontMetrics getFontMetrics() {
@@ -1001,7 +737,7 @@
         /**
          * Gets the bounding rectangle.
          * 
-         * @return the bounding rectangle
+         * @return the bounding rectangle.
          */
         public Rectangle getBounds() {
             return new Rectangle(x, y, w, h);
@@ -1010,7 +746,7 @@
         /**
          * Gets the size of the bounding rectangle.
          * 
-         * @return the size of the bounding rectangle
+         * @return the size of the bounding rectangle.
          */
         public Dimension getSize() {
             return new Dimension(w, h);
@@ -1019,7 +755,7 @@
         /**
          * Gets the window id.
          * 
-         * @return the window id
+         * @return the window id.
          */
         public long getWindowId() {
             NativeWindow win = getNativeWindow();
@@ -1029,7 +765,7 @@
         /**
          * Gets the default minimum size.
          * 
-         * @return the default minimum size
+         * @return the default minimum size.
          */
         public Dimension getDefaultMinimumSize() {
             if (defaultMinimumSize == null) {
@@ -1041,7 +777,8 @@
         /**
          * Sets the default minimum size.
          * 
-         * @param size the new default minimum size
+         * @param size
+         *            the new default minimum size.
          */
         public void setDefaultMinimumSize(Dimension size) {
             defaultMinimumSize = size;
@@ -1062,179 +799,283 @@
         }
     }
 
-    //???AWT: private transient AccessibleContext accessibleContext;
+    // ???AWT: private transient AccessibleContext accessibleContext;
 
-    /** The behaviour. */
+    /**
+     * The behaviour.
+     */
     final transient ComponentBehavior behaviour;
 
-    //???AWT: Container parent;
+    // ???AWT: Container parent;
 
-    /** The name. */
+    /**
+     * The name.
+     */
     private String name;
 
-    /** The auto name. */
+    /**
+     * The auto name.
+     */
     private boolean autoName = true;
 
-    /** The font. */
+    /**
+     * The font.
+     */
     private Font font;
 
-    /** The back color. */
+    /**
+     * The back color.
+     */
     private Color backColor;
 
-    /** The fore color. */
+    /**
+     * The fore color.
+     */
     private Color foreColor;
 
-    /** The deprecated event handler. */
+    /**
+     * The deprecated event handler.
+     */
     boolean deprecatedEventHandler = true;
 
-    /** The enabled events. */
+    /**
+     * The enabled events.
+     */
     private long enabledEvents;
 
-    /** The enabled awt events. */
+    /**
+     * The enabled AWT events.
+     */
     private long enabledAWTEvents;
 
-    /** The component listeners. */
+    /**
+     * The component listeners.
+     */
     private final AWTListenerList<ComponentListener> componentListeners = new AWTListenerList<ComponentListener>(
             this);
 
-    /** The focus listeners. */
+    /**
+     * The focus listeners.
+     */
     private final AWTListenerList<FocusListener> focusListeners = new AWTListenerList<FocusListener>(
             this);
 
-    /** The hierarchy listeners. */
+    /**
+     * The hierarchy listeners.
+     */
     private final AWTListenerList<HierarchyListener> hierarchyListeners = new AWTListenerList<HierarchyListener>(
             this);
 
-    /** The hierarchy bounds listeners. */
+    /**
+     * The hierarchy bounds listeners.
+     */
     private final AWTListenerList<HierarchyBoundsListener> hierarchyBoundsListeners = new AWTListenerList<HierarchyBoundsListener>(
             this);
 
-    /** The key listeners. */
-    private final AWTListenerList<KeyListener> keyListeners = new AWTListenerList<KeyListener>(
-            this);
+    /**
+     * The key listeners.
+     */
+    private final AWTListenerList<KeyListener> keyListeners = new AWTListenerList<KeyListener>(this);
 
-    /** The mouse listeners. */
+    /**
+     * The mouse listeners.
+     */
     private final AWTListenerList<MouseListener> mouseListeners = new AWTListenerList<MouseListener>(
             this);
 
-    /** The mouse motion listeners. */
+    /**
+     * The mouse motion listeners.
+     */
     private final AWTListenerList<MouseMotionListener> mouseMotionListeners = new AWTListenerList<MouseMotionListener>(
             this);
 
-    /** The mouse wheel listeners. */
+    /**
+     * The mouse wheel listeners.
+     */
     private final AWTListenerList<MouseWheelListener> mouseWheelListeners = new AWTListenerList<MouseWheelListener>(
             this);
 
-    /** The input method listeners. */
+    /**
+     * The input method listeners.
+     */
     private final AWTListenerList<InputMethodListener> inputMethodListeners = new AWTListenerList<InputMethodListener>(
             this);
 
-    /** The x. */
+    /**
+     * The x.
+     */
     int x;
 
-    /** The y. */
+    /**
+     * The y.
+     */
     int y;
 
-    /** The w. */
+    /**
+     * The w.
+     */
     int w;
 
-    /** The h. */
+    /**
+     * The h.
+     */
     int h;
 
-    /** The maximum size. */
+    /**
+     * The maximum size.
+     */
     private Dimension maximumSize;
 
-    /** The minimum size. */
+    /**
+     * The minimum size.
+     */
     private Dimension minimumSize;
 
-    /** The preferred size. */
+    /**
+     * The preferred size.
+     */
     private Dimension preferredSize;
 
-    /** The bounds mask param. */
+    /**
+     * The bounds mask param.
+     */
     private int boundsMaskParam;
 
-    /** The ignore repaint. */
+    /**
+     * The ignore repaint.
+     */
     private boolean ignoreRepaint;
 
-    /** The enabled. */
+    /**
+     * The enabled.
+     */
     private boolean enabled = true;
 
-    /** The input methods enabled. */
+    /**
+     * The input methods enabled.
+     */
     private boolean inputMethodsEnabled = true;
 
-    /** The dispatch to im. */
+    /**
+     * The dispatch to im.
+     */
     transient boolean dispatchToIM = true;
 
-    /** The focusable. */
+    /**
+     * The focusable.
+     */
     private boolean focusable = true; // By default, all Components return
 
     // true from isFocusable() method
-    /** The visible. */
+    /**
+     * The visible.
+     */
     boolean visible = true;
 
-    /** The called set focusable. */
+    /**
+     * The called set focusable.
+     */
     private boolean calledSetFocusable;
 
-    /** The overriden is focusable. */
+    /**
+     * The overridden is focusable.
+     */
     private boolean overridenIsFocusable = true;
 
-    /** The focus traversal keys enabled. */
+    /**
+     * The focus traversal keys enabled.
+     */
     private boolean focusTraversalKeysEnabled = true;
 
-    /** Possible keys are: FORWARD_TRAVERSAL_KEYS, BACKWARD_TRAVERSAL_KEYS, UP_CYCLE_TRAVERSAL_KEYS. */
+    /**
+     * Possible keys are: FORWARD_TRAVERSAL_KEYS, BACKWARD_TRAVERSAL_KEYS,
+     * UP_CYCLE_TRAVERSAL_KEYS.
+     */
     private final Map<Integer, Set<? extends AWTKeyStroke>> traversalKeys = new HashMap<Integer, Set<? extends AWTKeyStroke>>();
 
-    /** The traversal i ds. */
+    /**
+     * The traversal i ds.
+     */
     int[] traversalIDs;
 
-    /** The locale. */
+    /**
+     * The locale.
+     */
     private Locale locale;
 
-    /** The orientation. */
+    /**
+     * The orientation.
+     */
     private ComponentOrientation orientation;
 
-    /** The property change support. */
+    /**
+     * The property change support.
+     */
     private PropertyChangeSupport propertyChangeSupport;
 
-    //???AWT: private ArrayList<PopupMenu> popups;
+    // ???AWT: private ArrayList<PopupMenu> popups;
 
-    /** The coalescer. */
+    /**
+     * The coalescer.
+     */
     private boolean coalescer;
 
-    /** The events table. */
+    /**
+     * The events table.
+     */
     private Hashtable<Integer, LinkedList<AWTEvent>> eventsTable;
 
-    /** Cashed reference used during EventQueue.postEvent() */
+    /**
+     * Cashed reference used during EventQueue.postEvent()
+     */
     private LinkedList<AWTEvent> eventsList;
 
-    /** The hierarchy changing counter. */
+    /**
+     * The hierarchy changing counter.
+     */
     private int hierarchyChangingCounter;
 
-    /** The was showing. */
+    /**
+     * The was showing.
+     */
     private boolean wasShowing;
 
-    /** The was displayable. */
+    /**
+     * The was displayable.
+     */
     private boolean wasDisplayable;
 
-    /** The cursor. */
+    /**
+     * The cursor.
+     */
     Cursor cursor;
 
-    //???AWT: DropTarget dropTarget;
+    // ???AWT: DropTarget dropTarget;
 
-    /** The mouse exited expected. */
+    /**
+     * The mouse exited expected.
+     */
     private boolean mouseExitedExpected;
 
-    /** The repaint region. */
+    /**
+     * The repaint region.
+     */
     transient MultiRectArea repaintRegion;
 
-    //???AWT: transient RedrawManager redrawManager;
-    /** The redraw manager. */
+    // ???AWT: transient RedrawManager redrawManager;
+    /**
+     * The redraw manager.
+     */
     transient Object redrawManager;
 
-    /** The valid. */
+    /**
+     * The valid.
+     */
     private boolean valid;
 
-    /** The updated images. */
+    /**
+     * The updated images.
+     */
     private HashMap<Image, ImageParameters> updatedImages;
 
     /**
@@ -1244,7 +1085,9 @@
     private class ComponentLock {
     }
 
-    /** The component lock. */
+    /**
+     * The component lock.
+     */
     private final transient Object componentLock = new ComponentLock();
     static {
         PrivilegedAction<String[]> action = new PrivilegedAction<String[]>() {
@@ -1276,17 +1119,16 @@
         try {
             orientation = ComponentOrientation.UNKNOWN;
             redrawManager = null;
-            //???AWT
+            // ???AWT
             /*
-            traversalIDs = this instanceof Container ? KeyboardFocusManager.contTraversalIDs
-                    : KeyboardFocusManager.compTraversalIDs;
-            for (int element : traversalIDs) {
-                traversalKeys.put(new Integer(element), null);
-            }
-            behaviour = createBehavior();
-            */
+             * traversalIDs = this instanceof Container ?
+             * KeyboardFocusManager.contTraversalIDs :
+             * KeyboardFocusManager.compTraversalIDs; for (int element :
+             * traversalIDs) { traversalKeys.put(new Integer(element), null); }
+             * behaviour = createBehavior();
+             */
             behaviour = null;
-            
+
             deriveCoalescerFlag();
         } finally {
             toolkit.unlockAWT();
@@ -1307,8 +1149,8 @@
                 for (Class<?> c = thisClass; c != Component.class; c = c.getSuperclass()) {
                     try {
                         coalesceMethod = c.getDeclaredMethod("coalesceEvents", new Class[] { //$NON-NLS-1$
-                                Class.forName("java.awt.AWTEvent"), //$NON-NLS-1$
-                                Class.forName("java.awt.AWTEvent") }); //$NON-NLS-1$
+                                        Class.forName("java.awt.AWTEvent"), //$NON-NLS-1$
+                                        Class.forName("java.awt.AWTEvent")}); //$NON-NLS-1$
                     } catch (Exception e) {
                     }
                     if (coalesceMethod != null) {
@@ -1332,7 +1174,8 @@
     /**
      * Sets the name of the Component.
      * 
-     * @param name the new name of the Component.
+     * @param name
+     *            the new name of the Component.
      */
     public void setName(String name) {
         String oldName;
@@ -1367,15 +1210,15 @@
     /**
      * Auto name.
      * 
-     * @return the string
+     * @return the string.
      */
     String autoName() {
         String name = getClass().getName();
         if (name.indexOf("$") != -1) { //$NON-NLS-1$
             return null;
         }
-        //???AWT
-        //int number = toolkit.autoNumber.nextComponent++;
+        // ???AWT
+        // int number = toolkit.autoNumber.nextComponent++;
         int number = 0;
         name = name.substring(name.lastIndexOf(".") + 1) + Integer.toString(number); //$NON-NLS-1$
         return name;
@@ -1390,10 +1233,8 @@
     public String toString() {
         /*
          * The format is based on 1.5 release behavior which can be revealed by
-         * the following code:
-         * 
-         * Component c = new Component(){}; c.setVisible(false);
-         * System.out.println(c);
+         * the following code: Component c = new Component(){};
+         * c.setVisible(false); System.out.println(c);
          */
         toolkit.lockAWT();
         try {
@@ -1403,32 +1244,21 @@
         }
     }
 
-    //???AWT
+    // ???AWT
     /*
-    public void add(PopupMenu popup) {
-        toolkit.lockAWT();
-        try {
-            if (popup.getParent() == this) {
-                return;
-            }
-            if (popups == null) {
-                popups = new ArrayList<PopupMenu>();
-            }
-            popup.setParent(this);
-            popups.add(popup);
-        } finally {
-            toolkit.unlockAWT();
-        }
-    }
-    */
+     * public void add(PopupMenu popup) { toolkit.lockAWT(); try { if
+     * (popup.getParent() == this) { return; } if (popups == null) { popups =
+     * new ArrayList<PopupMenu>(); } popup.setParent(this); popups.add(popup); }
+     * finally { toolkit.unlockAWT(); } }
+     */
 
     /**
      * Returns true, if the component contains the specified Point.
      * 
-     * @param p the Point.
-     * 
-     * @return true, if the component contains the specified Point,
-     * false otherwise.
+     * @param p
+     *            the Point.
+     * @return true, if the component contains the specified Point, false
+     *         otherwise.
      */
     public boolean contains(Point p) {
         toolkit.lockAWT();
@@ -1440,14 +1270,15 @@
     }
 
     /**
-     * Returns true, if the component contains the point with 
-     * the specified coordinates.
+     * Returns true, if the component contains the point with the specified
+     * coordinates.
      * 
-     * @param x the x coordinate.
-     * @param y the y coordinate.
-     * 
-     * @return true, if the component contains the point with 
-     * the specified coordinates, false otherwise.
+     * @param x
+     *            the x coordinate.
+     * @param y
+     *            the y coordinate.
+     * @return true, if the component contains the point with the specified
+     *         coordinates, false otherwise.
      */
     public boolean contains(int x, int y) {
         toolkit.lockAWT();
@@ -1462,7 +1293,6 @@
      * Deprecated: replaced by replaced by getSize() method.
      * 
      * @return the dimension.
-     * 
      * @deprecated Replaced by getSize() method.
      */
     @Deprecated
@@ -1474,90 +1304,63 @@
             toolkit.unlockAWT();
         }
     }
-    
-    //???AWT
+
+    // ???AWT
     /*
-    public Container getParent() {
-        toolkit.lockAWT();
-        try {
-            return parent;
-        } finally {
-            toolkit.unlockAWT();
-        }
-    }
-    */
-    
+     * public Container getParent() { toolkit.lockAWT(); try { return parent; }
+     * finally { toolkit.unlockAWT(); } }
+     */
+
     /**
      * List.
      * 
-     * @param out the out
-     * @param indent the indent
-     * 
+     * @param out
+     *            the out.
+     * @param indent
+     *            the indent
      * @return the nearest heavyweight ancestor in hierarchy or
-     * <code>null</code> if not found
+     *         <code>null</code> if not found.
      */
-    //???AWT
+    // ???AWT
     /*
-    Component getHWAncestor() {
-        return (parent != null ? parent.getHWSurface() : null);
-    }
-    */
-    
+     * Component getHWAncestor() { return (parent != null ?
+     * parent.getHWSurface() : null); }
+     */
+
     /**
      * @return heavyweight component that is equal to or is a nearest
      *         heavyweight container of the current component, or
-     *         <code>null</code> if not found
+     *         <code>null</code> if not found.
      */
-    //???AWT
+    // ???AWT
     /*
-    Component getHWSurface() {
-        Component parent;
-        for (parent = this; (parent != null) && (parent.isLightweight()); parent = parent
-                .getParent()) {
-            ;
-        }
-        return parent;
-    }
+     * Component getHWSurface() { Component parent; for (parent = this; (parent
+     * != null) && (parent.isLightweight()); parent = parent .getParent()) { ; }
+     * return parent; } Window getWindowAncestor() { Component par; for (par =
+     * this; par != null && !(par instanceof Window); par = par.getParent()) { ;
+     * } return (Window) par; }
+     */
 
-    Window getWindowAncestor() {
-        Component par;
-        for (par = this; par != null && !(par instanceof Window); par = par.getParent()) {
-            ;
-        }
-        return (Window) par;
-    }
-    */
-    
-    /** To be called by container */
-    //???AWT
-    /*
-    void setParent(Container parent) {
-        this.parent = parent;
-        setRedrawManager();
-    }
-
-    void setRedrawManager() {
-        redrawManager = getRedrawManager();
-    }
-
-    public void remove(MenuComponent menu) {
-        toolkit.lockAWT();
-        try {
-            if (menu.getParent() == this) {
-                menu.setParent(null);
-                popups.remove(menu);
-            }
-        } finally {
-            toolkit.unlockAWT();
-        }
-    }
-    */
     /**
-     * Prints a list of this component with the specified number of 
-     * leading whitespace characters to the specified PrintStream.
+     * To be called by container
+     */
+    // ???AWT
+    /*
+     * void setParent(Container parent) { this.parent = parent;
+     * setRedrawManager(); } void setRedrawManager() { redrawManager =
+     * getRedrawManager(); } public void remove(MenuComponent menu) {
+     * toolkit.lockAWT(); try { if (menu.getParent() == this) {
+     * menu.setParent(null); popups.remove(menu); } } finally {
+     * toolkit.unlockAWT(); } }
+     */
+    /**
+     * Prints a list of this component with the specified number of leading
+     * whitespace characters to the specified PrintStream.
      * 
-     * @param out the output PrintStream object.
-     * @param indent how many leading whitespace characters to prepend
+     * @param out
+     *            the output PrintStream object.
+     * @param indent
+     *            how many leading whitespace characters to prepend.
      */
     public void list(PrintStream out, int indent) {
         toolkit.lockAWT();
@@ -1571,7 +1374,8 @@
     /**
      * Prints a list of this component to the specified PrintWriter.
      * 
-     * @param out the output PrintWriter object.
+     * @param out
+     *            the output PrintWriter object.
      */
     public void list(PrintWriter out) {
         toolkit.lockAWT();
@@ -1583,11 +1387,13 @@
     }
 
     /**
-     * Prints a list of this component with the specified number of 
-     * leading whitespace characters to the specified PrintWriter.
+     * Prints a list of this component with the specified number of leading
+     * whitespace characters to the specified PrintWriter.
      * 
-     * @param out the output PrintWriter object.
-     * @param indent how many leading whitespace characters to prepend
+     * @param out
+     *            the output PrintWriter object.
+     * @param indent
+     *            how many leading whitespace characters to prepend.
      */
     public void list(PrintWriter out, int indent) {
         toolkit.lockAWT();
@@ -1599,13 +1405,12 @@
     }
 
     /**
-     * Gets a string composed of the desired number of 
-     * whitespace characters.
+     * Gets a string composed of the desired number of whitespace characters.
      * 
-     * @param indent the length of the String to return
-     * 
-     * @return the string composed of the desired number of 
-     * whitespace characters
+     * @param indent
+     *            the length of the String to return.
+     * @return the string composed of the desired number of whitespace
+     *         characters.
      */
     String getIndentStr(int indent) {
         char[] ind = new char[indent];
@@ -1616,9 +1421,10 @@
     }
 
     /**
-     * Prints a list of this component to the specified PrintStream
+     * Prints a list of this component to the specified PrintStream.
      * 
-     * @param out the output PrintStream object.
+     * @param out
+     *            the output PrintStream object.
      */
     public void list(PrintStream out) {
         toolkit.lockAWT();
@@ -1631,8 +1437,7 @@
     }
 
     /**
-     * Prints a list of this component to the standard system 
-     * output stream.
+     * Prints a list of this component to the standard system output stream.
      */
     public void list() {
         toolkit.lockAWT();
@@ -1644,9 +1449,10 @@
     }
 
     /**
-     * Prints this component. 
+     * Prints this component.
      * 
-     * @param g the Graphics to be used for painting. 
+     * @param g
+     *            the Graphics to be used for painting.
      */
     public void print(Graphics g) {
         toolkit.lockAWT();
@@ -1660,7 +1466,8 @@
     /**
      * Prints the component and all of its subcomponents.
      * 
-     * @param g the Graphics to be used for painting.
+     * @param g
+     *            the Graphics to be used for painting.
      */
     public void printAll(Graphics g) {
         toolkit.lockAWT();
@@ -1672,11 +1479,12 @@
     }
 
     /**
-     * Sets the size of the Component specified by width and height
-     * parameters.
+     * Sets the size of the Component specified by width and height parameters.
      * 
-     * @param width the width of the Component.
-     * @param height the height of the Component.
+     * @param width
+     *            the width of the Component.
+     * @param height
+     *            the height of the Component.
      */
     public void setSize(int width, int height) {
         toolkit.lockAWT();
@@ -1690,7 +1498,8 @@
     /**
      * Sets the size of the Component specified by Dimension object.
      * 
-     * @param d the new size of the Component.
+     * @param d
+     *            the new size of the Component.
      */
     public void setSize(Dimension d) {
         toolkit.lockAWT();
@@ -1704,9 +1513,10 @@
     /**
      * Deprecated: replaced by setSize(int, int) method.
      * 
-     * @param width the width.
-     * @param height the height.
-     * 
+     * @param width
+     *            the width.
+     * @param height
+     *            the height.
      * @deprecated Replaced by setSize(int, int) method.
      */
     @Deprecated
@@ -1723,8 +1533,8 @@
     /**
      * Deprecated: replaced by setSize(int, int) method.
      * 
-     * @param size the size.
-     * 
+     * @param size
+     *            the size.
      * @deprecated Replaced by setSize(int, int) method.
      */
     @Deprecated
@@ -1740,8 +1550,7 @@
     /**
      * Checks whether or not this component is completely opaque.
      * 
-     * @return true, if this component is completely opaque, 
-     *  false by default.
+     * @return true, if this component is completely opaque, false by default.
      */
     public boolean isOpaque() {
         toolkit.lockAWT();
@@ -1765,7 +1574,7 @@
         } finally {
             toolkit.unlockAWT();
         }
-        //???AWT: fireAccessibleStateChange(AccessibleState.ENABLED, false);
+        // ???AWT: fireAccessibleStateChange(AccessibleState.ENABLED, false);
     }
 
     /**
@@ -1781,15 +1590,15 @@
         } finally {
             toolkit.unlockAWT();
         }
-        //???AWT: fireAccessibleStateChange(AccessibleState.ENABLED, true);
+        // ???AWT: fireAccessibleStateChange(AccessibleState.ENABLED, true);
     }
 
     /**
      * Enables or disable this component.
      * 
-     * @param b the boolean parameter.
-     * 
-     * @deprecated Replaced by setEnabled(boolean) method. 
+     * @param b
+     *            the boolean parameter.
+     * @deprecated Replaced by setEnabled(boolean) method.
      */
     @Deprecated
     public void enable(boolean b) {
@@ -1809,9 +1618,9 @@
      * Stores the location of this component to the specified Point object;
      * returns the point of the component's top-left corner.
      * 
-     * @param rv the Point object where the component's top-left corner
-     * position will be stored.
-     * 
+     * @param rv
+     *            the Point object where the component's top-left corner
+     *            position will be stored.
      * @return the Point which specifies the component's top-left corner.
      */
     public Point getLocation(Point rv) {
@@ -1828,8 +1637,8 @@
     }
 
     /**
-     * Gets the location of this component on the form;
-     * returns the point of the component's top-left corner.
+     * Gets the location of this component on the form; returns the point of the
+     * component's top-left corner.
      * 
      * @return the Point which specifies the component's top-left corner.
      */
@@ -1857,12 +1666,11 @@
     }
 
     /**
-     * Stores the size of this Component to the specified Dimension 
-     * object.
+     * Stores the size of this Component to the specified Dimension object.
      * 
-     * @param rv the Dimension object where the size of the Component 
-     * will be stored.
-     * 
+     * @param rv
+     *            the Dimension object where the size of the Component will be
+     *            stored.
      * @return the Dimension of this Component.
      */
     public Dimension getSize(Dimension rv) {
@@ -1879,9 +1687,9 @@
     }
 
     /**
-     * Checks whether or not this Component is valid. A component is valid 
-     * if it is correctly sized and positioned within its parent container
-     *  and all its children are also valid. 
+     * Checks whether or not this Component is valid. A component is valid if it
+     * is correctly sized and positioned within its parent container and all its
+     * children are also valid.
      * 
      * @return true, if the Component is valid, false otherwise.
      */
@@ -1898,7 +1706,6 @@
      * Deprecated: replaced by getComponentAt(int, int) method.
      * 
      * @return the Point.
-     * 
      * @deprecated Replaced by getComponentAt(int, int) method.
      */
     @Deprecated
@@ -1912,7 +1719,7 @@
     }
 
     /**
-     * Connects this Component to a native screen resource and makes it 
+     * Connects this Component to a native screen resource and makes it
      * displayable. This method not be called directly by user applications.
      */
     public void addNotify() {
@@ -1920,11 +1727,11 @@
         try {
             prepare4HierarchyChange();
             behaviour.addNotify();
-            //???AWT
-//            finishHierarchyChange(this, parent, 0);
-//            if (dropTarget != null) {
-//                dropTarget.addNotify(peer);
-//            }
+            // ???AWT
+            // finishHierarchyChange(this, parent, 0);
+            // if (dropTarget != null) {
+            // dropTarget.addNotify(peer);
+            // }
         } finally {
             toolkit.unlockAWT();
         }
@@ -1933,45 +1740,32 @@
     /**
      * Map to display.
      * 
-     * @param b the b
+     * @param b
+     *            the b.
      */
     void mapToDisplay(boolean b) {
-        //???AWT
+        // ???AWT
         /*
-        if (b && !isDisplayable()) {
-            if ((this instanceof Window) || ((parent != null) && parent.isDisplayable())) {
-                addNotify();
-            }
-        } else if (!b && isDisplayable()) {
-            removeNotify();
-        }
-        */
+         * if (b && !isDisplayable()) { if ((this instanceof Window) || ((parent
+         * != null) && parent.isDisplayable())) { addNotify(); } } else if (!b
+         * && isDisplayable()) { removeNotify(); }
+         */
     }
 
     /**
      * Gets the toolkit.
      * 
-     * @return accessible context specific for particular component
+     * @return accessible context specific for particular component.
      */
-    //???AWT
+    // ???AWT
     /*
-    AccessibleContext createAccessibleContext() {
-        return null;
-    }
+     * AccessibleContext createAccessibleContext() { return null; } public
+     * AccessibleContext getAccessibleContext() { toolkit.lockAWT(); try { if
+     * (accessibleContext == null) { accessibleContext =
+     * createAccessibleContext(); } return accessibleContext; } finally {
+     * toolkit.unlockAWT(); } }
+     */
 
-    public AccessibleContext getAccessibleContext() {
-        toolkit.lockAWT();
-        try {
-            if (accessibleContext == null) {
-                accessibleContext = createAccessibleContext();
-            }
-            return accessibleContext;
-        } finally {
-            toolkit.unlockAWT();
-        }
-    }
-    */
- 
     /**
      * Gets Toolkit for the current Component.
      * 
@@ -1982,8 +1776,8 @@
     }
 
     /**
-     * Gets this component's locking object for AWT component tree 
-     * and layout operations.
+     * Gets this component's locking object for AWT component tree and layout
+     * operations.
      * 
      * @return the tree locking object.
      */
@@ -1992,12 +1786,14 @@
     }
 
     /**
-     * @param evt the Event.
-     * @param what the event's key.
+     * Handles the event. Use ActionListener instead of this.
      * 
+     * @param evt
+     *            the Event.
+     * @param what
+     *            the event's key.
      * @return true, if successful.
-     * 
-     * @deprecated Use ActionListener class for registering event listener.   
+     * @deprecated Use ActionListener class for registering event listener.
      */
     @Deprecated
     public boolean action(Event evt, Object what) {
@@ -2006,11 +1802,10 @@
         return false;
     }
 
-
     /**
      * Gets the property change support.
      * 
-     * @return the property change support
+     * @return the property change support.
      */
     private PropertyChangeSupport getPropertyChangeSupport() {
         synchronized (componentLock) {
@@ -2020,36 +1815,29 @@
             return propertyChangeSupport;
         }
     }
-    
-    //???AWT
+
+    // ???AWT
     /*
-    public void addPropertyChangeListener(PropertyChangeListener listener) {
-        getPropertyChangeSupport().addPropertyChangeListener(listener);
-    }
-
-    public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
-        getPropertyChangeSupport().addPropertyChangeListener(propertyName, listener);
-    }
-
-    public void applyComponentOrientation(ComponentOrientation orientation) {
-        toolkit.lockAWT();
-        try {
-            setComponentOrientation(orientation);
-        } finally {
-            toolkit.unlockAWT();
-        }
-    }
-    */
+     * public void addPropertyChangeListener(PropertyChangeListener listener) {
+     * getPropertyChangeSupport().addPropertyChangeListener(listener); } public
+     * void addPropertyChangeListener(String propertyName,
+     * PropertyChangeListener listener) {
+     * getPropertyChangeSupport().addPropertyChangeListener(propertyName,
+     * listener); } public void applyComponentOrientation(ComponentOrientation
+     * orientation) { toolkit.lockAWT(); try {
+     * setComponentOrientation(orientation); } finally { toolkit.unlockAWT(); }
+     * }
+     */
 
     /**
-     * Returns true if the set of focus traversal keys for the given focus 
-     * traversal operation has been explicitly defined for this Component. 
+     * Returns true if the set of focus traversal keys for the given focus
+     * traversal operation has been explicitly defined for this Component.
      * 
-     * @param id the ID of traversal key.
-     * 
-     * @return true, if the set of focus traversal keys for the given focus 
-     * traversal operation has been explicitly defined for this Component,
-     * false otherwise. 
+     * @param id
+     *            the ID of traversal key.
+     * @return true, if the set of focus traversal keys for the given focus.
+     *         traversal operation has been explicitly defined for this
+     *         Component, false otherwise.
      */
     public boolean areFocusTraversalKeysSet(int id) {
         toolkit.lockAWT();
@@ -2069,7 +1857,6 @@
      * Gets the bounds of the Component.
      * 
      * @return the rectangle bounds of the Component.
-     * 
      * @deprecated Use getBounds() methood.
      */
     @Deprecated
@@ -2083,16 +1870,20 @@
     }
 
     /**
-     * Returns the construction status of a specified image
-     * with the specified width and height that is being created.
+     * Returns the construction status of a specified image with the specified
+     * width and height that is being created.
      * 
-     * 
-     * @param image the image to be checked.
-     * @param width the width of scaled image which status is being checked, or -1.
-     * @param height the height of scaled image which status is being checked, or -1.
-     * @param observer the ImageObserver object to be notified while 
-     * the image is being prepared.
-     * 
+     * @param image
+     *            the image to be checked.
+     * @param width
+     *            the width of scaled image which status is being checked, or
+     *            -1.
+     * @param height
+     *            the height of scaled image which status is being checked, or
+     *            -1.
+     * @param observer
+     *            the ImageObserver object to be notified while the image is
+     *            being prepared.
      * @return the ImageObserver flags of the current state of the image data.
      */
     public int checkImage(Image image, int width, int height, ImageObserver observer) {
@@ -2105,13 +1896,14 @@
     }
 
     /**
-     * Returns the construction status of a specified image that is being created.
+     * Returns the construction status of a specified image that is being
+     * created.
      * 
-     * 
-     * @param image the image to be checked.
-     * @param observer the ImageObserver object to be notified while 
-     * the image is being prepared.
-     * 
+     * @param image
+     *            the image to be checked.
+     * @param observer
+     *            the ImageObserver object to be notified while the image is
+     *            being prepared.
      * @return the ImageObserver flags of the current state of the image data.
      */
     public int checkImage(Image image, ImageObserver observer) {
@@ -2126,10 +1918,11 @@
     /**
      * Coalesces the existed event with new event.
      * 
-     * @param existingEvent the existing event in the EventQueue.
-     * @param newEvent the new event to be posted to the EventQueue.
-     * 
-     * @return the coalesced AWTEvent, or null if there is no coalescing done. 
+     * @param existingEvent
+     *            the existing event in the EventQueue.
+     * @param newEvent
+     *            the new event to be posted to the EventQueue.
+     * @return the coalesced AWTEvent, or null if there is no coalescing done.
      */
     protected AWTEvent coalesceEvents(AWTEvent existingEvent, AWTEvent newEvent) {
         toolkit.lockAWT();
@@ -2147,7 +1940,7 @@
     /**
      * Checks if this Component is a coalescer.
      * 
-     * @return true, if is coalescer
+     * @return true, if is coalescer.
      */
     boolean isCoalescer() {
         return coalescer;
@@ -2156,9 +1949,9 @@
     /**
      * Gets the relative event.
      * 
-     * @param id the id
-     * 
-     * @return the relative event
+     * @param id
+     *            the id.
+     * @return the relative event.
      */
     AWTEvent getRelativeEvent(int id) {
         Integer idWrapper = new Integer(id);
@@ -2177,7 +1970,8 @@
     /**
      * Adds the new event.
      * 
-     * @param event the event
+     * @param event
+     *            the event.
      */
     void addNewEvent(AWTEvent event) {
         eventsList.addLast(event);
@@ -2193,7 +1987,8 @@
     /**
      * Removes the next event.
      * 
-     * @param id the id
+     * @param id
+     *            the id.
      */
     void removeNextEvent(int id) {
         eventsTable.get(new Integer(id)).removeFirst();
@@ -2202,8 +1997,8 @@
     /**
      * Creates the image with the specified ImageProducer.
      * 
-     * @param producer the ImageProducer to be used for image creation.
-     * 
+     * @param producer
+     *            the ImageProducer to be used for image creation.
      * @return the image with the specified ImageProducer.
      */
     public Image createImage(ImageProducer producer) {
@@ -2218,11 +2013,13 @@
     /**
      * Creates an off-screen drawable image to be used for double buffering.
      * 
-     * @param width the width of the image.
-     * @param height the height of the image.
-     * 
-     * @return the off-screen drawable image or null if the component is not 
-     * displayable or GraphicsEnvironment.isHeadless() method returns true.
+     * @param width
+     *            the width of the image.
+     * @param height
+     *            the height of the image.
+     * @return the off-screen drawable image or null if the component is not
+     *         displayable or GraphicsEnvironment.isHeadless() method returns
+     *         true.
      */
     public Image createImage(int width, int height) {
         toolkit.lockAWT();
@@ -2245,17 +2042,19 @@
     }
 
     /**
-     * Creates an off-screen drawable image with the specified width,
-     * height and ImageCapabilities.
+     * Creates an off-screen drawable image with the specified width, height and
+     * ImageCapabilities.
      * 
-     * @param width the width
-     * @param height the height
-     * @param caps the ImageCapabilities.
-     * 
-     * @return the volatile image
-     * 
-     * @throws AWTException if an image with the specified capabilities 
-     * cannot be created.
+     * @param width
+     *            the width.
+     * @param height
+     *            the height.
+     * @param caps
+     *            the ImageCapabilities.
+     * @return the volatile image.
+     * @throws AWTException
+     *             if an image with the specified capabilities cannot be
+     *             created.
      */
     public VolatileImage createVolatileImage(int width, int height, ImageCapabilities caps)
             throws AWTException {
@@ -2277,16 +2076,17 @@
     }
 
     /**
-     * Creates a volatile off-screen drawable image which is used 
-     * for double buffering.
+     * Creates a volatile off-screen drawable image which is used for double
+     * buffering.
      * 
-     * @param width the width of image.
-     * @param height the height of image.
-     * 
-     * @return the volatile image a volatile off-screen drawable image 
-     * which is used for double buffering or null if the component 
-     * is not displayable, or GraphicsEnvironment.isHeadless() method
-     * returns true.
+     * @param width
+     *            the width of image.
+     * @param height
+     *            the height of image.
+     * @return the volatile image a volatile off-screen drawable image which is
+     *         used for double buffering or null if the component is not
+     *         displayable, or GraphicsEnvironment.isHeadless() method returns
+     *         true.
      */
     public VolatileImage createVolatileImage(int width, int height) {
         toolkit.lockAWT();
@@ -2311,9 +2111,12 @@
      * with the component's background color to prepare it for double-buffered
      * painting.
      * 
-     * @param image the image
-     * @param width the width
-     * @param height the height
+     * @param image
+     *            the image.
+     * @param width
+     *            the width.
+     * @param height
+     *            the height.
      */
     private void fillImageBackground(Image image, int width, int height) {
         Graphics gr = image.getGraphics();
@@ -2325,8 +2128,8 @@
     /**
      * Delivers event.
      * 
-     * @param evt the event.
-     * 
+     * @param evt
+     *            the event.
      * @deprecated Replaced by dispatchEvent(AWTEvent e) method.
      */
     @Deprecated
@@ -2335,7 +2138,7 @@
     }
 
     /**
-     * Prompts the layout manager to lay out this component. 
+     * Prompts the layout manager to lay out this component.
      */
     public void doLayout() {
         toolkit.lockAWT();
@@ -2350,9 +2153,12 @@
     /**
      * Fire property change impl.
      * 
-     * @param propertyName the property name
-     * @param oldValue the old value
-     * @param newValue the new value
+     * @param propertyName
+     *            the property name.
+     * @param oldValue
+     *            the old value.
+     * @param newValue
+     *            the new value.
      */
     private void firePropertyChangeImpl(String propertyName, Object oldValue, Object newValue) {
         PropertyChangeSupport pcs;
@@ -2368,32 +2174,40 @@
     /**
      * Reports a bound property changes for int properties.
      * 
-     * @param propertyName the property name.
-     * @param oldValue the old property's value.
-     * @param newValue the new property's value.
+     * @param propertyName
+     *            the property name.
+     * @param oldValue
+     *            the old property's value.
+     * @param newValue
+     *            the new property's value.
      */
     protected void firePropertyChange(String propertyName, int oldValue, int newValue) {
         firePropertyChangeImpl(propertyName, new Integer(oldValue), new Integer(newValue));
     }
 
     /**
-     * Report a bound property change for a boolean-valued property. 
-     *  
-     * @param propertyName the property name.
-     * @param oldValue the property's old value.
-     * @param newValue the property's new value.
+     * Report a bound property change for a boolean-valued property.
+     * 
+     * @param propertyName
+     *            the property name.
+     * @param oldValue
+     *            the property's old value.
+     * @param newValue
+     *            the property's new value.
      */
     protected void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) {
-        firePropertyChangeImpl(propertyName, Boolean.valueOf(oldValue), Boolean
-                .valueOf(newValue));
+        firePropertyChangeImpl(propertyName, Boolean.valueOf(oldValue), Boolean.valueOf(newValue));
     }
 
     /**
-     * Reports a bound property change for an Object-valued property. 
+     * Reports a bound property change for an Object-valued property.
      * 
-     * @param propertyName the property name.
-     * @param oldValue the property's old value
-     * @param newValue the property's new value
+     * @param propertyName
+     *            the property name.
+     * @param oldValue
+     *            the property's old value.
+     * @param newValue
+     *            the property's new value.
      */
     protected void firePropertyChange(final String propertyName, final Object oldValue,
             final Object newValue) {
@@ -2401,75 +2215,93 @@
     }
 
     /**
-     * Report a bound property change for a byte-valued property. 
+     * Report a bound property change for a byte-valued property.
      * 
-     * @param propertyName the property name.
-     * @param oldValue the property's old value.
-     * @param newValue the property's new value.
+     * @param propertyName
+     *            the property name.
+     * @param oldValue
+     *            the property's old value.
+     * @param newValue
+     *            the property's new value.
      */
     public void firePropertyChange(String propertyName, byte oldValue, byte newValue) {
         firePropertyChangeImpl(propertyName, new Byte(oldValue), new Byte(newValue));
     }
 
     /**
-     * Report a bound property change for a char-valued property. 
+     * Report a bound property change for a char-valued property.
      * 
-     * @param propertyName the property name.
-     * @param oldValue the old property's value.
-     * @param newValue the new property's value.
+     * @param propertyName
+     *            the property name.
+     * @param oldValue
+     *            the old property's value.
+     * @param newValue
+     *            the new property's value.
      */
     public void firePropertyChange(String propertyName, char oldValue, char newValue) {
         firePropertyChangeImpl(propertyName, new Character(oldValue), new Character(newValue));
     }
 
     /**
-     * Report a bound property change for a short-valued property. 
+     * Report a bound property change for a short-valued property.
      * 
-     * @param propertyName the property name.
-     * @param oldValue the old property's value.
-     * @param newValue the new property's value.
+     * @param propertyName
+     *            the property name.
+     * @param oldValue
+     *            the old property's value.
+     * @param newValue
+     *            the new property's value.
      */
     public void firePropertyChange(String propertyName, short oldValue, short newValue) {
         firePropertyChangeImpl(propertyName, new Short(oldValue), new Short(newValue));
     }
 
     /**
-     * Report a bound property change for a long-valued property. 
+     * Report a bound property change for a long-valued property.
      * 
-     * @param propertyName the property name.
-     * @param oldValue the old property's value.
-     * @param newValue the new property's value.
+     * @param propertyName
+     *            the property name.
+     * @param oldValue
+     *            the old property's value.
+     * @param newValue
+     *            the new property's value.
      */
     public void firePropertyChange(String propertyName, long oldValue, long newValue) {
         firePropertyChangeImpl(propertyName, new Long(oldValue), new Long(newValue));
     }
 
     /**
-     * Report a bound property change for a float-valued property. 
+     * Report a bound property change for a float-valued property.
      * 
-     * @param propertyName the property name.
-     * @param oldValue the old property's value.
-     * @param newValue the new property's value.
+     * @param propertyName
+     *            the property name.
+     * @param oldValue
+     *            the old property's value.
+     * @param newValue
+     *            the new property's value.
      */
     public void firePropertyChange(String propertyName, float oldValue, float newValue) {
         firePropertyChangeImpl(propertyName, new Float(oldValue), new Float(newValue));
     }
 
     /**
-     * Report a bound property change for a double-valued property. 
+     * Report a bound property change for a double-valued property.
      * 
-     * @param propertyName the property name.
-     * @param oldValue the old property's value.
-     * @param newValue the new property's value.
+     * @param propertyName
+     *            the property name.
+     * @param oldValue
+     *            the old property's value.
+     * @param newValue
+     *            the new property's value.
      */
     public void firePropertyChange(String propertyName, double oldValue, double newValue) {
         firePropertyChangeImpl(propertyName, new Double(oldValue), new Double(newValue));
     }
 
     /**
-     * Gets the alignment along the x axis. 
+     * Gets the alignment along the x axis.
      * 
-     * @return the alignment along the x axis. 
+     * @return the alignment along the x axis.
      */
     public float getAlignmentX() {
         toolkit.lockAWT();
@@ -2481,7 +2313,7 @@
     }
 
     /**
-     * Gets the alignment along the y axis. 
+     * Gets the alignment along the y axis.
      * 
      * @return the alignment along y axis.
      */
@@ -2502,12 +2334,11 @@
     public Color getBackground() {
         toolkit.lockAWT();
         try {
-            //???AWT
+            // ???AWT
             /*
-            if ((backColor == null) && (parent != null)) {
-                return parent.getBackground();
-            }
-            */
+             * if ((backColor == null) && (parent != null)) { return
+             * parent.getBackground(); }
+             */
             return backColor;
         } finally {
             toolkit.unlockAWT();
@@ -2529,11 +2360,12 @@
     }
 
     /**
-     * Writes the data of the bounding rectangle to the specified 
-     * Rectangle object.
+     * Writes the data of the bounding rectangle to the specified Rectangle
+     * object.
      * 
-     * @param rv the Rectangle object where the bounding rectangle's data is stored.  
-     * 
+     * @param rv
+     *            the Rectangle object where the bounding rectangle's data is
+     *            stored.
      * @return the bounding rectangle.
      */
     public Rectangle getBounds(Rectangle rv) {
@@ -2566,8 +2398,8 @@
     /**
      * Gets the Component which contains the specified Point.
      * 
-     * @param p the Point.
-     * 
+     * @param p
+     *            the Point.
      * @return the Component which contains the specified Point.
      */
     public Component getComponentAt(Point p) {
@@ -2580,14 +2412,15 @@
     }
 
     /**
-     * Gets the Component which contains the point with the
-     * specified coordinates.
+     * Gets the Component which contains the point with the specified
+     * coordinates.
      * 
-     * @param x the x coordinate of the point.
-     * @param y the y coordinate of the point.
-     * 
-     * @return the Component which contains the point with the
-     * specified coordinates.
+     * @param x
+     *            the x coordinate of the point.
+     * @param y
+     *            the y coordinate of the point.
+     * @return the Component which contains the point with the specified
+     *         coordinates.
      */
     public Component getComponentAt(int x, int y) {
         toolkit.lockAWT();
@@ -2622,11 +2455,10 @@
         try {
             if (cursor != null) {
                 return cursor;
-            //???AWT
-            /*
-            } else if (parent != null) {
-                return parent.getCursor();
-            */
+                // ???AWT
+                /*
+                 * } else if (parent != null) { return parent.getCursor();
+                 */
             }
             return Cursor.getDefaultCursor();
         } finally {
@@ -2634,57 +2466,29 @@
         }
     }
 
-    //???AWT
+    // ???AWT
     /*
-    public DropTarget getDropTarget() {
-        toolkit.lockAWT();
-        try {
-            return dropTarget;
-        } finally {
-            toolkit.unlockAWT();
-        }
-    }
-    
-    public Container getFocusCycleRootAncestor() {
-        toolkit.lockAWT();
-        try {
-            for (Container c = parent; c != null; c = c.getParent()) {
-                if (c.isFocusCycleRoot()) {
-                    return c;
-                }
-            }
-            return null;
-        } finally {
-            toolkit.unlockAWT();
-        }
-    }
-    
-    @SuppressWarnings("unchecked")
-    public Set<AWTKeyStroke> getFocusTraversalKeys(int id) {
-        toolkit.lockAWT();
-        try {
-            Integer kId = new Integer(id);
-            KeyboardFocusManager.checkTraversalKeysID(traversalKeys, kId);
-            Set<? extends AWTKeyStroke> keys = traversalKeys.get(kId);
-            if (keys == null && parent != null) {
-                keys = parent.getFocusTraversalKeys(id);
-            }
-            if (keys == null) {
-                keys = KeyboardFocusManager.getCurrentKeyboardFocusManager()
-                        .getDefaultFocusTraversalKeys(id);
-            }
-            return (Set<AWTKeyStroke>) keys;
-        } finally {
-            toolkit.unlockAWT();
-        }
-    }
-    */
-    
+     * public DropTarget getDropTarget() { toolkit.lockAWT(); try { return
+     * dropTarget; } finally { toolkit.unlockAWT(); } } public Container
+     * getFocusCycleRootAncestor() { toolkit.lockAWT(); try { for (Container c =
+     * parent; c != null; c = c.getParent()) { if (c.isFocusCycleRoot()) {
+     * return c; } } return null; } finally { toolkit.unlockAWT(); } }
+     * @SuppressWarnings("unchecked") public Set<AWTKeyStroke>
+     * getFocusTraversalKeys(int id) { toolkit.lockAWT(); try { Integer kId =
+     * new Integer(id); KeyboardFocusManager.checkTraversalKeysID(traversalKeys,
+     * kId); Set<? extends AWTKeyStroke> keys = traversalKeys.get(kId); if (keys
+     * == null && parent != null) { keys = parent.getFocusTraversalKeys(id); }
+     * if (keys == null) { keys =
+     * KeyboardFocusManager.getCurrentKeyboardFocusManager()
+     * .getDefaultFocusTraversalKeys(id); } return (Set<AWTKeyStroke>) keys; }
+     * finally { toolkit.unlockAWT(); } }
+     */
+
     /**
      * Checks if the the focus traversal keys are enabled for this component.
      * 
-     * @return true, if the the focus traversal keys are enabled for 
-     * this component, false otherwise.
+     * @return true, if the the focus traversal keys are enabled for this
+     *         component, false otherwise.
      */
     public boolean getFocusTraversalKeysEnabled() {
         toolkit.lockAWT();
@@ -2698,8 +2502,8 @@
     /**
      * Gets the font metrics of the specified Font.
      * 
-     * @param f the Font.
-     * 
+     * @param f
+     *            the Font.
      * @return the FontMetrics of the specified Font.
      */
     @SuppressWarnings("deprecation")
@@ -2715,12 +2519,11 @@
     public Color getForeground() {
         toolkit.lockAWT();
         try {
-            //???AWT
+            // ???AWT
             /*
-            if (foreColor == null && parent != null) {
-                return parent.getForeground();
-            }
-            */
+             * if (foreColor == null && parent != null) { return
+             * parent.getForeground(); }
+             */
             return foreColor;
         } finally {
             toolkit.unlockAWT();
@@ -2728,11 +2531,11 @@
     }
 
     /**
-     * Gets the Graphics of the Component or null if this Component
-     * is not displayable.
+     * Gets the Graphics of the Component or null if this Component is not
+     * displayable.
      * 
-     * @return the Graphics of the Component or null if this Component
-     * is not displayable.
+     * @return the Graphics of the Component or null if this Component is not
+     *         displayable.
      */
     public Graphics getGraphics() {
         toolkit.lockAWT();
@@ -2749,26 +2552,18 @@
         }
     }
 
-
     /**
      * Gets the GraphicsConfiguration associated with this Component.
      * 
      * @return the GraphicsConfiguration associated with this Component.
      */
     public GraphicsConfiguration getGraphicsConfiguration() {
-        //???AWT
+        // ???AWT
         /*
-        toolkit.lockAWT();
-        try {
-            Window win = getWindowAncestor();
-            if (win == null) {
-                return null;
-            }
-            return win.getGraphicsConfiguration();
-        } finally {
-            toolkit.unlockAWT();
-        }
-        */
+         * toolkit.lockAWT(); try { Window win = getWindowAncestor(); if (win ==
+         * null) { return null; } return win.getGraphicsConfiguration(); }
+         * finally { toolkit.unlockAWT(); }
+         */
         return null;
     }
 
@@ -2787,11 +2582,11 @@
     }
 
     /**
-     * Returns true if paint messages received from the operating system 
-     * should be ignored.
+     * Returns true if paint messages received from the operating system should
+     * be ignored.
      * 
-     * @return true if paint messages received from the operating system 
-     * should be ignored, false otherwise.
+     * @return true if paint messages received from the operating system should
+     *         be ignored, false otherwise.
      */
     public boolean getIgnoreRepaint() {
         toolkit.lockAWT();
@@ -2803,23 +2598,20 @@
     }
 
     /**
-     * Gets the input context of this component for handling 
-     * the communication with input methods when text is entered 
-     * in this component.
+     * Gets the input context of this component for handling the communication
+     * with input methods when text is entered in this component.
      * 
-     * @return the InputContext used by this Component or 
-     * null if no context is specifined.
+     * @return the InputContext used by this Component or null if no context is
+     *         specifined.
      */
     public InputContext getInputContext() {
         toolkit.lockAWT();
         try {
-            //???AWT
+            // ???AWT
             /*
-            Container parent = getParent();
-            if (parent != null) {
-                return parent.getInputContext();
-            }
-            */
+             * Container parent = getParent(); if (parent != null) { return
+             * parent.getInputContext(); }
+             */
             return null;
         } finally {
             toolkit.unlockAWT();
@@ -2827,11 +2619,11 @@
     }
 
     /**
-     * Gets the input method request handler which supports requests
-     * from input methods for this component, or null for default.
+     * Gets the input method request handler which supports requests from input
+     * methods for this component, or null for default.
      * 
-     * @return the input method request handler which supports requests
-     * from input methods for this component, or null for default.
+     * @return the input method request handler which supports requests from
+     *         input methods for this component, or null for default.
      */
     public InputMethodRequests getInputMethodRequests() {
         return null;
@@ -2845,19 +2637,14 @@
     public Locale getLocale() {
         toolkit.lockAWT();
         try {
-            //???AWT
+            // ???AWT
             /*
-            if (locale == null) {
-                if (parent == null) {
-                    if (this instanceof Window) {
-                        return Locale.getDefault();
-                    }
-                    // awt.150=no parent
-                    throw new IllegalComponentStateException(Messages.getString("awt.150")); //$NON-NLS-1$
-                }
-                return getParent().getLocale();
-            }
-            */
+             * if (locale == null) { if (parent == null) { if (this instanceof
+             * Window) { return Locale.getDefault(); } // awt.150=no parent
+             * throw new
+             * IllegalComponentStateException(Messages.getString("awt.150"));
+             * //$NON-NLS-1$ } return getParent().getLocale(); }
+             */
             return locale;
         } finally {
             toolkit.unlockAWT();
@@ -2865,35 +2652,30 @@
     }
 
     /**
-     * Gets the location of this component in the form of a point 
-     * specifying the component's top-left corner in the 
-     * screen's coordinate space.
+     * Gets the location of this component in the form of a point specifying the
+     * component's top-left corner in the screen's coordinate space.
      * 
-     * @return the Point giving the component's location in the 
-     * screen's coordinate space.
-     * 
-     * @throws IllegalComponentStateException if the component is 
-     * not shown on the screen.
+     * @return the Point giving the component's location in the screen's
+     *         coordinate space.
+     * @throws IllegalComponentStateException
+     *             if the component is not shown on the screen.
      */
     public Point getLocationOnScreen() throws IllegalComponentStateException {
         toolkit.lockAWT();
         try {
             Point p = new Point();
             if (isShowing()) {
-                //???AWT
+                // ???AWT
                 /*
-                Component comp;
-                for (comp = this; comp != null && !(comp instanceof Window); comp = comp
-                        .getParent()) {
-                    p.translate(comp.getX(), comp.getY());
-                }
-                if (comp instanceof Window) {
-                    p.translate(comp.getX(), comp.getY());
-                }
-                */
+                 * Component comp; for (comp = this; comp != null && !(comp
+                 * instanceof Window); comp = comp .getParent()) {
+                 * p.translate(comp.getX(), comp.getY()); } if (comp instanceof
+                 * Window) { p.translate(comp.getX(), comp.getY()); }
+                 */
                 return p;
             }
-            // awt.151=component must be showing on the screen to determine its location
+            // awt.151=component must be showing on the screen to determine its
+            // location
             throw new IllegalComponentStateException(Messages.getString("awt.151")); //$NON-NLS-1$
         } finally {
             toolkit.unlockAWT();
@@ -2901,11 +2683,10 @@
     }
 
     /**
-     * Gets the peer. This method should not be called directly by
-     * user applications.
+     * Gets the peer. This method should not be called directly by user
+     * applications.
      * 
      * @return the ComponentPeer.
-     * 
      * @deprecated Replaced by isDisplayable().
      */
     @Deprecated
@@ -2922,24 +2703,24 @@
     }
 
     /**
-     * Gets an array of the property change listeners registered to
-     * this Component.
+     * Gets an array of the property change listeners registered to this
+     * Component.
      * 
-     * @return an array of the PropertyChangeListeners registered to
-     * this Component.
+     * @return an array of the PropertyChangeListeners registered to this
+     *         Component.
      */
     public PropertyChangeListener[] getPropertyChangeListeners() {
         return getPropertyChangeSupport().getPropertyChangeListeners();
     }
 
     /**
-     * Gets an array of PropertyChangeListener objects registered
-     * to this Component for the specified property.
+     * Gets an array of PropertyChangeListener objects registered to this
+     * Component for the specified property.
      * 
-     * @param propertyName the property name.
-     * 
-     * @return an array of PropertyChangeListener objects registered
-     * to this Component for the specified property.
+     * @param propertyName
+     *            the property name.
+     * @return an array of PropertyChangeListener objects registered to this
+     *         Component for the specified property.
      */
     public PropertyChangeListener[] getPropertyChangeListeners(String propertyName) {
         return getPropertyChangeSupport().getPropertyChangeListeners(propertyName);
@@ -2990,11 +2771,11 @@
     /**
      * Got the focus.
      * 
-     * @param evt the Event.
-     * @param what the Object.
-     * 
+     * @param evt
+     *            the Event.
+     * @param what
+     *            the Object.
      * @return true, if successful.
-     * 
      * @deprecated Replaced by processFocusEvent(FocusEvent) method.
      */
     @Deprecated
@@ -3007,10 +2788,9 @@
     /**
      * Handles event.
      * 
-     * @param evt the Event.
-     * 
+     * @param evt
+     *            the Event.
      * @return true, if successful.
-     * 
      * @deprecated Replaced by processEvent(AWTEvent) method.
      */
     @Deprecated
@@ -3052,7 +2832,7 @@
     public boolean hasFocus() {
         toolkit.lockAWT();
         try {
-            //???AWT: return isFocusOwner();
+            // ???AWT: return isFocusOwner();
             return false;
         } finally {
             toolkit.unlockAWT();
@@ -3076,24 +2856,24 @@
             moveFocusOnHide();
             behaviour.setVisible(false);
             postEvent(new ComponentEvent(this, ComponentEvent.COMPONENT_HIDDEN));
-            //???AWT: finishHierarchyChange(this, parent, 0);
+            // ???AWT: finishHierarchyChange(this, parent, 0);
             notifyInputMethod(null);
-            //???AWT: invalidateRealParent();
+            // ???AWT: invalidateRealParent();
         } finally {
             toolkit.unlockAWT();
         }
     }
 
     /**
-     * Checks whether or not the point with the specified coordinates 
-     * belongs to the Commponent.
+     * Checks whether or not the point with the specified coordinates belongs to
+     * the Commponent.
      * 
-     * @param x the x coordinate of the Point.
-     * @param y the y coordinate of the Point.
-     * 
-     * @return true, if the point with the specified coordinates 
-     * belongs to the Commponent, false otherwise.
-     * 
+     * @param x
+     *            the x coordinate of the Point.
+     * @param y
+     *            the y coordinate of the Point.
+     * @return true, if the point with the specified coordinates belongs to the
+     *         Commponent, false otherwise.
      * @deprecated Replaced by contains(int, int) method.
      */
     @Deprecated
@@ -3107,15 +2887,15 @@
     }
 
     /**
-     * Invalidates the component, this component and all parents 
-     * above it are marked as needing to be laid out. 
+     * Invalidates the component, this component and all parents above it are
+     * marked as needing to be laid out.
      */
     public void invalidate() {
         toolkit.lockAWT();
         try {
             valid = false;
             resetDefaultSize();
-            //???AWT: invalidateRealParent();
+            // ???AWT: invalidateRealParent();
         } finally {
             toolkit.unlockAWT();
         }
@@ -3124,8 +2904,8 @@
     /**
      * Checks whether or not the background color is set to this Component.
      * 
-     * @return true, if the background color is set to this Component,
-     * false otherwise.
+     * @return true, if the background color is set to this Component, false
+     *         otherwise.
      */
     public boolean isBackgroundSet() {
         toolkit.lockAWT();
@@ -3139,8 +2919,7 @@
     /**
      * Checks whether or not a cursor is set for the Component.
      * 
-     * @return true, if a cursor is set for the Component,
-     * false otherwise.
+     * @return true, if a cursor is set for the Component, false otherwise.
      */
     public boolean isCursorSet() {
         toolkit.lockAWT();
@@ -3166,11 +2945,11 @@
     }
 
     /**
-     * Checks whether or not this component is painted to an buffer
-     * which is copied to the screen later.
+     * Checks whether or not this component is painted to an buffer which is
+     * copied to the screen later.
      * 
-     * @return true, if this component is painted to an buffer
-     * which is copied to the screen later, false otherwise.
+     * @return true, if this component is painted to an buffer which is copied
+     *         to the screen later, false otherwise.
      */
     public boolean isDoubleBuffered() {
         toolkit.lockAWT();
@@ -3200,7 +2979,7 @@
      * "Recursive" isEnabled().
      * 
      * @return true if not only component itself is enabled but its heavyweight
-     * parent is also "indirectly" enabled
+     *         parent is also "indirectly" enabled.
      */
     boolean isIndirectlyEnabled() {
         Component comp = this;
@@ -3208,7 +2987,7 @@
             if (!comp.isLightweight() && !comp.isEnabled()) {
                 return false;
             }
-            //???AWT: comp = comp.getRealParent();
+            // ???AWT: comp = comp.getRealParent();
         }
         return true;
     }
@@ -3216,7 +2995,7 @@
     /**
      * Checks if the component is key enabled.
      * 
-     * @return true, if the component is enabled and indirectly enabled
+     * @return true, if the component is enabled and indirectly enabled.
      */
     boolean isKeyEnabled() {
         if (!isEnabled()) {
@@ -3229,39 +3008,24 @@
      * Gets only parent of a child component, but not owner of a window.
      * 
      * @return parent of child component, null if component is a top-level
-     * (Window instance)
+     *         (Window instance).
      */
-    //???AWT
+    // ???AWT
     /*
-    Container getRealParent() {
-        return (!(this instanceof Window) ? getParent() : null);
-    }
+     * Container getRealParent() { return (!(this instanceof Window) ?
+     * getParent() : null); } public boolean isFocusCycleRoot(Container
+     * container) { toolkit.lockAWT(); try { return getFocusCycleRootAncestor()
+     * == container; } finally { toolkit.unlockAWT(); } } public boolean
+     * isFocusOwner() { toolkit.lockAWT(); try { return
+     * KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner() ==
+     * this; } finally { toolkit.unlockAWT(); } }
+     */
 
-    public boolean isFocusCycleRoot(Container container) {
-        toolkit.lockAWT();
-        try {
-            return getFocusCycleRootAncestor() == container;
-        } finally {
-            toolkit.unlockAWT();
-        }
-    }
-
-    public boolean isFocusOwner() {
-        toolkit.lockAWT();
-        try {
-            return KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner() == this;
-        } finally {
-            toolkit.unlockAWT();
-        }
-    }
-    */
-    
     /**
      * Checks whether or not this Component can be focusable.
      * 
      * @return true, if this Component can be focusable, false otherwise.
-     * 
-     * @deprecated Replaced by isFocusable(). 
+     * @deprecated Replaced by isFocusable().
      */
     @Deprecated
     public boolean isFocusTraversable() {
@@ -3306,8 +3070,8 @@
     /**
      * Checks if foreground color is set for the Component or not.
      * 
-     * @return true, if is foreground color is set for the Component,
-     * false otherwise.
+     * @return true, if is foreground color is set for the Component, false
+     *         otherwise.
      */
     public boolean isForegroundSet() {
         toolkit.lockAWT();
@@ -3321,8 +3085,8 @@
     /**
      * Returns true if this component has a lightweight peer.
      * 
-     * @return true, if this component has a lightweight peer,
-     * false if it has a native peer or no peer.
+     * @return true, if this component has a lightweight peer, false if it has a
+     *         native peer or no peer.
      */
     public boolean isLightweight() {
         toolkit.lockAWT();
@@ -3333,22 +3097,18 @@
         }
     }
 
-
     /**
      * Checks whether or not this Component is shown.
      * 
      * @return true, if this Component is shown, false otherwise.
      */
     public boolean isShowing() {
-        //???AWT
+        // ???AWT
         /*
-        toolkit.lockAWT();
-        try {
-            return (isVisible() && isDisplayable() && (parent != null) && parent.isShowing());
-        } finally {
-            toolkit.unlockAWT();
-        }
-        */
+         * toolkit.lockAWT(); try { return (isVisible() && isDisplayable() &&
+         * (parent != null) && parent.isShowing()); } finally {
+         * toolkit.unlockAWT(); }
+         */
         return false;
     }
 
@@ -3369,11 +3129,11 @@
     /**
      * Deprecated: replaced by processKeyEvent(KeyEvent) method.
      * 
-     * @param evt the Event.
-     * @param key the key code.
-     * 
+     * @param evt
+     *            the Event.
+     * @param key
+     *            the key code.
      * @return true, if successful.
-     * 
      * @deprecated Replaced by replaced by processKeyEvent(KeyEvent) method.
      */
     @Deprecated
@@ -3386,11 +3146,11 @@
     /**
      * Deprecated: replaced by processKeyEvent(KeyEvent) method.
      * 
-     * @param evt the Event.
-     * @param key the key code.
-     * 
+     * @param evt
+     *            the Event.
+     * @param key
+     *            the key code.
      * @return true, if successful.
-     * 
      * @deprecated Replaced by processKeyEvent(KeyEvent) method.
      */
     @Deprecated
@@ -3418,11 +3178,11 @@
     /**
      * Deprecated: replaced by getComponentAt(int, int) method.
      * 
-     * @param x the x coordinate.
-     * @param y the y coordinate.
-     * 
+     * @param x
+     *            the x coordinate.
+     * @param y
+     *            the y coordinate.
      * @return The component.
-     * 
      * @deprecated Replaced by getComponentAt(int, int) method.
      */
     @Deprecated
@@ -3439,13 +3199,13 @@
     }
 
     /**
-     * Deprecated: replaced by processFocusEvent(FocusEvent). 
+     * Deprecated: replaced by processFocusEvent(FocusEvent).
      * 
-     * @param evt the Event.
-     * @param what the Object.
-     * 
+     * @param evt
+     *            the Event.
+     * @param what
+     *            the Object.
      * @return true, if successful.
-     * 
      * @deprecated Replaced by processFocusEvent(FocusEvent).
      */
     @Deprecated
@@ -3458,12 +3218,13 @@
     /**
      * Deprecated: replaced by processMouseEvent(MouseEvent) method.
      * 
-     * @param evt the MouseEvent.
-     * @param x the x coordinate.
-     * @param y the y coordinate.
-     * 
+     * @param evt
+     *            the MouseEvent.
+     * @param x
+     *            the x coordinate.
+     * @param y
+     *            the y coordinate.
      * @return true, if successful.
-     * 
      * @deprecated Replaced by processMouseEvent(MouseEvent) method.
      */
     @Deprecated
@@ -3476,12 +3237,13 @@
     /**
      * Deprecated: replaced by getMinimumSize() method.
      * 
-     * @param evt the Event.
-     * @param x the x coordinate.
-     * @param y the y coordinate.
-     * 
+     * @param evt
+     *            the Event.
+     * @param x
+     *            the x coordinate.
+     * @param y
+     *            the y coordinate.
      * @return true, if successful.
-     * 
      * @deprecated Replaced by getMinimumSize() method.
      */
     @Deprecated
@@ -3494,12 +3256,13 @@
     /**
      * Replaced by processMouseEvent(MouseEvent) method.
      * 
-     * @param evt the Event.
-     * @param x the x coordinate.
-     * @param y the y coordinate.
-     * 
+     * @param evt
+     *            the Event.
+     * @param x
+     *            the x coordinate.
+     * @param y
+     *            the y coordinate.
      * @return true, if successful.
-     * 
      * @deprecated replaced by processMouseEvent(MouseEvent) method.
      */
     @Deprecated
@@ -3512,12 +3275,13 @@
     /**
      * Replaced by processMouseEvent(MouseEvent) method.
      * 
-     * @param evt the Event.
-     * @param x the x coordinate.
-     * @param y the y coordinate.
-     * 
+     * @param evt
+     *            the Event.
+     * @param x
+     *            the x coordinate.
+     * @param y
+     *            the y coordinate.
      * @return true, if successful.
-     * 
      * @deprecated Replaced by processMouseEvent(MouseEvent) method.
      */
     @Deprecated
@@ -3530,12 +3294,13 @@
     /**
      * Replaced by processMouseEvent(MouseEvent) method.
      * 
-     * @param evt the Event.
-     * @param x the x coordinate.
-     * @param y the y coordinate.
-     * 
+     * @param evt
+     *            the Event.
+     * @param x
+     *            the x coordinate.
+     * @param y
+     *            the y coordinate.
      * @deprecated Replaced by processMouseEvent(MouseEvent) method.
-     * 
      * @return true, if successful.
      */
     @Deprecated
@@ -3548,12 +3313,13 @@
     /**
      * Replaced by processMouseEvent(MouseEvent) method.
      * 
-     * @param evt the Event.
-     * @param x the x coordinate.
-     * @param y the y coordinate.
-     * 
+     * @param evt
+     *            the Event.
+     * @param x
+     *            the x coordinate.
+     * @param y
+     *            the y coordinate.
      * @return true, if successful.
-     * 
      * @deprecated Replaced by processMouseEvent(MouseEvent) method.
      */
     @Deprecated
@@ -3566,9 +3332,10 @@
     /**
      * Deprecated: replaced by setLocation(int, int) method.
      * 
-     * @param x the x coordinates.
-     * @param y the y coordinates.
-     * 
+     * @param x
+     *            the x coordinates.
+     * @param y
+     *            the y coordinates.
      * @deprecated Replaced by setLocation(int, int) method.
      */
     @Deprecated
@@ -3582,18 +3349,12 @@
         }
     }
 
-    //???AWT
+    // ???AWT
     /*
-    @Deprecated
-    public void nextFocus() {
-        toolkit.lockAWT();
-        try {
-            transferFocus(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);
-        } finally {
-            toolkit.unlockAWT();
-        }
-    }
-    */
+     * @Deprecated public void nextFocus() { toolkit.lockAWT(); try {
+     * transferFocus(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS); } finally {
+     * toolkit.unlockAWT(); } }
+     */
 
     /**
      * Returns a string representation of the component's state.
@@ -3603,10 +3364,8 @@
     protected String paramString() {
         /*
          * The format is based on 1.5 release behavior which can be revealed by
-         * the following code:
-         * 
-         * Component c = new Component(){}; c.setVisible(false);
-         * System.out.println(c);
+         * the following code: Component c = new Component(){};
+         * c.setVisible(false); System.out.println(c);
          */
         toolkit.lockAWT();
         try {
@@ -3624,35 +3383,27 @@
         if (handled) {
             return true;
         }
-        //???AWT
+        // ???AWT
         /*
-
-        // propagate non-handled events up to parent
-        Component par = parent;
-        // try to call postEvent only on components which
-        // override any of deprecated method handlers
-        // while (par != null && !par.deprecatedEventHandler) {
-        // par = par.parent;
-        // }
-        // translate event coordinates before posting it to parent
-        if (par != null) {
-            evt.translate(x, y);
-            par.postEvent(evt);
-        }
-        
-        */
+         * // propagate non-handled events up to parent Component par = parent;
+         * // try to call postEvent only on components which // override any of
+         * deprecated method handlers // while (par != null &&
+         * !par.deprecatedEventHandler) { // par = par.parent; // } // translate
+         * event coordinates before posting it to parent if (par != null) {
+         * evt.translate(x, y); par.postEvent(evt); }
+         */
         return false;
     }
 
     /**
-     * Prepares an image for rendering on the Component. 
-     *  
-     * @param image the Image to be prepared.
-     * @param observer the ImageObserver object to be notified as soon as 
-     * the image is prepared.
+     * Prepares an image for rendering on the Component.
      * 
-     * @return true if the image has been fully prepared,
-     * false otherwise.
+     * @param image
+     *            the Image to be prepared.
+     * @param observer
+     *            the ImageObserver object to be notified as soon as the image
+     *            is prepared.
+     * @return true if the image has been fully prepared, false otherwise.
      */
     public boolean prepareImage(Image image, ImageObserver observer) {
         toolkit.lockAWT();
@@ -3664,17 +3415,19 @@
     }
 
     /**
-     * Prepares an image for rendering on the Component with the
-     * specified width, height, and ImageObserver. 
+     * Prepares an image for rendering on the Component with the specified
+     * width, height, and ImageObserver.
      * 
-     * @param image the Image to be prepared.
-     * @param width the width of scaled image.
-     * @param height the height of scaled height.
-     * @param observer the ImageObserver object to be notified as soon as 
-     * the image is prepared.
-     * 
-     * @return true if the image is been fully prepared,
-     * false otherwise.
+     * @param image
+     *            the Image to be prepared.
+     * @param width
+     *            the width of scaled image.
+     * @param height
+     *            the height of scaled height.
+     * @param observer
+     *            the ImageObserver object to be notified as soon as the image
+     *            is prepared.
+     * @return true if the image is been fully prepared, false otherwise.
      */
     public boolean prepareImage(Image image, int width, int height, ImageObserver observer) {
         toolkit.lockAWT();
@@ -3691,16 +3444,14 @@
     public void removeNotify() {
         toolkit.lockAWT();
         try {
-            //???AWT
+            // ???AWT
             /*
-            if (dropTarget != null) {
-                dropTarget.removeNotify(peer);
-            }
-            */
+             * if (dropTarget != null) { dropTarget.removeNotify(peer); }
+             */
             prepare4HierarchyChange();
-            ///???AWT: moveFocus();
+            // /???AWT: moveFocus();
             behaviour.removeNotify();
-            //???AWT: finishHierarchyChange(this, parent, 0);
+            // ???AWT: finishHierarchyChange(this, parent, 0);
             removeNotifyInputContext();
         } finally {
             toolkit.unlockAWT();
@@ -3708,7 +3459,7 @@
     }
 
     /**
-     * Calls InputContext.removeNotify
+     * Calls InputContext.removeNotify.
      */
     private void removeNotifyInputContext() {
         if (!inputMethodsEnabled) {
@@ -3716,7 +3467,7 @@
         }
         InputContext ic = getInputContext();
         if (ic != null) {
-            //???AWT: ic.removeNotify(this);
+            // ???AWT: ic.removeNotify(this);
         }
     }
 
@@ -3726,46 +3477,25 @@
      * setFocusable(false) is called, and therefore automatic forward focus
      * traversal is necessary
      */
-    //???AWT
+    // ???AWT
     /*
-    void moveFocus() {
-        // don't use transferFocus(), but query focus traversal policy directly
-        // and if it returns null, transfer focus up cycle
-        // and find next focusable component there
-        KeyboardFocusManager kfm = KeyboardFocusManager.getCurrentKeyboardFocusManager();
-        Container root = kfm.getCurrentFocusCycleRoot();
-        Component nextComp = this;
-        boolean success = !isFocusOwner();
-        while (!success) {
-            if (root != nextComp.getFocusCycleRootAncestor()) {
-                // component was probably removed from container
-                // so focus will be lost in some time
-                return;
-            }
-            nextComp = root.getFocusTraversalPolicy().getComponentAfter(root, nextComp);
-            if (nextComp == this) {
-                nextComp = null; // avoid looping
-            }
-            if (nextComp != null) {
-                success = nextComp.requestFocusInWindow();
-            } else {
-                nextComp = root;
-                root = root.getFocusCycleRootAncestor();
-                // if no acceptable component is found at all - clear global
-                // focus owner
-                if (root == null) {
-                    if (nextComp instanceof Window) {
-                        Window wnd = (Window) nextComp;
-                        wnd.setFocusOwner(null);
-                        wnd.setRequestedFocus(null);
-                    }
-                    kfm.clearGlobalFocusOwner();
-                    return;
-                }
-            }
-        }
-    }
-    */
+     * void moveFocus() { // don't use transferFocus(), but query focus
+     * traversal policy directly // and if it returns null, transfer focus up
+     * cycle // and find next focusable component there KeyboardFocusManager kfm
+     * = KeyboardFocusManager.getCurrentKeyboardFocusManager(); Container root =
+     * kfm.getCurrentFocusCycleRoot(); Component nextComp = this; boolean
+     * success = !isFocusOwner(); while (!success) { if (root !=
+     * nextComp.getFocusCycleRootAncestor()) { // component was probably removed
+     * from container // so focus will be lost in some time return; } nextComp =
+     * root.getFocusTraversalPolicy().getComponentAfter(root, nextComp); if
+     * (nextComp == this) { nextComp = null; // avoid looping } if (nextComp !=
+     * null) { success = nextComp.requestFocusInWindow(); } else { nextComp =
+     * root; root = root.getFocusCycleRootAncestor(); // if no acceptable
+     * component is found at all - clear global // focus owner if (root == null)
+     * { if (nextComp instanceof Window) { Window wnd = (Window) nextComp;
+     * wnd.setFocusOwner(null); wnd.setRequestedFocus(null); }
+     * kfm.clearGlobalFocusOwner(); return; } } } }
+     */
 
     /**
      * For Container there's a difference between moving focus when being made
@@ -3774,80 +3504,73 @@
      * setVisible() is not called.
      */
     void moveFocusOnHide() {
-        //???AWT: moveFocus();
+        // ???AWT: moveFocus();
     }
 
     /**
      * Removes the property change listener registered for this component.
      * 
-     * @param listener the PropertyChangeListener.
+     * @param listener
+     *            the PropertyChangeListener.
      */
     public void removePropertyChangeListener(PropertyChangeListener listener) {
         getPropertyChangeSupport().removePropertyChangeListener(listener);
     }
 
     /**
-     * Removes the property change listener registered fot this component 
-     * for the specified propertyy.
+     * Removes the property change listener registered fot this component for
+     * the specified propertyy.
      * 
-     * @param propertyName the property name.
-     * @param listener the PropertyChangeListener.
+     * @param propertyName
+     *            the property name.
+     * @param listener
+     *            the PropertyChangeListener.
      */
-    public void removePropertyChangeListener(String propertyName,
-            PropertyChangeListener listener) {
+    public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) {
         getPropertyChangeSupport().removePropertyChangeListener(propertyName, listener);
     }
 
-
     /**
-     * Repaints the specified rectangle of this component within 
-     * tm milliseconds.
+     * Repaints the specified rectangle of this component within tm
+     * milliseconds.
      * 
-     * @param tm the time in milliseconds before updating.
-     * @param x the x coordinate of Rectangle.
-     * @param y the y coordinate of Rectangle.
-     * @param width the width of Rectangle.
-     * @param height the height of Rectangle.
+     * @param tm
+     *            the time in milliseconds before updating.
+     * @param x
+     *            the x coordinate of Rectangle.
+     * @param y
+     *            the y coordinate of Rectangle.
+     * @param width
+     *            the width of Rectangle.
+     * @param height
+     *            the height of Rectangle.
      */
     public void repaint(long tm, int x, int y, int width, int height) {
-        //???AWT
+        // ???AWT
         /*
-        toolkit.lockAWT();
-        try {
-            if (width <= 0 || height <= 0 || (redrawManager == null) || !isShowing()) {
-                return;
-            }
-            if (behaviour instanceof LWBehavior) {
-                if (parent == null || !parent.visible || !parent.behaviour.isDisplayable()) {
-                    return;
-                }
-                if (repaintRegion == null) {
-                    repaintRegion = new MultiRectArea(new Rectangle(x, y, width, height));
-                }
-                repaintRegion.intersect(new Rectangle(0, 0, this.w, this.h));
-                repaintRegion.translate(this.x, this.y);
-                parent.repaintRegion = repaintRegion;
-                repaintRegion = null;
-                parent.repaint(tm, x + this.x, y + this.y, width, height);
-            } else {
-                if (repaintRegion != null) {
-                    redrawManager.addUpdateRegion(this, repaintRegion);
-                    repaintRegion = null;
-                } else {
-                    redrawManager.addUpdateRegion(this, new Rectangle(x, y, width, height));
-                }
-                toolkit.getSystemEventQueueCore().notifyEventMonitor(toolkit);
-            }
-        } finally {
-            toolkit.unlockAWT();
-        }
-        */
+         * toolkit.lockAWT(); try { if (width <= 0 || height <= 0 ||
+         * (redrawManager == null) || !isShowing()) { return; } if (behaviour
+         * instanceof LWBehavior) { if (parent == null || !parent.visible ||
+         * !parent.behaviour.isDisplayable()) { return; } if (repaintRegion ==
+         * null) { repaintRegion = new MultiRectArea(new Rectangle(x, y, width,
+         * height)); } repaintRegion.intersect(new Rectangle(0, 0, this.w,
+         * this.h)); repaintRegion.translate(this.x, this.y);
+         * parent.repaintRegion = repaintRegion; repaintRegion = null;
+         * parent.repaint(tm, x + this.x, y + this.y, width, height); } else {
+         * if (repaintRegion != null) { redrawManager.addUpdateRegion(this,
+         * repaintRegion); repaintRegion = null; } else {
+         * redrawManager.addUpdateRegion(this, new Rectangle(x, y, width,
+         * height)); }
+         * toolkit.getSystemEventQueueCore().notifyEventMonitor(toolkit); } }
+         * finally { toolkit.unlockAWT(); }
+         */
     }
 
     /**
      * Post event.
      * 
-     * @param e the e
+     * @param e
+     *            the e.
      */
     void postEvent(AWTEvent e) {
         getToolkit().getSystemEventQueueImpl().postEvent(e);
@@ -3856,10 +3579,14 @@
     /**
      * Repaints the specified Rectangle of this Component.
      * 
-     * @param x the x coordinate of Rectangle.
-     * @param y the y coordinate of Rectangle.
-     * @param width the width of Rectangle.
-     * @param height the height of Rectangle.
+     * @param x
+     *            the x coordinate of Rectangle.
+     * @param y
+     *            the y coordinate of Rectangle.
+     * @param width
+     *            the width of Rectangle.
+     * @param height
+     *            the height of Rectangle.
      */
     public void repaint(int x, int y, int width, int height) {
         toolkit.lockAWT();
@@ -3887,7 +3614,8 @@
     /**
      * Repaints the component within tm milliseconds.
      * 
-     * @param tm the time in milliseconds before updating.
+     * @param tm
+     *            the time in milliseconds before updating.
      */
     public void repaint(long tm) {
         toolkit.lockAWT();
@@ -3899,29 +3627,28 @@
     }
 
     /**
-     * Requests that this Component get the input focus temporarily. 
-     * This component must be displayable, visible, and focusable.
+     * Requests that this Component get the input focus temporarily. This
+     * component must be displayable, visible, and focusable.
      * 
-     * @param temporary this parameter is true if the focus change 
-     * is temporary, when the window loses the focus.
-     * 
-     * @return true if the focus change request is succeeded,
-     * false otherwise.
+     * @param temporary
+     *            this parameter is true if the focus change is temporary, when
+     *            the window loses the focus.
+     * @return true if the focus change request is succeeded, false otherwise.
      */
     protected boolean requestFocus(boolean temporary) {
         toolkit.lockAWT();
         try {
-            //???AWT: return requestFocusImpl(temporary, true, false);
+            // ???AWT: return requestFocusImpl(temporary, true, false);
         } finally {
             toolkit.unlockAWT();
         }
-        //???AWT
+        // ???AWT
         return false;
     }
 
     /**
-     * Requests that this Component get the input focus. 
-     * This component must be displayable, visible, and focusable.
+     * Requests that this Component get the input focus. This component must be
+     * displayable, visible, and focusable.
      */
     public void requestFocus() {
         toolkit.lockAWT();
@@ -3932,55 +3659,35 @@
         }
     }
 
-    //???AWT
+    // ???AWT
     /*
-    protected boolean requestFocusInWindow(boolean temporary) {
-        toolkit.lockAWT();
-        try {
-            Window wnd = getWindowAncestor();
-            if ((wnd == null) || !wnd.isFocused()) {
-                return false;
-            }
-            return requestFocusImpl(temporary, false, false);
-        } finally {
-            toolkit.unlockAWT();
-        }
-    }
-
-    boolean requestFocusImpl(boolean temporary, boolean crossWindow, boolean rejectionRecovery) {
-        if (!rejectionRecovery && isFocusOwner()) {
-            return true;
-        }
-        Window wnd = getWindowAncestor();
-        Container par = getRealParent();
-        if ((par != null) && par.isRemoved) {
-            return false;
-        }
-        if (!isShowing() || !isFocusable() || !wnd.isFocusableWindow()) {
-            return false;
-        }
-        return KeyboardFocusManager.getCurrentKeyboardFocusManager().requestFocus(this,
-                temporary, crossWindow, true);
-    }
-
-    public boolean requestFocusInWindow() {
-        toolkit.lockAWT();
-        try {
-            return requestFocusInWindow(false);
-        } finally {
-            toolkit.unlockAWT();
-        }
-    }
-    */
+     * protected boolean requestFocusInWindow(boolean temporary) {
+     * toolkit.lockAWT(); try { Window wnd = getWindowAncestor(); if ((wnd ==
+     * null) || !wnd.isFocused()) { return false; } return
+     * requestFocusImpl(temporary, false, false); } finally {
+     * toolkit.unlockAWT(); } } boolean requestFocusImpl(boolean temporary,
+     * boolean crossWindow, boolean rejectionRecovery) { if (!rejectionRecovery
+     * && isFocusOwner()) { return true; } Window wnd = getWindowAncestor();
+     * Container par = getRealParent(); if ((par != null) && par.isRemoved) {
+     * return false; } if (!isShowing() || !isFocusable() ||
+     * !wnd.isFocusableWindow()) { return false; } return
+     * KeyboardFocusManager.getCurrentKeyboardFocusManager().requestFocus(this,
+     * temporary, crossWindow, true); } public boolean requestFocusInWindow() {
+     * toolkit.lockAWT(); try { return requestFocusInWindow(false); } finally {
+     * toolkit.unlockAWT(); } }
+     */
 
     /**
      * Deprecated: replaced by setBounds(int, int, int, int) method.
      * 
-     * @param x the x coordinate.
-     * @param y the y coordinate.
-     * @param w the width. 
-     * @param h the height.
-     * 
+     * @param x
+     *            the x coordinate.
+     * @param y
+     *            the y coordinate.
+     * @param w
+     *            the width.
+     * @param h
+     *            the height.
      * @deprecated Replaced by setBounds(int, int, int, int) method.
      */
     @Deprecated
@@ -3995,13 +3702,17 @@
     }
 
     /**
-     * Sets rectangle for this Component to be the rectangle with the specified 
+     * Sets rectangle for this Component to be the rectangle with the specified
      * x,y coordinates of the top-left corner and the width and height.
      * 
-     * @param x the x coordinate of the rectangle's top-left corner.
-     * @param y the y coordinate of the rectangle's top-left corner.
-     * @param w the width of rectangle.
-     * @param h the height of rectangle. 
+     * @param x
+     *            the x coordinate of the rectangle's top-left corner.
+     * @param y
+     *            the y coordinate of the rectangle's top-left corner.
+     * @param w
+     *            the width of rectangle.
+     * @param h
+     *            the height of rectangle.
      */
     public void setBounds(int x, int y, int w, int h) {
         toolkit.lockAWT();
@@ -4013,16 +3724,22 @@
     }
 
     /**
-     * Sets rectangle for this Component to be the rectangle with the specified 
-     * x,y coordinates of the top-left corner and the width and height
-     * and posts the appropriate events.
+     * Sets rectangle for this Component to be the rectangle with the specified
+     * x,y coordinates of the top-left corner and the width and height and posts
+     * the appropriate events.
      * 
-     * @param x the x coordinate of the rectangle's top-left corner.
-     * @param y the y coordinate of the rectangle's top-left corner.
-     * @param w the width of rectangle.
-     * @param h the height of rectangle. 
-     * @param bMask the bitmask of bounds options
-     * @param updateBehavior the whether to update the behavoir's bounds as well
+     * @param x
+     *            the x coordinate of the rectangle's top-left corner.
+     * @param y
+     *            the y coordinate of the rectangle's top-left corner.
+     * @param w
+     *            the width of rectangle.
+     * @param h
+     *            the height of rectangle.
+     * @param bMask
+     *            the bitmask of bounds options.
+     * @param updateBehavior
+     *            the whether to update the behavoir's bounds as well.
      */
     void setBounds(int x, int y, int w, int h, int bMask, boolean updateBehavior) {
         int oldX = this.x;
@@ -4032,7 +3749,7 @@
         setBoundsFields(x, y, w, h, bMask);
         // Moved
         if ((oldX != this.x) || (oldY != this.y)) {
-            //???AWT: invalidateRealParent();
+            // ???AWT: invalidateRealParent();
             postEvent(new ComponentEvent(this, ComponentEvent.COMPONENT_MOVED));
             spreadHierarchyBoundsEvents(this, HierarchyEvent.ANCESTOR_MOVED);
         }
@@ -4051,7 +3768,8 @@
     /**
      * Calls InputContextImpl.notifyClientWindowChanged.
      * 
-     * @param bounds the bounds
+     * @param bounds
+     *            the bounds.
      */
     void notifyInputMethod(Rectangle bounds) {
         // only Window actually notifies IM of bounds change
@@ -4060,11 +3778,16 @@
     /**
      * Sets the bounds fields.
      * 
-     * @param x the x
-     * @param y the y
-     * @param w the w
-     * @param h the h
-     * @param bMask the b mask
+     * @param x
+     *            the x.
+     * @param y
+     *            the y.
+     * @param w
+     *            the w.
+     * @param h
+     *            the h.
+     * @param bMask
+     *            the b mask.
      */
     private void setBoundsFields(int x, int y, int w, int h, int bMask) {
         if ((bMask & NativeWindow.BOUNDS_NOSIZE) == 0) {
@@ -4080,7 +3803,7 @@
     /**
      * Gets the native insets.
      * 
-     * @return the native insets
+     * @return the native insets.
      */
     Insets getNativeInsets() {
         return new Insets(0, 0, 0, 0);
@@ -4089,7 +3812,7 @@
     /**
      * Gets the insets.
      * 
-     * @return the insets
+     * @return the insets.
      */
     Insets getInsets() {
         return new Insets(0, 0, 0, 0);
@@ -4098,7 +3821,7 @@
     /**
      * Checks if is mouse exited expected.
      * 
-     * @return true, if is mouse exited expected
+     * @return true, if is mouse exited expected.
      */
     boolean isMouseExitedExpected() {
         return mouseExitedExpected;
@@ -4107,7 +3830,8 @@
     /**
      * Sets the mouse exited expected.
      * 
-     * @param expected the new mouse exited expected
+     * @param expected
+     *            the new mouse exited expected.
      */
     void setMouseExitedExpected(boolean expected) {
         mouseExitedExpected = expected;
@@ -4116,7 +3840,8 @@
     /**
      * Sets the new bounding rectangle for this Component.
      * 
-     * @param r the new bounding rectangle.
+     * @param r
+     *            the new bounding rectangle.
      */
     public void setBounds(Rectangle r) {
         toolkit.lockAWT();
@@ -4128,10 +3853,11 @@
     }
 
     /**
-     * Sets the component orientation which affects the component's
-     * elements and text within this component. 
+     * Sets the component orientation which affects the component's elements and
+     * text within this component.
      * 
-     * @param o the ComponentOrientation object.
+     * @param o
+     *            the ComponentOrientation object.
      */
     public void setComponentOrientation(ComponentOrientation o) {
         ComponentOrientation oldOrientation;
@@ -4149,7 +3875,8 @@
     /**
      * Sets the specified cursor for this Component.
      * 
-     * @param cursor the new Cursor.
+     * @param cursor
+     *            the new Cursor.
      */
     public void setCursor(Cursor cursor) {
         toolkit.lockAWT();
@@ -4168,26 +3895,20 @@
         if (isDisplayable() && isShowing()) {
             Rectangle absRect = new Rectangle(getLocationOnScreen(), getSize());
             Point absPointerPos = toolkit.dispatcher.mouseDispatcher.getPointerPos();
-            //???AWT
+            // ???AWT
             /*
-            if (absRect.contains(absPointerPos)) {
-                // set Cursor only on top-level Windows(on X11)
-                Window topLevelWnd = getWindowAncestor();
-                if (topLevelWnd != null) {
-                    Point pointerPos = MouseDispatcher.convertPoint(null, absPointerPos,
-                            topLevelWnd);
-                    Component compUnderCursor = topLevelWnd.findComponentAt(pointerPos);
-                    // if (compUnderCursor == this ||
-                    // compUnderCursor.getCursorAncestor() == this) {
-                    NativeWindow wnd = topLevelWnd.getNativeWindow();
-                    if (compUnderCursor != null && wnd != null) {
-                        compUnderCursor.getRealCursor().getNativeCursor()
-                                .setCursor(wnd.getId());
-                    }
-                    // }
-                }
-            }
-            */
+             * if (absRect.contains(absPointerPos)) { // set Cursor only on
+             * top-level Windows(on X11) Window topLevelWnd =
+             * getWindowAncestor(); if (topLevelWnd != null) { Point pointerPos
+             * = MouseDispatcher.convertPoint(null, absPointerPos, topLevelWnd);
+             * Component compUnderCursor =
+             * topLevelWnd.findComponentAt(pointerPos); // if (compUnderCursor
+             * == this || // compUnderCursor.getCursorAncestor() == this) {
+             * NativeWindow wnd = topLevelWnd.getNativeWindow(); if
+             * (compUnderCursor != null && wnd != null) {
+             * compUnderCursor.getRealCursor().getNativeCursor()
+             * .setCursor(wnd.getId()); } // } } }
+             */
         }
     }
 
@@ -4195,68 +3916,44 @@
      * Gets the ancestor Cursor if Component is disabled (directly or via an
      * ancestor) even if Cursor is explicitly set.
      * 
-     * @param value the value
-     * 
-     * @return actual Cursor to be displayed
+     * @param value
+     *            the value.
+     * @return the actual Cursor to be displayed.
      */
-    //???AWT
+    // ???AWT
     /*
-    Cursor getRealCursor() {
-        Component cursorAncestor = getCursorAncestor();
-        return cursorAncestor != null ? cursorAncestor.getCursor() : Cursor.getDefaultCursor();
-    }
-    */
+     * Cursor getRealCursor() { Component cursorAncestor = getCursorAncestor();
+     * return cursorAncestor != null ? cursorAncestor.getCursor() :
+     * Cursor.getDefaultCursor(); }
+     */
 
     /**
      * Gets the ancestor(or component itself) whose cursor is set when pointer
      * is inside component
      * 
-     * @return actual Cursor to be displayed
+     * @return the actual Cursor to be displayed.
      */
-    //???AWT
+    // ???AWT
     /*
-    Component getCursorAncestor() {
-        Component comp;
-        for (comp = this; comp != null; comp = comp.getParent()) {
-            if (comp instanceof Window || comp.isCursorSet() && comp.isKeyEnabled()) {
-                return comp;
-            }
-        }
-        return null;
-    }
+     * Component getCursorAncestor() { Component comp; for (comp = this; comp !=
+     * null; comp = comp.getParent()) { if (comp instanceof Window ||
+     * comp.isCursorSet() && comp.isKeyEnabled()) { return comp; } } return
+     * null; } public void setDropTarget(DropTarget dt) { toolkit.lockAWT(); try
+     * { if (dropTarget == dt) { return; } DropTarget oldDropTarget =
+     * dropTarget; dropTarget = dt; if (oldDropTarget != null) { if
+     * (behaviour.isDisplayable()) { oldDropTarget.removeNotify(peer); }
+     * oldDropTarget.setComponent(null); } if (dt != null) {
+     * dt.setComponent(this); if (behaviour.isDisplayable()) {
+     * dt.addNotify(peer); } } } finally { toolkit.unlockAWT(); } }
+     */
 
-    public void setDropTarget(DropTarget dt) {
-        toolkit.lockAWT();
-        try {
-            if (dropTarget == dt) {
-                return;
-            }
-            DropTarget oldDropTarget = dropTarget;
-            dropTarget = dt;
-            if (oldDropTarget != null) {
-                if (behaviour.isDisplayable()) {
-                    oldDropTarget.removeNotify(peer);
-                }
-                oldDropTarget.setComponent(null);
-            }
-            if (dt != null) {
-                dt.setComponent(this);
-                if (behaviour.isDisplayable()) {
-                    dt.addNotify(peer);
-                }
-            }
-        } finally {
-            toolkit.unlockAWT();
-        }
-    }
-    */
-    
     /**
-     * Sets this component to the "enabled" or "disabled" state depending
-     * on the specified boolean parameter.
+     * Sets this component to the "enabled" or "disabled" state depending on the
+     * specified boolean parameter.
      * 
-     * @param value true if this component should be enabled; false
-     * if this component should be disabled.
+     * @param value
+     *            true if this component should be enabled; false if this
+     *            component should be disabled.
      */
     public void setEnabled(boolean value) {
         toolkit.lockAWT();
@@ -4270,7 +3967,8 @@
     /**
      * Sets the enabled impl.
      * 
-     * @param value the new enabled impl
+     * @param value
+     *            the new enabled impl.
      */
     void setEnabledImpl(boolean value) {
         if (enabled != value) {
@@ -4283,77 +3981,49 @@
         }
     }
 
-    //???AWT
+    // ???AWT
     /*
-    private void fireAccessibleStateChange(AccessibleState state, boolean value) {
-        if (behaviour.isLightweight()) {
-            return;
-        }
-        AccessibleContext ac = getAccessibleContext();
-        if (ac != null) {
-            AccessibleState oldValue = null;
-            AccessibleState newValue = null;
-            if (value) {
-                newValue = state;
-            } else {
-                oldValue = state;
-            }
-            ac.firePropertyChange(AccessibleContext.ACCESSIBLE_STATE_PROPERTY, oldValue,
-                    newValue);
-        }
-    }
-    */
+     * private void fireAccessibleStateChange(AccessibleState state, boolean
+     * value) { if (behaviour.isLightweight()) { return; } AccessibleContext ac
+     * = getAccessibleContext(); if (ac != null) { AccessibleState oldValue =
+     * null; AccessibleState newValue = null; if (value) { newValue = state; }
+     * else { oldValue = state; }
+     * ac.firePropertyChange(AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
+     * oldValue, newValue); } }
+     */
 
-    //???AWT
+    // ???AWT
     /*
-    public void setFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes) {
-        Set<? extends AWTKeyStroke> oldTraversalKeys;
-        String propName = "FocusTraversalKeys"; //$NON-NLS-1$
-        toolkit.lockAWT();
-        try {
-            Integer kId = new Integer(id);
-            KeyboardFocusManager.checkTraversalKeysID(traversalKeys, kId);
-            Map<Integer, Set<? extends AWTKeyStroke>> keys = new HashMap<Integer, Set<? extends AWTKeyStroke>>();
-            for (int kid : traversalIDs) {
-                Integer key = new Integer(kid);
-                keys.put(key, getFocusTraversalKeys(kid));
-            }
-            KeyboardFocusManager.checkKeyStrokes(traversalIDs, keys, kId, keystrokes);
-            oldTraversalKeys = traversalKeys.get(new Integer(id));
-            // put a copy of keystrokes object into map:
-            Set<? extends AWTKeyStroke> newKeys = keystrokes;
-            if (keystrokes != null) {
-                newKeys = new HashSet<AWTKeyStroke>(keystrokes);
-            }
-            traversalKeys.put(kId, newKeys);
-            String direction = ""; //$NON-NLS-1$
-            switch (id) {
-                case KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS:
-                    direction = "forward"; //$NON-NLS-1$
-                    break;
-                case KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS:
-                    direction = "backward"; //$NON-NLS-1$
-                    break;
-                case KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS:
-                    direction = "upCycle"; //$NON-NLS-1$
-                    break;
-                case KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS:
-                    direction = "downCycle"; //$NON-NLS-1$
-                    break;
-            }
-            propName = direction + propName;
-        } finally {
-            toolkit.unlockAWT();
-        }
-        firePropertyChange(propName, oldTraversalKeys, keystrokes);
-    }
-    */
+     * public void setFocusTraversalKeys(int id, Set<? extends AWTKeyStroke>
+     * keystrokes) { Set<? extends AWTKeyStroke> oldTraversalKeys; String
+     * propName = "FocusTraversalKeys"; //$NON-NLS-1$ toolkit.lockAWT(); try {
+     * Integer kId = new Integer(id);
+     * KeyboardFocusManager.checkTraversalKeysID(traversalKeys, kId);
+     * Map<Integer, Set<? extends AWTKeyStroke>> keys = new HashMap<Integer,
+     * Set<? extends AWTKeyStroke>>(); for (int kid : traversalIDs) { Integer
+     * key = new Integer(kid); keys.put(key, getFocusTraversalKeys(kid)); }
+     * KeyboardFocusManager.checkKeyStrokes(traversalIDs, keys, kId,
+     * keystrokes); oldTraversalKeys = traversalKeys.get(new Integer(id)); //
+     * put a copy of keystrokes object into map: Set<? extends AWTKeyStroke>
+     * newKeys = keystrokes; if (keystrokes != null) { newKeys = new
+     * HashSet<AWTKeyStroke>(keystrokes); } traversalKeys.put(kId, newKeys);
+     * String direction = ""; //$NON-NLS-1$ switch (id) { case
+     * KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS: direction = "forward";
+     * //$NON-NLS-1$ break; case KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS:
+     * direction = "backward"; //$NON-NLS-1$ break; case
+     * KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS: direction = "upCycle";
+     * //$NON-NLS-1$ break; case KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS:
+     * direction = "downCycle"; //$NON-NLS-1$ break; } propName = direction +
+     * propName; } finally { toolkit.unlockAWT(); } firePropertyChange(propName,
+     * oldTraversalKeys, keystrokes); }
+     */
 
     /**
      * Sets the focus traversal keys state for this component.
      * 
-     * @param value true if the focus traversal keys state is enabled,
-     * false if the focus traversal keys state is disabled.
+     * @param value
+     *            true if the focus traversal keys state is enabled, false if
+     *            the focus traversal keys state is disabled.
      */
     public void setFocusTraversalKeysEnabled(boolean value) {
         boolean oldFocusTraversalKeysEnabled;
@@ -4368,38 +4038,23 @@
                 focusTraversalKeysEnabled);
     }
 
-    //???AWT
+    // ???AWT
     /*
-    public void setFocusable(boolean focusable) {
-        boolean oldFocusable;
-        toolkit.lockAWT();
-        try {
-            calledSetFocusable = true;
-            oldFocusable = this.focusable;
-            this.focusable = focusable;
-            if (!focusable) {
-                moveFocus();
-            }
-        } finally {
-            toolkit.unlockAWT();
-        }
-        firePropertyChange("focusable", oldFocusable, focusable); //$NON-NLS-1$
-    }
-
-    public Font getFont() {
-        toolkit.lockAWT();
-        try {
-            return (font == null) && (parent != null) ? parent.getFont() : font;
-        } finally {
-            toolkit.unlockAWT();
-        }
-    }
-    */
+     * public void setFocusable(boolean focusable) { boolean oldFocusable;
+     * toolkit.lockAWT(); try { calledSetFocusable = true; oldFocusable =
+     * this.focusable; this.focusable = focusable; if (!focusable) {
+     * moveFocus(); } } finally { toolkit.unlockAWT(); }
+     * firePropertyChange("focusable", oldFocusable, focusable); //$NON-NLS-1$ }
+     * public Font getFont() { toolkit.lockAWT(); try { return (font == null) &&
+     * (parent != null) ? parent.getFont() : font; } finally {
+     * toolkit.unlockAWT(); } }
+     */
 
     /**
      * Sets the font for this Component.
      * 
-     * @param f the new font of the Component.
+     * @param f
+     *            the new font of the Component.
      */
     public void setFont(Font f) {
         Font oldFont;
@@ -4416,7 +4071,8 @@
     /**
      * Sets the font impl.
      * 
-     * @param f the new font impl
+     * @param f
+     *            the new font impl.
      */
     void setFontImpl(Font f) {
         font = f;
@@ -4426,12 +4082,11 @@
         }
     }
 
-
     /**
      * Invalidate the component if it inherits the font from the parent. This
      * method is overridden in Container.
      * 
-     * @return true if the component was invalidated, false otherwise
+     * @return true if the component was invalidated, false otherwise.
      */
     boolean propagateFont() {
         if (font == null) {
@@ -4444,7 +4099,8 @@
     /**
      * Sets the foreground color for this Component.
      * 
-     * @param c the new foreground color.
+     * @param c
+     *            the new foreground color.
      */
     public void setForeground(Color c) {
         Color oldFgColor;
@@ -4462,7 +4118,8 @@
     /**
      * Sets the background color for the Component.
      * 
-     * @param c the new background color for this component.
+     * @param c
+     *            the new background color for this component.
      */
     public void setBackground(Color c) {
         Color oldBkColor;
@@ -4478,11 +4135,12 @@
     }
 
     /**
-     * Sets the flag for whether paint messages received from the operating 
-     * system should be ignored or not. 
+     * Sets the flag for whether paint messages received from the operating
+     * system should be ignored or not.
      * 
-     * @param value true if paint messages received from the operating 
-     * system should be ignored, false otherwise.
+     * @param value
+     *            true if paint messages received from the operating system
+     *            should be ignored, false otherwise.
      */
     public void setIgnoreRepaint(boolean value) {
         toolkit.lockAWT();
@@ -4496,7 +4154,8 @@
     /**
      * Sets the locale of the component.
      * 
-     * @param locale the new Locale.
+     * @param locale
+     *            the new Locale.
      */
     public void setLocale(Locale locale) {
         Locale oldLocale;
@@ -4513,7 +4172,8 @@
     /**
      * Sets the location of the Component to the specified point.
      * 
-     * @param p the new location of the Component
+     * @param p
+     *            the new location of the Component.
      */
     public void setLocation(Point p) {
         toolkit.lockAWT();
@@ -4525,10 +4185,12 @@
     }
 
     /**
-     * Sets the location of the Component to the specified x, y coordinates.  
+     * Sets the location of the Component to the specified x, y coordinates.
      * 
-     * @param x the x coordinate.
-     * @param y the y coordinate.
+     * @param x
+     *            the x coordinate.
+     * @param y
+     *            the y coordinate.
      */
     public void setLocation(int x, int y) {
         toolkit.lockAWT();
@@ -4542,8 +4204,9 @@
     /**
      * Sets the visibility state of the component.
      * 
-     * @param b true if the component is visible, false if the component
-     * is not shown.
+     * @param b
+     *            true if the component is visible, false if the component is
+     *            not shown.
      */
     public void setVisible(boolean b) {
         // show() & hide() are not deprecated for Window,
@@ -4569,9 +4232,9 @@
             visible = true;
             behaviour.setVisible(true);
             postEvent(new ComponentEvent(this, ComponentEvent.COMPONENT_SHOWN));
-            //???AWT: finishHierarchyChange(this, parent, 0);
+            // ???AWT: finishHierarchyChange(this, parent, 0);
             notifyInputMethod(new Rectangle(x, y, w, h));
-            //???AWT: invalidateRealParent();
+            // ???AWT: invalidateRealParent();
         } finally {
             toolkit.unlockAWT();
         }
@@ -4580,8 +4243,8 @@
     /**
      * Deprecated: replaced by setVisible(boolean) method.
      * 
-     * @param b the visibility's state.
-     * 
+     * @param b
+     *            the visibility's state.
      * @deprecated Replaced by setVisible(boolean) method.
      */
     @Deprecated
@@ -4593,97 +4256,40 @@
         }
     }
 
-    //???AWT
+    // ???AWT
     /*
-    void transferFocus(int dir) {
-        Container root = null;
-        if (this instanceof Container) {
-            Container cont = (Container) this;
-            if (cont.isFocusCycleRoot()) {
-                root = cont.getFocusTraversalRoot();
-            }
-        }
-        if (root == null) {
-            root = getFocusCycleRootAncestor();
-        }
-        // transfer focus up cycle if root is unreachable
-        Component comp = this;
-        while ((root != null)
-                && !(root.isFocusCycleRoot() && root.isShowing() && root.isEnabled() && root
-                        .isFocusable())) {
-            comp = root;
-            root = root.getFocusCycleRootAncestor();
-        }
-        if (root == null) {
-            return;
-        }
-        FocusTraversalPolicy policy = root.getFocusTraversalPolicy();
-        Component nextComp = null;
-        switch (dir) {
-            case KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS:
-                nextComp = policy.getComponentAfter(root, comp);
-                break;
-            case KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS:
-                nextComp = policy.getComponentBefore(root, comp);
-                break;
-        }
-        if (nextComp != null) {
-            nextComp.requestFocus(false);
-        }
-    }
-    
-    public void transferFocus() {
-        toolkit.lockAWT();
-        try {
-            nextFocus();
-        } finally {
-            toolkit.unlockAWT();
-        }
-    }
-
-    public void transferFocusBackward() {
-        toolkit.lockAWT();
-        try {
-            transferFocus(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS);
-        } finally {
-            toolkit.unlockAWT();
-        }
-    }
-
-    public void transferFocusUpCycle() {
-        toolkit.lockAWT();
-        try {
-            KeyboardFocusManager kfm = KeyboardFocusManager.getCurrentKeyboardFocusManager();
-            Container root = kfm.getCurrentFocusCycleRoot();
-            
-            if(root == null) {
-                return;
-            }
-            
-            boolean success = false;
-            Component nextComp = null;
-            Container newRoot = root;
-            do {
-                nextComp = newRoot instanceof Window ? newRoot.getFocusTraversalPolicy()
-                        .getDefaultComponent(newRoot) : newRoot;
-                newRoot = newRoot.getFocusCycleRootAncestor();
-                if (nextComp == null) {
-                    break;
-                }
-                success = nextComp.requestFocusInWindow();
-                if (newRoot == null) {
-                    break;
-                }
-                kfm.setGlobalCurrentFocusCycleRoot(newRoot);
-            } while (!success);
-            if (!success && root != newRoot) {
-                kfm.setGlobalCurrentFocusCycleRoot(root);
-            }
-        } finally {
-            toolkit.unlockAWT();
-        }
-    }
-    */
+     * void transferFocus(int dir) { Container root = null; if (this instanceof
+     * Container) { Container cont = (Container) this; if
+     * (cont.isFocusCycleRoot()) { root = cont.getFocusTraversalRoot(); } } if
+     * (root == null) { root = getFocusCycleRootAncestor(); } // transfer focus
+     * up cycle if root is unreachable Component comp = this; while ((root !=
+     * null) && !(root.isFocusCycleRoot() && root.isShowing() &&
+     * root.isEnabled() && root .isFocusable())) { comp = root; root =
+     * root.getFocusCycleRootAncestor(); } if (root == null) { return; }
+     * FocusTraversalPolicy policy = root.getFocusTraversalPolicy(); Component
+     * nextComp = null; switch (dir) { case
+     * KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS: nextComp =
+     * policy.getComponentAfter(root, comp); break; case
+     * KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS: nextComp =
+     * policy.getComponentBefore(root, comp); break; } if (nextComp != null) {
+     * nextComp.requestFocus(false); } } public void transferFocus() {
+     * toolkit.lockAWT(); try { nextFocus(); } finally { toolkit.unlockAWT(); }
+     * } public void transferFocusBackward() { toolkit.lockAWT(); try {
+     * transferFocus(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS); } finally {
+     * toolkit.unlockAWT(); } } public void transferFocusUpCycle() {
+     * toolkit.lockAWT(); try { KeyboardFocusManager kfm =
+     * KeyboardFocusManager.getCurrentKeyboardFocusManager(); Container root =
+     * kfm.getCurrentFocusCycleRoot(); if(root == null) { return; } boolean
+     * success = false; Component nextComp = null; Container newRoot = root; do
+     * { nextComp = newRoot instanceof Window ?
+     * newRoot.getFocusTraversalPolicy() .getDefaultComponent(newRoot) :
+     * newRoot; newRoot = newRoot.getFocusCycleRootAncestor(); if (nextComp ==
+     * null) { break; } success = nextComp.requestFocusInWindow(); if (newRoot
+     * == null) { break; } kfm.setGlobalCurrentFocusCycleRoot(newRoot); } while
+     * (!success); if (!success && root != newRoot) {
+     * kfm.setGlobalCurrentFocusCycleRoot(root); } } finally {
+     * toolkit.unlockAWT(); } }
+     */
 
     /**
      * Validates that this component has a valid layout.
@@ -4710,7 +4316,7 @@
     /**
      * Gets the native window.
      * 
-     * @return the native window
+     * @return the native window.
      */
     NativeWindow getNativeWindow() {
         return behaviour.getNativeWindow();
@@ -4719,8 +4325,8 @@
     /**
      * Checks whether or not a maximum size is set for the Component.
      * 
-     * @return true, if the maximum size is set for the Component,
-     * false otherwise.
+     * @return true, if the maximum size is set for the Component, false
+     *         otherwise.
      */
     public boolean isMaximumSizeSet() {
         toolkit.lockAWT();
@@ -4734,8 +4340,8 @@
     /**
      * Checks whether or not the minimum size is set for the component.
      * 
-     * @return true, if the minimum size is set for the component,
-     * false otherwise.
+     * @return true, if the minimum size is set for the component, false
+     *         otherwise.
      */
     public boolean isMinimumSizeSet() {
         toolkit.lockAWT();
@@ -4749,8 +4355,8 @@
     /**
      * Checks whether or not the preferred size is set for the Component.
      * 
-     * @return true, if the preferred size is set for the Component,
-     * false otherwise.
+     * @return true, if the preferred size is set for the Component, false
+     *         otherwise.
      */
     public boolean isPreferredSizeSet() {
         toolkit.lockAWT();
@@ -4769,8 +4375,8 @@
     public Dimension getMaximumSize() {
         toolkit.lockAWT();
         try {
-            return isMaximumSizeSet() ? new Dimension(maximumSize) : new Dimension(
-                    Short.MAX_VALUE, Short.MAX_VALUE);
+            return isMaximumSizeSet() ? new Dimension(maximumSize) : new Dimension(Short.MAX_VALUE,
+                    Short.MAX_VALUE);
         } finally {
             toolkit.unlockAWT();
         }
@@ -4794,7 +4400,6 @@
      * Deprecated: replaced by getMinimumSize() method.
      * 
      * @return the Dimension.
-     * 
      * @deprecated Replaced by getMinimumSize() method.
      */
     @Deprecated
@@ -4808,7 +4413,7 @@
             if (defSize != null) {
                 return (Dimension)defSize.clone();
             }
-            return isDisplayable()? new Dimension(1, 1) : new Dimension(w, h);
+            return isDisplayable() ? new Dimension(1, 1) : new Dimension(w, h);
         } finally {
             toolkit.unlockAWT();
         }
@@ -4832,7 +4437,6 @@
      * Deprecated: replaced by getPreferredSize() method.
      * 
      * @return the Dimension.
-     * 
      * @deprecated Replaced by getPreferredSize() method.
      */
     @Deprecated
@@ -4855,7 +4459,8 @@
     /**
      * Sets the maximum size of the Component.
      * 
-     * @param maximumSize the new maximum size of the Component.
+     * @param maximumSize
+     *            the new maximum size of the Component.
      */
     public void setMaximumSize(Dimension maximumSize) {
         Dimension oldMaximumSize;
@@ -4882,7 +4487,7 @@
         firePropertyChange("maximumSize", oldMaximumSize, this.maximumSize); //$NON-NLS-1$
         toolkit.lockAWT();
         try {
-            //???AWT: invalidateRealParent();
+            // ???AWT: invalidateRealParent();
         } finally {
             toolkit.unlockAWT();
         }
@@ -4891,7 +4496,8 @@
     /**
      * Sets the minimum size of the Component.
      * 
-     * @param minimumSize the new minimum size of the Component.
+     * @param minimumSize
+     *            the new minimum size of the Component.
      */
     public void setMinimumSize(Dimension minimumSize) {
         Dimension oldMinimumSize;
@@ -4918,7 +4524,7 @@
         firePropertyChange("minimumSize", oldMinimumSize, this.minimumSize); //$NON-NLS-1$
         toolkit.lockAWT();
         try {
-            //???AWT: invalidateRealParent();
+            // ???AWT: invalidateRealParent();
         } finally {
             toolkit.unlockAWT();
         }
@@ -4927,7 +4533,8 @@
     /**
      * Sets the preferred size of the Component.
      * 
-     * @param preferredSize the new preferred size of the Component.
+     * @param preferredSize
+     *            the new preferred size of the Component.
      */
     public void setPreferredSize(Dimension preferredSize) {
         Dimension oldPreferredSize;
@@ -4954,47 +4561,38 @@
         firePropertyChange("preferredSize", oldPreferredSize, this.preferredSize); //$NON-NLS-1$
         toolkit.lockAWT();
         try {
-            //???AWT: invalidateRealParent();
+            // ???AWT: invalidateRealParent();
         } finally {
             toolkit.unlockAWT();
         }
     }
 
-    //???AWT
+    // ???AWT
     /*
-    RedrawManager getRedrawManager() {
-        if (parent == null) {
-            return null;
-        }
-        return parent.getRedrawManager();
-    }
-    */
+     * RedrawManager getRedrawManager() { if (parent == null) { return null; }
+     * return parent.getRedrawManager(); }
+     */
 
     /**
      * Checks if is focusability explicitly set.
      * 
-     * @return true if component has a focusable peer
+     * @return true if component has a focusable peer.
      */
-    //???AWT
+    // ???AWT
     /*
-    boolean isPeerFocusable() {
-        // The recommendations for Windows and Unix are that
-        // Canvases, Labels, Panels, Scrollbars, ScrollPanes, Windows,
-        // and lightweight Components have non-focusable peers,
-        // and all other Components have focusable peers.
-        if (this instanceof Canvas || this instanceof Label || this instanceof Panel
-                || this instanceof Scrollbar || this instanceof ScrollPane
-                || this instanceof Window || isLightweight()) {
-            return false;
-        }
-        return true;
-    }
-    */
+     * boolean isPeerFocusable() { // The recommendations for Windows and Unix
+     * are that // Canvases, Labels, Panels, Scrollbars, ScrollPanes, Windows,
+     * // and lightweight Components have non-focusable peers, // and all other
+     * Components have focusable peers. if (this instanceof Canvas || this
+     * instanceof Label || this instanceof Panel || this instanceof Scrollbar ||
+     * this instanceof ScrollPane || this instanceof Window || isLightweight())
+     * { return false; } return true; }
+     */
 
     /**
      * @return true if focusability was explicitly set via a call to
      *         setFocusable() or via overriding isFocusable() or
-     *         isFocusTraversable()
+     *         isFocusTraversable().
      */
     boolean isFocusabilityExplicitlySet() {
         return calledSetFocusable || overridenIsFocusable;
@@ -5003,7 +4601,8 @@
     /**
      * Paints the component and all of its subcomponents.
      * 
-     * @param g the Graphics to be used for painting.
+     * @param g
+     *            the Graphics to be used for painting.
      */
     public void paintAll(Graphics g) {
         toolkit.lockAWT();
@@ -5017,7 +4616,8 @@
     /**
      * Updates this Component.
      * 
-     * @param g the Graphics to be used for updating.
+     * @param g
+     *            the Graphics to be used for updating.
      */
     public void update(Graphics g) {
         toolkit.lockAWT();
@@ -5036,7 +4636,8 @@
     /**
      * Paints this component.
      * 
-     * @param g the Graphics to be used for painting.
+     * @param g
+     *            the Graphics to be used for painting.
      */
     public void paint(Graphics g) {
         toolkit.lockAWT();
@@ -5050,7 +4651,8 @@
     /**
      * Prepares the component to be painted.
      * 
-     * @param g the Graphics to be used for painting.
+     * @param g
+     *            the Graphics to be used for painting.
      */
     void prepaint(Graphics g) {
         // Just to nothing. For overriding.
@@ -5059,7 +4661,7 @@
     /**
      * Checks if is prepainter.
      * 
-     * @return true, if is prepainter
+     * @return true, if is prepainter.
      */
     boolean isPrepainter() {
         return false;
@@ -5083,41 +4685,29 @@
         // To be inherited by Container
     }
 
-    //???AWT
+    // ???AWT
     /*
-    void finishHierarchyChange(Component changed, Container changedParent, int ancestorFlags) {
-        if (--hierarchyChangingCounter == 0) {
-            int changeFlags = ancestorFlags;
-            if (wasShowing != isShowing()) {
-                changeFlags |= HierarchyEvent.SHOWING_CHANGED;
-            }
-            if (wasDisplayable != isDisplayable()) {
-                changeFlags |= HierarchyEvent.DISPLAYABILITY_CHANGED;
-            }
-            if (changeFlags > 0) {
-                postEvent(new HierarchyEvent(this, HierarchyEvent.HIERARCHY_CHANGED, changed,
-                        changedParent, changeFlags));
-            }
-            finishChildrenHierarchyChange(changed, changedParent, ancestorFlags);
-        }
-    }
+     * void finishHierarchyChange(Component changed, Container changedParent,
+     * int ancestorFlags) { if (--hierarchyChangingCounter == 0) { int
+     * changeFlags = ancestorFlags; if (wasShowing != isShowing()) { changeFlags
+     * |= HierarchyEvent.SHOWING_CHANGED; } if (wasDisplayable !=
+     * isDisplayable()) { changeFlags |= HierarchyEvent.DISPLAYABILITY_CHANGED;
+     * } if (changeFlags > 0) { postEvent(new HierarchyEvent(this,
+     * HierarchyEvent.HIERARCHY_CHANGED, changed, changedParent, changeFlags));
+     * } finishChildrenHierarchyChange(changed, changedParent, ancestorFlags); }
+     * } void finishChildrenHierarchyChange(Component changed, Container
+     * changedParent, int ancestorFlags) { // To be inherited by Container }
+     * void postHierarchyBoundsEvents(Component changed, int id) { postEvent(new
+     * HierarchyEvent(this, id, changed, null, 0)); }
+     */
 
-
-    void finishChildrenHierarchyChange(Component changed, Container changedParent,
-            int ancestorFlags) {
-        // To be inherited by Container
-    }
-
-    void postHierarchyBoundsEvents(Component changed, int id) {
-        postEvent(new HierarchyEvent(this, id, changed, null, 0));
-    }
-    */
-    
     /**
      * Spread hierarchy bounds events.
      * 
-     * @param changed the changed
-     * @param id the id
+     * @param changed
+     *            the changed.
+     * @param id
+     *            the id.
      */
     void spreadHierarchyBoundsEvents(Component changed, int id) {
         // To be inherited by Container
@@ -5126,59 +4716,40 @@
     /**
      * Dispatches an event to this component.
      * 
-     * @param e the Event.
+     * @param e
+     *            the Event.
      */
     public final void dispatchEvent(AWTEvent e) {
-        //???AWT
+        // ???AWT
         /*
-        if (e.isConsumed()) {
-            return;
-        }
-        if (e instanceof PaintEvent) {
-            toolkit.dispatchAWTEvent(e);
-            processPaintEvent((PaintEvent) e);
-            return;
-        }
-        KeyboardFocusManager kfm = KeyboardFocusManager.getCurrentKeyboardFocusManager();
-        if (!e.dispatchedByKFM && kfm.dispatchEvent(e)) {
-            return;
-        }
-        if (e instanceof KeyEvent) {
-            KeyEvent ke = (KeyEvent) e;
-            // consumes KeyEvent which represents a focus traversal key
-            if (getFocusTraversalKeysEnabled()) {
-                kfm.processKeyEvent(this, ke);
-                if (ke.isConsumed()) {
-                    return;
-                }
-            }
-        }
-        if (inputMethodsEnabled && dispatchToIM && e.isPosted && dispatchEventToIM(e)) {
-            return;
-        }
-        if (e.getID() == WindowEvent.WINDOW_ICONIFIED) {
-            notifyInputMethod(null);
-        }
-        AWTEvent.EventDescriptor descriptor = toolkit.eventTypeLookup.getEventDescriptor(e);
-        toolkit.dispatchAWTEvent(e);
-        if (descriptor != null) {
-            if (isEventEnabled(descriptor.eventMask)
-                    || (getListeners(descriptor.listenerType).length > 0)) {
-                processEvent(e);
-            }
-            // input events can be consumed by user listeners:
-            if (!e.isConsumed() && ((enabledAWTEvents & descriptor.eventMask) != 0)) {
-                postprocessEvent(e, descriptor.eventMask);
-            }
-        }
-        postDeprecatedEvent(e);
-        */
+         * if (e.isConsumed()) { return; } if (e instanceof PaintEvent) {
+         * toolkit.dispatchAWTEvent(e); processPaintEvent((PaintEvent) e);
+         * return; } KeyboardFocusManager kfm =
+         * KeyboardFocusManager.getCurrentKeyboardFocusManager(); if
+         * (!e.dispatchedByKFM && kfm.dispatchEvent(e)) { return; } if (e
+         * instanceof KeyEvent) { KeyEvent ke = (KeyEvent) e; // consumes
+         * KeyEvent which represents a focus traversal key if
+         * (getFocusTraversalKeysEnabled()) { kfm.processKeyEvent(this, ke); if
+         * (ke.isConsumed()) { return; } } } if (inputMethodsEnabled &&
+         * dispatchToIM && e.isPosted && dispatchEventToIM(e)) { return; } if
+         * (e.getID() == WindowEvent.WINDOW_ICONIFIED) {
+         * notifyInputMethod(null); } AWTEvent.EventDescriptor descriptor =
+         * toolkit.eventTypeLookup.getEventDescriptor(e);
+         * toolkit.dispatchAWTEvent(e); if (descriptor != null) { if
+         * (isEventEnabled(descriptor.eventMask) ||
+         * (getListeners(descriptor.listenerType).length > 0)) {
+         * processEvent(e); } // input events can be consumed by user listeners:
+         * if (!e.isConsumed() && ((enabledAWTEvents & descriptor.eventMask) !=
+         * 0)) { postprocessEvent(e, descriptor.eventMask); } }
+         * postDeprecatedEvent(e);
+         */
     }
 
     /**
      * Post deprecated event.
      * 
-     * @param e the e
+     * @param e
+     *            the e.
      */
     private void postDeprecatedEvent(AWTEvent e) {
         if (deprecatedEventHandler) {
@@ -5192,27 +4763,29 @@
     /**
      * Postprocess event.
      * 
-     * @param e the e
-     * @param eventMask the event mask
+     * @param e
+     *            the e.
+     * @param eventMask
+     *            the event mask.
      */
     void postprocessEvent(AWTEvent e, long eventMask) {
         toolkit.lockAWT();
         try {
             // call system listeners under AWT lock
             if (eventMask == AWTEvent.FOCUS_EVENT_MASK) {
-                preprocessFocusEvent((FocusEvent) e);
+                preprocessFocusEvent((FocusEvent)e);
             } else if (eventMask == AWTEvent.KEY_EVENT_MASK) {
-                preprocessKeyEvent((KeyEvent) e);
+                preprocessKeyEvent((KeyEvent)e);
             } else if (eventMask == AWTEvent.MOUSE_EVENT_MASK) {
-                preprocessMouseEvent((MouseEvent) e);
+                preprocessMouseEvent((MouseEvent)e);
             } else if (eventMask == AWTEvent.MOUSE_MOTION_EVENT_MASK) {
-                preprocessMouseMotionEvent((MouseEvent) e);
+                preprocessMouseMotionEvent((MouseEvent)e);
             } else if (eventMask == AWTEvent.COMPONENT_EVENT_MASK) {
-                preprocessComponentEvent((ComponentEvent) e);
+                preprocessComponentEvent((ComponentEvent)e);
             } else if (eventMask == AWTEvent.MOUSE_WHEEL_EVENT_MASK) {
-                preprocessMouseWheelEvent((MouseWheelEvent) e);
+                preprocessMouseWheelEvent((MouseWheelEvent)e);
             } else if (eventMask == AWTEvent.INPUT_METHOD_EVENT_MASK) {
-                preprocessInputMethodEvent((InputMethodEvent) e);
+                preprocessInputMethodEvent((InputMethodEvent)e);
             }
         } finally {
             toolkit.unlockAWT();
@@ -5222,7 +4795,8 @@
     /**
      * Preprocess input method event.
      * 
-     * @param e the e
+     * @param e
+     *            the e.
      */
     private void preprocessInputMethodEvent(InputMethodEvent e) {
         processInputMethodEventImpl(e, inputMethodListeners.getSystemListeners());
@@ -5231,7 +4805,8 @@
     /**
      * Preprocess mouse wheel event.
      * 
-     * @param e the e
+     * @param e
+     *            the e.
      */
     private void preprocessMouseWheelEvent(MouseWheelEvent e) {
         processMouseWheelEventImpl(e, mouseWheelListeners.getSystemListeners());
@@ -5240,8 +4815,10 @@
     /**
      * Process mouse wheel event impl.
      * 
-     * @param e the e
-     * @param c the c
+     * @param e
+     *            the e.
+     * @param c
+     *            the c.
      */
     private void processMouseWheelEventImpl(MouseWheelEvent e, Collection<MouseWheelListener> c) {
         for (MouseWheelListener listener : c) {
@@ -5256,7 +4833,8 @@
     /**
      * Preprocess component event.
      * 
-     * @param e the e
+     * @param e
+     *            the e.
      */
     private void preprocessComponentEvent(ComponentEvent e) {
         processComponentEventImpl(e, componentListeners.getSystemListeners());
@@ -5265,7 +4843,8 @@
     /**
      * Preprocess mouse motion event.
      * 
-     * @param e the e
+     * @param e
+     *            the e.
      */
     void preprocessMouseMotionEvent(MouseEvent e) {
         processMouseMotionEventImpl(e, mouseMotionListeners.getSystemListeners());
@@ -5274,7 +4853,8 @@
     /**
      * Preprocess mouse event.
      * 
-     * @param e the e
+     * @param e
+     *            the e
      */
     void preprocessMouseEvent(MouseEvent e) {
         processMouseEventImpl(e, mouseListeners.getSystemListeners());
@@ -5283,7 +4863,8 @@
     /**
      * Preprocess key event.
      * 
-     * @param e the e
+     * @param e
+     *            the e.
      */
     void preprocessKeyEvent(KeyEvent e) {
         processKeyEventImpl(e, keyListeners.getSystemListeners());
@@ -5292,79 +4873,82 @@
     /**
      * Preprocess focus event.
      * 
-     * @param e the e
+     * @param e
+     *            the e.
      */
     void preprocessFocusEvent(FocusEvent e) {
         processFocusEventImpl(e, focusListeners.getSystemListeners());
     }
 
     /**
-     * Processes AWTEvent occurred on this component. 
+     * Processes AWTEvent occurred on this component.
      * 
-     * @param e the AWTEvent.
+     * @param e
+     *            the AWTEvent.
      */
     protected void processEvent(AWTEvent e) {
         long eventMask = toolkit.eventTypeLookup.getEventMask(e);
         if (eventMask == AWTEvent.COMPONENT_EVENT_MASK) {
-            processComponentEvent((ComponentEvent) e);
+            processComponentEvent((ComponentEvent)e);
         } else if (eventMask == AWTEvent.FOCUS_EVENT_MASK) {
-            processFocusEvent((FocusEvent) e);
+            processFocusEvent((FocusEvent)e);
         } else if (eventMask == AWTEvent.KEY_EVENT_MASK) {
-            processKeyEvent((KeyEvent) e);
+            processKeyEvent((KeyEvent)e);
         } else if (eventMask == AWTEvent.MOUSE_EVENT_MASK) {
-            processMouseEvent((MouseEvent) e);
+            processMouseEvent((MouseEvent)e);
         } else if (eventMask == AWTEvent.MOUSE_WHEEL_EVENT_MASK) {
-            processMouseWheelEvent((MouseWheelEvent) e);
+            processMouseWheelEvent((MouseWheelEvent)e);
         } else if (eventMask == AWTEvent.MOUSE_MOTION_EVENT_MASK) {
-            processMouseMotionEvent((MouseEvent) e);
+            processMouseMotionEvent((MouseEvent)e);
         } else if (eventMask == AWTEvent.HIERARCHY_EVENT_MASK) {
-            processHierarchyEvent((HierarchyEvent) e);
+            processHierarchyEvent((HierarchyEvent)e);
         } else if (eventMask == AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK) {
-            processHierarchyBoundsEvent((HierarchyEvent) e);
+            processHierarchyBoundsEvent((HierarchyEvent)e);
         } else if (eventMask == AWTEvent.INPUT_METHOD_EVENT_MASK) {
-            processInputMethodEvent((InputMethodEvent) e);
+            processInputMethodEvent((InputMethodEvent)e);
         }
     }
 
     /**
-     * Gets an array of all listener's objects based on the specified
-     * listener type and registered to this Component.
+     * Gets an array of all listener's objects based on the specified listener
+     * type and registered to this Component.
      * 
-     * @param listenerType the listener type.
-     * 
+     * @param listenerType
+     *            the listener type.
      * @return an array of all listener's objects based on the specified
-     * listener type and registered to this Component. 
+     *         listener type and registered to this Component.
      */
     @SuppressWarnings("unchecked")
     public <T extends EventListener> T[] getListeners(Class<T> listenerType) {
         if (ComponentListener.class.isAssignableFrom(listenerType)) {
-            return (T[]) getComponentListeners();
+            return (T[])getComponentListeners();
         } else if (FocusListener.class.isAssignableFrom(listenerType)) {
-            return (T[]) getFocusListeners();
+            return (T[])getFocusListeners();
         } else if (HierarchyBoundsListener.class.isAssignableFrom(listenerType)) {
-            return (T[]) getHierarchyBoundsListeners();
+            return (T[])getHierarchyBoundsListeners();
         } else if (HierarchyListener.class.isAssignableFrom(listenerType)) {
-            return (T[]) getHierarchyListeners();
+            return (T[])getHierarchyListeners();
         } else if (InputMethodListener.class.isAssignableFrom(listenerType)) {
-            return (T[]) getInputMethodListeners();
+            return (T[])getInputMethodListeners();
         } else if (KeyListener.class.isAssignableFrom(listenerType)) {
-            return (T[]) getKeyListeners();
+            return (T[])getKeyListeners();
         } else if (MouseWheelListener.class.isAssignableFrom(listenerType)) {
-            return (T[]) getMouseWheelListeners();
+            return (T[])getMouseWheelListeners();
         } else if (MouseMotionListener.class.isAssignableFrom(listenerType)) {
-            return (T[]) getMouseMotionListeners();
+            return (T[])getMouseMotionListeners();
         } else if (MouseListener.class.isAssignableFrom(listenerType)) {
-            return (T[]) getMouseListeners();
+            return (T[])getMouseListeners();
         } else if (PropertyChangeListener.class.isAssignableFrom(listenerType)) {
-            return (T[]) getPropertyChangeListeners();
+            return (T[])getPropertyChangeListeners();
         }
-        return (T[]) Array.newInstance(listenerType, 0);
+        return (T[])Array.newInstance(listenerType, 0);
     }
 
     /**
      * Process paint event.
      * 
-     * @param event the event
+     * @param event
+     *            the event.
      */
     private void processPaintEvent(PaintEvent event) {
         if (redrawManager == null) {
@@ -5392,13 +4976,15 @@
     /**
      * Inits the graphics.
      * 
-     * @param g the g
-     * @param e the e
+     * @param g
+     *            the g.
+     * @param e
+     *            the e.
      */
     void initGraphics(Graphics g, PaintEvent e) {
         Rectangle clip = e.getUpdateRect();
         if (clip instanceof ClipRegion) {
-            g.setClip(((ClipRegion) clip).getClip());
+            g.setClip(((ClipRegion)clip).getClip());
         } else {
             g.setClip(clip);
         }
@@ -5413,11 +4999,11 @@
     }
 
     /**
-     * Enables the events with the specified event mask to be delivered to 
-     * this component.
+     * Enables the events with the specified event mask to be delivered to this
+     * component.
      * 
-     * @param eventsToEnable the events mask which specifies the types 
-     * of events to enable.
+     * @param eventsToEnable
+     *            the events mask which specifies the types of events to enable.
      */
     protected final void enableEvents(long eventsToEnable) {
         toolkit.lockAWT();
@@ -5432,17 +5018,19 @@
     /**
      * Enable awt events.
      * 
-     * @param eventsToEnable the events to enable
+     * @param eventsToEnable
+     *            the events to enable.
      */
     private void enableAWTEvents(long eventsToEnable) {
         enabledAWTEvents |= eventsToEnable;
     }
 
     /**
-     * Disables the events with types specified by the specified event mask 
-     * from being delivered to this component.
+     * Disables the events with types specified by the specified event mask from
+     * being delivered to this component.
      * 
-     * @param eventsToDisable the event mask specifying the event types. 
+     * @param eventsToDisable
+     *            the event mask specifying the event types.
      */
     protected final void disableEvents(long eventsToDisable) {
         toolkit.lockAWT();
@@ -5459,9 +5047,9 @@
     /**
      * Checks if is mouse event enabled.
      * 
-     * @param eventMask the event mask
-     * 
-     * @return true, if is mouse event enabled
+     * @param eventMask
+     *            the event mask.
+     * @return true, if is mouse event enabled.
      */
     boolean isMouseEventEnabled(long eventMask) {
         return (isEventEnabled(eventMask) || (enabledAWTEvents & eventMask) != 0);
@@ -5470,18 +5058,19 @@
     /**
      * Checks if is event enabled.
      * 
-     * @param eventMask the event mask
-     * 
-     * @return true, if is event enabled
+     * @param eventMask
+     *            the event mask.
+     * @return true, if is event enabled.
      */
     boolean isEventEnabled(long eventMask) {
         return ((enabledEvents & eventMask) != 0);
     }
 
     /**
-     * Enables or disables input method support for this component. 
+     * Enables or disables input method support for this component.
      * 
-     * @param enable true to enable input method support, false to disable it. 
+     * @param enable
+     *            true to enable input method support, false to disable it.
      */
     public void enableInputMethods(boolean enable) {
         toolkit.lockAWT();
@@ -5496,11 +5085,10 @@
     }
 
     /**
-     * Gets an array of all component's listeners registered for this
-     * component.
+     * Gets an array of all component's listeners registered for this component.
      * 
      * @return an array of all component's listeners registered for this
-     * component.
+     *         component.
      */
     public ComponentListener[] getComponentListeners() {
         return componentListeners.getUserListeners(new ComponentListener[0]);
@@ -5510,7 +5098,8 @@
      * Adds the specified component listener to the Component for receiving
      * component's event.
      * 
-     * @param l the ComponentListener.
+     * @param l
+     *            the ComponentListener.
      */
     public void addComponentListener(ComponentListener l) {
         componentListeners.addUserListener(l);
@@ -5519,17 +5108,19 @@
     /**
      * Removes the component listener registered for this Component.
      * 
-     * @param l the ComponentListener.
+     * @param l
+     *            the ComponentListener.
      */
     public void removeComponentListener(ComponentListener l) {
         componentListeners.removeUserListener(l);
     }
 
     /**
-     * Processes a component event that has occurred on this component 
-     * by dispatching them to any registered ComponentListener objects.
+     * Processes a component event that has occurred on this component by
+     * dispatching them to any registered ComponentListener objects.
      * 
-     * @param e the ComponentEvent.
+     * @param e
+     *            the ComponentEvent.
      */
     protected void processComponentEvent(ComponentEvent e) {
         processComponentEventImpl(e, componentListeners.getUserListeners());
@@ -5538,8 +5129,10 @@
     /**
      * Process component event impl.
      * 
-     * @param e the e
-     * @param c the c
+     * @param e
+     *            the e.
+     * @param c
+     *            the c.
      */
     private void processComponentEventImpl(ComponentEvent e, Collection<ComponentListener> c) {
         for (ComponentListener listener : c) {
@@ -5570,10 +5163,11 @@
     }
 
     /**
-     * Adds the specified focus listener to the Component for receiving
-     * focus events.
+     * Adds the specified focus listener to the Component for receiving focus
+     * events.
      * 
-     * @param l the FocusListener.
+     * @param l
+     *            the FocusListener.
      */
     public void addFocusListener(FocusListener l) {
         focusListeners.addUserListener(l);
@@ -5582,7 +5176,8 @@
     /**
      * Adds the awt focus listener.
      * 
-     * @param l the l
+     * @param l
+     *            the l.
      */
     void addAWTFocusListener(FocusListener l) {
         enableAWTEvents(AWTEvent.FOCUS_EVENT_MASK);
@@ -5592,17 +5187,19 @@
     /**
      * Removes the focus listener registered for this Component.
      * 
-     * @param l the FocusListener.
+     * @param l
+     *            the FocusListener.
      */
     public void removeFocusListener(FocusListener l) {
         focusListeners.removeUserListener(l);
     }
 
     /**
-     * Processes a FocusEvent that has occurred on this component
-     * by dispatching it to the registered listeners.
-     *  
-     * @param e the FocusEvent.
+     * Processes a FocusEvent that has occurred on this component by dispatching
+     * it to the registered listeners.
+     * 
+     * @param e
+     *            the FocusEvent.
      */
     protected void processFocusEvent(FocusEvent e) {
         processFocusEventImpl(e, focusListeners.getUserListeners());
@@ -5611,8 +5208,10 @@
     /**
      * Process focus event impl.
      * 
-     * @param e the e
-     * @param c the c
+     * @param e
+     *            the e.
+     * @param c
+     *            the c.
      */
     private void processFocusEventImpl(FocusEvent e, Collection<FocusListener> c) {
         for (FocusListener listener : c) {
@@ -5628,11 +5227,9 @@
     }
 
     /**
-     * Gets an array of registered HierarchyListeners for
-     * this Component.
+     * Gets an array of registered HierarchyListeners for this Component.
      * 
-     * @return an array of registered HierarchyListeners for
-     * this Component.
+     * @return an array of registered HierarchyListeners for this Component.
      */
     public HierarchyListener[] getHierarchyListeners() {
         return hierarchyListeners.getUserListeners(new HierarchyListener[0]);
@@ -5641,7 +5238,8 @@
     /**
      * Adds the specified hierarchy listener.
      * 
-     * @param l the HierarchyListener.
+     * @param l
+     *            the HierarchyListener.
      */
     public void addHierarchyListener(HierarchyListener l) {
         hierarchyListeners.addUserListener(l);
@@ -5650,17 +5248,19 @@
     /**
      * Removes the hierarchy listener registered for this component.
      * 
-     * @param l the HierarchyListener.
+     * @param l
+     *            the HierarchyListener.
      */
     public void removeHierarchyListener(HierarchyListener l) {
         hierarchyListeners.removeUserListener(l);
     }
 
     /**
-     * Processes a hierarchy event that has occurred on this component
-     * by dispatching it to the registered listeners. 
+     * Processes a hierarchy event that has occurred on this component by
+     * dispatching it to the registered listeners.
      * 
-     * @param e the HierarchyEvent.
+     * @param e
+     *            the HierarchyEvent.
      */
     protected void processHierarchyEvent(HierarchyEvent e) {
         for (HierarchyListener listener : hierarchyListeners.getUserListeners()) {
@@ -5673,8 +5273,8 @@
     }
 
     /**
-     * Gets an array of HierarchyBoundsListener objects registered
-     * to this Component.
+     * Gets an array of HierarchyBoundsListener objects registered to this
+     * Component.
      * 
      * @return an array of HierarchyBoundsListener objects.
      */
@@ -5685,7 +5285,8 @@
     /**
      * Adds the specified hierarchy bounds listener.
      * 
-     * @param l the HierarchyBoundsListener.
+     * @param l
+     *            the HierarchyBoundsListener.
      */
     public void addHierarchyBoundsListener(HierarchyBoundsListener l) {
         hierarchyBoundsListeners.addUserListener(l);
@@ -5694,17 +5295,19 @@
     /**
      * Removes the hierarchy bounds listener registered for this Component.
      * 
-     * @param l the HierarchyBoundsListener.
+     * @param l
+     *            the HierarchyBoundsListener.
      */
     public void removeHierarchyBoundsListener(HierarchyBoundsListener l) {
         hierarchyBoundsListeners.removeUserListener(l);
     }
 
     /**
-     * Processes a hierarchy bounds event that has occurred on this component
-     * by dispatching it to the registered listeners.
-     *  
-     * @param e the HierarchyBoundsEvent.
+     * Processes a hierarchy bounds event that has occurred on this component by
+     * dispatching it to the registered listeners.
+     * 
+     * @param e
+     *            the HierarchyBoundsEvent.
      */
     protected void processHierarchyBoundsEvent(HierarchyEvent e) {
         for (HierarchyBoundsListener listener : hierarchyBoundsListeners.getUserListeners()) {
@@ -5731,7 +5334,8 @@
     /**
      * Adds the specified key listener.
      * 
-     * @param l the KeyListener.
+     * @param l
+     *            the KeyListener.
      */
     public void addKeyListener(KeyListener l) {
         keyListeners.addUserListener(l);
@@ -5740,7 +5344,8 @@
     /**
      * Adds the awt key listener.
      * 
-     * @param l the l
+     * @param l
+     *            the l.
      */
     void addAWTKeyListener(KeyListener l) {
         enableAWTEvents(AWTEvent.KEY_EVENT_MASK);
@@ -5750,17 +5355,19 @@
     /**
      * Removes the key listener registered for this Component.
      * 
-     * @param l the KeyListener.
+     * @param l
+     *            the KeyListener.
      */
     public void removeKeyListener(KeyListener l) {
         keyListeners.removeUserListener(l);
     }
 
     /**
-     * Processes a key event that has occurred on this component
-     * by dispatching it to the registered listeners.
+     * Processes a key event that has occurred on this component by dispatching
+     * it to the registered listeners.
      * 
-     * @param e the KeyEvent.
+     * @param e
+     *            the KeyEvent.
      */
     protected void processKeyEvent(KeyEvent e) {
         processKeyEventImpl(e, keyListeners.getUserListeners());
@@ -5769,8 +5376,10 @@
     /**
      * Process key event impl.
      * 
-     * @param e the e
-     * @param c the c
+     * @param e
+     *            the e.
+     * @param c
+     *            the c.
      */
     private void processKeyEventImpl(KeyEvent e, Collection<KeyListener> c) {
         for (KeyListener listener : c) {
@@ -5800,7 +5409,8 @@
     /**
      * Adds the specified mouse listener.
      * 
-     * @param l the MouseListener.
+     * @param l
+     *            the MouseListener.
      */
     public void addMouseListener(MouseListener l) {
         mouseListeners.addUserListener(l);
@@ -5809,7 +5419,8 @@
     /**
      * Adds the awt mouse listener.
      * 
-     * @param l the l
+     * @param l
+     *            the l.
      */
     void addAWTMouseListener(MouseListener l) {
         enableAWTEvents(AWTEvent.MOUSE_EVENT_MASK);
@@ -5819,7 +5430,8 @@
     /**
      * Adds the awt mouse motion listener.
      * 
-     * @param l the l
+     * @param l
+     *            the l.
      */
     void addAWTMouseMotionListener(MouseMotionListener l) {
         enableAWTEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);
@@ -5829,7 +5441,8 @@
     /**
      * Adds the awt component listener.
      * 
-     * @param l the l
+     * @param l
+     *            the l.
      */
     void addAWTComponentListener(ComponentListener l) {
         enableAWTEvents(AWTEvent.COMPONENT_EVENT_MASK);
@@ -5839,7 +5452,8 @@
     /**
      * Adds the awt input method listener.
      * 
-     * @param l the l
+     * @param l
+     *            the l.
      */
     void addAWTInputMethodListener(InputMethodListener l) {
         enableAWTEvents(AWTEvent.INPUT_METHOD_EVENT_MASK);
@@ -5849,7 +5463,8 @@
     /**
      * Adds the awt mouse wheel listener.
      * 
-     * @param l the l
+     * @param l
+     *            the l.
      */
     void addAWTMouseWheelListener(MouseWheelListener l) {
         enableAWTEvents(AWTEvent.MOUSE_WHEEL_EVENT_MASK);
@@ -5859,17 +5474,19 @@
     /**
      * Removes the mouse listener registered for this Component.
      * 
-     * @param l the MouseListener.
+     * @param l
+     *            the MouseListener.
      */
     public void removeMouseListener(MouseListener l) {
         mouseListeners.removeUserListener(l);
     }
 
     /**
-     * Processes a mouse event that has occurred on this component
-     * by dispatching it to the registered listeners.
+     * Processes a mouse event that has occurred on this component by
+     * dispatching it to the registered listeners.
      * 
-     * @param e the MouseEvent.
+     * @param e
+     *            the MouseEvent.
      */
     protected void processMouseEvent(MouseEvent e) {
         processMouseEventImpl(e, mouseListeners.getUserListeners());
@@ -5878,8 +5495,10 @@
     /**
      * Process mouse event impl.
      * 
-     * @param e the e
-     * @param c the c
+     * @param e
+     *            the e.
+     * @param c
+     *            the c.
      */
     private void processMouseEventImpl(MouseEvent e, Collection<MouseListener> c) {
         for (MouseListener listener : c) {
@@ -5906,8 +5525,10 @@
     /**
      * Process mouse motion event impl.
      * 
-     * @param e the e
-     * @param c the c
+     * @param e
+     *            the e.
+     * @param c
+     *            the c.
      */
     private void processMouseMotionEventImpl(MouseEvent e, Collection<MouseMotionListener> c) {
         for (MouseMotionListener listener : c) {
@@ -5923,11 +5544,9 @@
     }
 
     /**
-     * Gets an array of the mouse motion listeners registered to
-     * the Component.
+     * Gets an array of the mouse motion listeners registered to the Component.
      * 
-     * @return an array of the MouseMotionListeners registered to
-     * the Component.
+     * @return an array of the MouseMotionListeners registered to the Component.
      */
     public MouseMotionListener[] getMouseMotionListeners() {
         return mouseMotionListeners.getUserListeners(new MouseMotionListener[0]);
@@ -5936,7 +5555,8 @@
     /**
      * Adds the specified mouse motion listener.
      * 
-     * @param l the MouseMotionListener.
+     * @param l
+     *            the MouseMotionListener.
      */
     public void addMouseMotionListener(MouseMotionListener l) {
         mouseMotionListeners.addUserListener(l);
@@ -5945,28 +5565,28 @@
     /**
      * Removes the mouse motion listener registered for this component.
      * 
-     * @param l the MouseMotionListener.
+     * @param l
+     *            the MouseMotionListener.
      */
     public void removeMouseMotionListener(MouseMotionListener l) {
         mouseMotionListeners.removeUserListener(l);
     }
 
     /**
-     * Processes a mouse motion event that has occurred on this component
-     * by dispatching it to the registered listeners.
+     * Processes a mouse motion event that has occurred on this component by
+     * dispatching it to the registered listeners.
      * 
-     * @param e the MouseEvent.
+     * @param e
+     *            the MouseEvent.
      */
     protected void processMouseMotionEvent(MouseEvent e) {
         processMouseMotionEventImpl(e, mouseMotionListeners.getUserListeners());
     }
 
     /**
-     * Gets an array of the mouse wheel listeners registered to
-     * the Component.
+     * Gets an array of the mouse wheel listeners registered to the Component.
      * 
-     * @return an array of the MouseWheelListeners registered to
-     * the Component.
+     * @return an array of the MouseWheelListeners registered to the Component.
      */
     public MouseWheelListener[] getMouseWheelListeners() {
         return mouseWheelListeners.getUserListeners(new MouseWheelListener[0]);
@@ -5975,7 +5595,8 @@
     /**
      * Adds the specified mouse wheel listener.
      * 
-     * @param l the MouseWheelListener.
+     * @param l
+     *            the MouseWheelListener.
      */
     public void addMouseWheelListener(MouseWheelListener l) {
         mouseWheelListeners.addUserListener(l);
@@ -5984,28 +5605,30 @@
     /**
      * Removes the mouse wheel listener registered for this component.
      * 
-     * @param l the MouseWheelListener.
+     * @param l
+     *            the MouseWheelListener.
      */
     public void removeMouseWheelListener(MouseWheelListener l) {
         mouseWheelListeners.removeUserListener(l);
     }
 
     /**
-     * Processes a mouse wheel event that has occurred on this component
-     * by dispatching it to the registered listeners.
+     * Processes a mouse wheel event that has occurred on this component by
+     * dispatching it to the registered listeners.
      * 
-     * @param e the MouseWheelEvent.
+     * @param e
+     *            the MouseWheelEvent.
      */
     protected void processMouseWheelEvent(MouseWheelEvent e) {
         processMouseWheelEventImpl(e, mouseWheelListeners.getUserListeners());
     }
 
     /**
-     * Gets an array of the InputMethodListener listeners 
-     * registered to the Component.
+     * Gets an array of the InputMethodListener listeners registered to the
+     * Component.
      * 
-     * @return an array of the InputMethodListener listeners 
-     * registered to the Component.
+     * @return an array of the InputMethodListener listeners registered to the
+     *         Component.
      */
     public InputMethodListener[] getInputMethodListeners() {
         return inputMethodListeners.getUserListeners(new InputMethodListener[0]);
@@ -6014,7 +5637,8 @@
     /**
      * Adds the specified input method listener.
      * 
-     * @param l the InputMethodListener.
+     * @param l
+     *            the InputMethodListener.
      */
     public void addInputMethodListener(InputMethodListener l) {
         inputMethodListeners.addUserListener(l);
@@ -6023,17 +5647,19 @@
     /**
      * Removes the input method listener registered for this component.
      * 
-     * @param l the InputMethodListener.
+     * @param l
+     *            the InputMethodListener.
      */
     public void removeInputMethodListener(InputMethodListener l) {
         inputMethodListeners.removeUserListener(l);
     }
 
     /**
-     * Processes an input method event that has occurred on this component
-     * by dispatching it to the registered listeners.
+     * Processes an input method event that has occurred on this component by
+     * dispatching it to the registered listeners.
      * 
-     * @param e the InputMethodEvent.
+     * @param e
+     *            the InputMethodEvent.
      */
     protected void processInputMethodEvent(InputMethodEvent e) {
         processInputMethodEventImpl(e, inputMethodListeners.getUserListeners());
@@ -6042,11 +5668,12 @@
     /**
      * Process input method event impl.
      * 
-     * @param e the e
-     * @param c the c
+     * @param e
+     *            the e.
+     * @param c
+     *            the c.
      */
-    private void processInputMethodEventImpl(InputMethodEvent e,
-            Collection<InputMethodListener> c) {
+    private void processInputMethodEventImpl(InputMethodEvent e, Collection<InputMethodListener> c) {
         for (InputMethodListener listener : c) {
             switch (e.getID()) {
                 case InputMethodEvent.CARET_POSITION_CHANGED:
@@ -6059,31 +5686,28 @@
         }
     }
 
-    //???AWT
+    // ???AWT
     /*
-    public Point getMousePosition() throws HeadlessException {
-        Point absPointerPos = MouseInfo.getPointerInfo().getLocation();
-        Window winUnderPtr = toolkit.dispatcher.mouseDispatcher.findWindowAt(absPointerPos);
-        Point pointerPos = MouseDispatcher.convertPoint(null, absPointerPos, winUnderPtr);
-        boolean isUnderPointer = false;
-        if (winUnderPtr == null) {
-            return null;
-        }
-        isUnderPointer = winUnderPtr.isComponentAt(this, pointerPos);
-        if (isUnderPointer) {
-            return MouseDispatcher.convertPoint(null, absPointerPos, this);
-        }
-        return null;
-    }
-    */
+     * public Point getMousePosition() throws HeadlessException { Point
+     * absPointerPos = MouseInfo.getPointerInfo().getLocation(); Window
+     * winUnderPtr =
+     * toolkit.dispatcher.mouseDispatcher.findWindowAt(absPointerPos); Point
+     * pointerPos = MouseDispatcher.convertPoint(null, absPointerPos,
+     * winUnderPtr); boolean isUnderPointer = false; if (winUnderPtr == null) {
+     * return null; } isUnderPointer = winUnderPtr.isComponentAt(this,
+     * pointerPos); if (isUnderPointer) { return
+     * MouseDispatcher.convertPoint(null, absPointerPos, this); } return null; }
+     */
 
     /**
      * Set native caret at the given position <br>
      * Note: this method takes AWT lock inside because it walks through the
      * component hierarchy.
      * 
-     * @param x the x
-     * @param y the y
+     * @param x
+     *            the x.
+     * @param y
+     *            the y.
      */
     void setCaretPos(final int x, final int y) {
         Runnable r = new Runnable() {
@@ -6106,35 +5730,34 @@
     /**
      * This method should be called only at event dispatch thread.
      * 
-     * @param x the x
-     * @param y the y
+     * @param x
+     *            the x.
+     * @param y
+     *            the y.
      */
     void setCaretPosImpl(int x, int y) {
         Component c = this;
         while ((c != null) && c.behaviour.isLightweight()) {
             x += c.x;
             y += c.y;
-            //???AWT: c = c.getParent();
+            // ???AWT: c = c.getParent();
         }
         if (c == null) {
             return;
         }
-        //???AWT
+        // ???AWT
         /*
-        if (c instanceof Window) {
-            Insets insets = c.getNativeInsets();
-            x -= insets.left;
-            y -= insets.top;
-        }
-        toolkit.getWindowFactory().setCaretPosition(x, y);
-        */
+         * if (c instanceof Window) { Insets insets = c.getNativeInsets(); x -=
+         * insets.left; y -= insets.top; }
+         * toolkit.getWindowFactory().setCaretPosition(x, y);
+         */
     }
 
     // to be overridden in standard components such as Button and List
     /**
      * Gets the default minimum size.
      * 
-     * @return the default minimum size
+     * @return the default minimum size.
      */
     Dimension getDefaultMinimumSize() {
         return null;
@@ -6144,7 +5767,7 @@
     /**
      * Gets the default preferred size.
      * 
-     * @return the default preferred size
+     * @return the default preferred size.
      */
     Dimension getDefaultPreferredSize() {
         return null;
@@ -6157,30 +5780,28 @@
     void resetDefaultSize() {
     }
 
-    //???AWT
+    // ???AWT
     /*
-    ComponentBehavior createBehavior() {
-        return new LWBehavior(this);
-    }
-    */
+     * ComponentBehavior createBehavior() { return new LWBehavior(this); }
+     */
 
     /**
      * Gets the default background.
      * 
-     * @return the default background
+     * @return the default background.
      */
     Color getDefaultBackground() {
-        //???AWT: return getWindowAncestor().getDefaultBackground();
+        // ???AWT: return getWindowAncestor().getDefaultBackground();
         return getBackground();
     }
 
     /**
      * Gets the default foreground.
      * 
-     * @return the default foreground
+     * @return the default foreground.
      */
     Color getDefaultForeground() {
-        //???AWT return getWindowAncestor().getDefaultForeground();
+        // ???AWT return getWindowAncestor().getDefaultForeground();
         return getForeground();
     }
 
@@ -6188,7 +5809,8 @@
      * Called when native resource for this component is created (for
      * heavyweights only).
      * 
-     * @param win the win
+     * @param win
+     *            the win.
      */
     void nativeWindowCreated(NativeWindow win) {
         // to be overridden
@@ -6198,48 +5820,37 @@
      * Determine the component's area hidden behind the windows that have higher
      * Z-order, including windows of other applications.
      * 
-     * @param image the image
-     * @param destLocation the dest location
-     * @param destSize the dest size
-     * @param source the source
-     * 
-     * @return the calculated region, or null if it cannot be determined
+     * @param image
+     *            the image.
+     * @param destLocation
+     *            the dest location.
+     * @param destSize
+     *            the dest size.
+     * @param source
+     *            the source.
+     * @return the calculated region, or null if it cannot be determined.
      */
-    //???AWT
+    // ???AWT
     /*
-    MultiRectArea getObscuredRegion(Rectangle part) {
-        if (!visible || parent == null || !parent.visible) {
-            return null;
-        }
-        Rectangle r = new Rectangle(0, 0, w, h);
-        if (part != null) {
-            r = r.intersection(part);
-        }
-        if (r.isEmpty()) {
-            return null;
-        }
-        r.translate(x, y);
-        MultiRectArea ret = parent.getObscuredRegion(r);
-        if (ret != null) {
-            parent.addObscuredRegions(ret, this);
-            ret.translate(-x, -y);
-            ret.intersect(new Rectangle(0, 0, w, h));
-        }
-        return ret;
-    }
-    */
+     * MultiRectArea getObscuredRegion(Rectangle part) { if (!visible || parent
+     * == null || !parent.visible) { return null; } Rectangle r = new
+     * Rectangle(0, 0, w, h); if (part != null) { r = r.intersection(part); } if
+     * (r.isEmpty()) { return null; } r.translate(x, y); MultiRectArea ret =
+     * parent.getObscuredRegion(r); if (ret != null) {
+     * parent.addObscuredRegions(ret, this); ret.translate(-x, -y);
+     * ret.intersect(new Rectangle(0, 0, w, h)); } return ret; }
+     */
 
-    //???AWT
+    // ???AWT
     /*
-    private void readObject(ObjectInputStream stream) throws IOException,
-            ClassNotFoundException {
-        stream.defaultReadObject();
-        FieldsAccessor accessor = new FieldsAccessor(Component.class, this);
-        accessor.set("toolkit", Toolkit.getDefaultToolkit()); //$NON-NLS-1$
-        accessor.set("behaviour", createBehavior()); //$NON-NLS-1$
-        accessor.set("componentLock", new Object()); // $NON-LOCK-1$ //$NON-NLS-1$
-    }
-    */
+     * private void readObject(ObjectInputStream stream) throws IOException,
+     * ClassNotFoundException { stream.defaultReadObject(); FieldsAccessor
+     * accessor = new FieldsAccessor(Component.class, this);
+     * accessor.set("toolkit", Toolkit.getDefaultToolkit()); //$NON-NLS-1$
+     * accessor.set("behaviour", createBehavior()); //$NON-NLS-1$
+     * accessor.set("componentLock", new Object()); // $NON-LOCK-1$
+     * //$NON-NLS-1$ }
+     */
 
     final void onDrawImage(Image image, Point destLocation, Dimension destSize, Rectangle source) {
         ImageParameters imageParams;
@@ -6272,33 +5883,37 @@
         }
     }
 
-    //???AWT
+    // ???AWT
     /*
-    private void invalidateRealParent() {
-        Container realParent = getRealParent();
-        if ((realParent != null) && realParent.isValid()) {
-            realParent.invalidate();
-        }
-    }
-    */
+     * private void invalidateRealParent() { Container realParent =
+     * getRealParent(); if ((realParent != null) && realParent.isValid()) {
+     * realParent.invalidate(); } }
+     */
 
     /**
      * The Class ImageParameters.
      */
     private class ImageParameters {
-        
-        /** The drawing params. */
+
+        /**
+         * The drawing params.
+         */
         private final LinkedList<DrawingParameters> drawingParams = new LinkedList<DrawingParameters>();
 
-        /** The size. */
+        /**
+         * The size.
+         */
         Dimension size = new Dimension(Component.this.w, Component.this.h);
 
         /**
          * Adds the drawing.
          * 
-         * @param destLocation the dest location
-         * @param destSize the dest size
-         * @param source the source
+         * @param destLocation
+         *            the dest location.
+         * @param destSize
+         *            the dest size.
+         * @param source
+         *            the source.
          */
         void addDrawing(Point destLocation, Dimension destSize, Rectangle source) {
             drawingParams.add(new DrawingParameters(destLocation, destSize, source));
@@ -6307,7 +5922,7 @@
         /**
          * Drawing parameters iterator.
          * 
-         * @return the iterator< drawing parameters>
+         * @return the iterator< drawing parameters>.
          */
         Iterator<DrawingParameters> drawingParametersIterator() {
             return drawingParams.iterator();
@@ -6317,22 +5932,31 @@
          * The Class DrawingParameters.
          */
         class DrawingParameters {
-            
-            /** The dest location. */
+
+            /**
+             * The dest location.
+             */
             Point destLocation;
 
-            /** The dest size. */
+            /**
+             * The dest size.
+             */
             Dimension destSize;
 
-            /** The source. */
+            /**
+             * The source.
+             */
             Rectangle source;
 
             /**
              * Instantiates a new drawing parameters.
              * 
-             * @param destLocation the dest location
-             * @param destSize the dest size
-             * @param source the source
+             * @param destLocation
+             *            the dest location.
+             * @param destSize
+             *            the dest size.
+             * @param source
+             *            the source.
              */
             DrawingParameters(Point destLocation, Dimension destSize, Rectangle source) {
                 this.destLocation = new Point(destLocation);
@@ -6353,44 +5977,32 @@
     /**
      * TextComponent support.
      * 
-     * @param e the e
+     * @param e
+     *            the e.
+     * @return true, if dispatch event to im.
+     */
+    // ???AWT
+    /*
+     * private TextKit textKit = null; TextKit getTextKit() { return textKit; }
+     * void setTextKit(TextKit kit) { textKit = kit; }
+     */
+
+    /**
+     * TextField support.
+     */
+    // ???AWT
+    /*
+     * private TextFieldKit textFieldKit = null; TextFieldKit getTextFieldKit()
+     * { return textFieldKit; } void setTextFieldKit(TextFieldKit kit) {
+     * textFieldKit = kit; }
+     */
+
+    /**
+     * Dispatches input & focus events to input method context.
      * 
-     * @return true, if dispatch event to im
-     */
-    //???AWT
-    /*
-    private TextKit textKit = null;
-
-    TextKit getTextKit() {
-        return textKit;
-    }
-
-    void setTextKit(TextKit kit) {
-        textKit = kit;
-    }
-    */
-
-    /**
-     * TextField support
-     */
-    //???AWT
-    /*
-    private TextFieldKit textFieldKit = null;
-
-    TextFieldKit getTextFieldKit() {
-        return textFieldKit;
-    }
-
-    void setTextFieldKit(TextFieldKit kit) {
-        textFieldKit = kit;
-    }
-    */
-
-    /**
-     * Dispatches input & focus events to input method
-     * context.
-     * @param e event to pass to InputContext.dispatchEvent()
-     * @return true if event was consumed by IM, false otherwise
+     * @param e
+     *            event to pass to InputContext.dispatchEvent().
+     * @return true if event was consumed by IM, false otherwise.
      */
     private boolean dispatchEventToIM(AWTEvent e) {
         InputContext ic = getInputContext();
diff --git a/awt/java/awt/ComponentBehavior.java b/awt/java/awt/ComponentBehavior.java
index 89c9999..f4e8ffb 100644
--- a/awt/java/awt/ComponentBehavior.java
+++ b/awt/java/awt/ComponentBehavior.java
@@ -24,7 +24,7 @@
 
 /**
  * The interface of the helper object that encapsulates the difference
- * between lightweight and heavyweight components. 
+ * between lightweight and heavyweight components.
  */
 interface ComponentBehavior {
 
diff --git a/awt/java/awt/ComponentOrientation.java b/awt/java/awt/ComponentOrientation.java
index ddb118d..5acc11a 100644
--- a/awt/java/awt/ComponentOrientation.java
+++ b/awt/java/awt/ComponentOrientation.java
@@ -18,44 +18,59 @@
  * @author Michael Danilov, Dmitry A. Durnev
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.io.Serializable;
 import java.util.*;
 
 /**
- * The ComponentOrientation class specifies the language-sensitive orientation 
- * of component's elements or text. It is used to reflect the differences in this 
- * ordering between different writting systems. The ComponentOrientation class 
- * indicates the orientation of the elements/text in the horizontal direction
- * ("left to right" or "right to left") and in the vertical direction
+ * The ComponentOrientation class specifies the language-sensitive orientation
+ * of component's elements or text. It is used to reflect the differences in
+ * this ordering between different writing systems. The ComponentOrientation
+ * class indicates the orientation of the elements/text in the horizontal
+ * direction ("left to right" or "right to left") and in the vertical direction
  * ("top to bottom" or "bottom to top").
+ * 
+ * @since Android 1.0
  */
 public final class ComponentOrientation implements Serializable {
-    
-    /** The Constant serialVersionUID. */
+
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = -4113291392143563828L;
 
-    /** 
+    /**
      * The Constant LEFT_TO_RIGHT indicates that items run left to right.
      */
     public static final ComponentOrientation LEFT_TO_RIGHT = new ComponentOrientation(true, true);
 
-    /** 
+    /**
      * The Constant RIGHT_TO_LEFT indicates that items run right to left.
      */
     public static final ComponentOrientation RIGHT_TO_LEFT = new ComponentOrientation(true, false);
 
-    /** The Constant UNKNOWN indicates that a component's orientation is not set. */
+    /**
+     * The Constant UNKNOWN indicates that a component's orientation is not set.
+     */
     public static final ComponentOrientation UNKNOWN = new ComponentOrientation(true, true);
 
-    /** The Constant rlLangs. */
-    private static final Set<String> rlLangs = new HashSet<String>(); //RIGHT_TO_LEFT languages
+    /**
+     * The Constant rlLangs.
+     */
+    private static final Set<String> rlLangs = new HashSet<String>(); // RIGHT_TO_LEFT
 
-    /** The horizontal. */
+    // languages
+
+    /**
+     * The horizontal.
+     */
     private final boolean horizontal;
 
-    /** The left2right. */
+    /**
+     * The left2right.
+     */
     private final boolean left2right;
 
     static {
@@ -68,10 +83,9 @@
     /**
      * Gets the orientation for the given ResourceBundle's localization.
      * 
-     * @param bdl the ResourceBundle.
-     * 
+     * @param bdl
+     *            the ResourceBundle.
      * @return the ComponentOrientation.
-     * 
      * @deprecated Use getOrientation(java.util.Locale) method.
      */
     @Deprecated
@@ -79,12 +93,11 @@
         Object obj = null;
         try {
             obj = bdl.getObject("Orientation"); //$NON-NLS-1$
-        }
-        catch (MissingResourceException mre) {
+        } catch (MissingResourceException mre) {
             obj = null;
         }
         if (obj instanceof ComponentOrientation) {
-            return (ComponentOrientation) obj;
+            return (ComponentOrientation)obj;
         }
         Locale locale = bdl.getLocale();
         if (locale == null) {
@@ -96,8 +109,8 @@
     /**
      * Gets the orientation for the specified locale.
      * 
-     * @param locale the specified Locale.
-     * 
+     * @param locale
+     *            the specified Locale.
      * @return the ComponentOrientation.
      */
     public static ComponentOrientation getOrientation(Locale locale) {
@@ -108,8 +121,10 @@
     /**
      * Instantiates a new component orientation.
      * 
-     * @param hor whether the items should be arranged horizontally
-     * @param l2r whether this orientation specifies a left-to-right flow
+     * @param hor
+     *            whether the items should be arranged horizontally.
+     * @param l2r
+     *            whether this orientation specifies a left-to-right flow.
      */
     private ComponentOrientation(boolean hor, boolean l2r) {
         horizontal = hor;
@@ -117,11 +132,10 @@
     }
 
     /**
-     * Returns true if the text of the of writing systems arranged
-     * horizontally.
+     * Returns true if the text of the of writing systems arranged horizontally.
      * 
-     * @return true, if the text is written horizontally, false 
-     * for a vertical arrangement. 
+     * @return true, if the text is written horizontally, false for a vertical
+     *         arrangement.
      */
     public boolean isHorizontal() {
         return horizontal;
@@ -130,8 +144,8 @@
     /**
      * Returns true if the text is arranged from left to right.
      * 
-     * @return true, for writing systems written from left to right; 
-     * false for right-to-left.
+     * @return true, for writing systems written from left to right; false for
+     *         right-to-left.
      */
     public boolean isLeftToRight() {
         return left2right;
diff --git a/awt/java/awt/Composite.java b/awt/java/awt/Composite.java
index 8e5b90a..d1730fe 100644
--- a/awt/java/awt/Composite.java
+++ b/awt/java/awt/Composite.java
@@ -18,30 +18,34 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.awt.image.ColorModel;
 
 /**
- * The Composite interface allows the methods to compose a draw primitive 
- * on the graphics area. The classes implementing this interface provides 
- * the rules and a method to create the context for a particular operation.
+ * The Composite interface allows the methods to compose a draw primitive on the
+ * graphics area. The classes implementing this interface provides the rules and
+ * a method to create the context for a particular operation.
+ * 
+ * @since Android 1.0
  */
 public interface Composite {
 
     /**
-     * Creates a CompositeContext which defines the encapsulated and 
-     * optimized environment for a compositing operation. Several contexts 
-     * can exist for a single Composite object.
+     * Creates a CompositeContext which defines the encapsulated and optimized
+     * environment for a compositing operation. Several contexts can exist for a
+     * single Composite object.
      * 
-     * @param srcColorModel the source's ColorModel.
-     * @param dstColorModel the destination's ColorModel.
-     * @param hints the RenderingHints.
-     * 
+     * @param srcColorModel
+     *            the source's ColorModel.
+     * @param dstColorModel
+     *            the destination's ColorModel.
+     * @param hints
+     *            the RenderingHints.
      * @return the CompositeContext object.
      */
-    public CompositeContext createContext(ColorModel srcColorModel,
-            ColorModel dstColorModel, RenderingHints hints);
+    public CompositeContext createContext(ColorModel srcColorModel, ColorModel dstColorModel,
+            RenderingHints hints);
 
 }
-
diff --git a/awt/java/awt/CompositeContext.java b/awt/java/awt/CompositeContext.java
index c676032..795640d 100644
--- a/awt/java/awt/CompositeContext.java
+++ b/awt/java/awt/CompositeContext.java
@@ -18,25 +18,31 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.awt.image.Raster;
 import java.awt.image.WritableRaster;
 
 /**
- * The CompositeContext interface specifies the encapsulated and optimized 
- * environment for a compositing operation. 
+ * The CompositeContext interface specifies the encapsulated and optimized
+ * environment for a compositing operation.
+ * 
+ * @since Android 1.0
  */
 public interface CompositeContext {
 
     /**
-     * Composes the two source Raster objects and places the result in the 
-     * destination WritableRaster. 
+     * Composes the two source Raster objects and places the result in the
+     * destination WritableRaster.
      * 
-     * @param src the source Raster.
-     * @param dstIn the destination Raster.
-     * @param dstOut the WritableRaster object where the result of
-     * composing operation is stored.
+     * @param src
+     *            the source Raster.
+     * @param dstIn
+     *            the destination Raster.
+     * @param dstOut
+     *            the WritableRaster object where the result of composing
+     *            operation is stored.
      */
     public void compose(Raster src, Raster dstIn, WritableRaster dstOut);
 
@@ -46,4 +52,3 @@
     public void dispose();
 
 }
-
diff --git a/awt/java/awt/Cursor.java b/awt/java/awt/Cursor.java
index 625686c..0a0cc84 100644
--- a/awt/java/awt/Cursor.java
+++ b/awt/java/awt/Cursor.java
@@ -18,6 +18,7 @@
  * @author Dmitry A. Durnev
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.io.File;
@@ -35,61 +36,99 @@
 
 /**
  * The Cursor class represents the bitmap of the mouse cursor.
+ * 
+ * @since Android 1.0
  */
 public class Cursor implements Serializable {
-    
-    /** The Constant serialVersionUID. */
+
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = 8028237497568985504L;
-    
-    /** The Constant DEFAULT_CURSOR indicates the default cursor type. */
+
+    /**
+     * The Constant DEFAULT_CURSOR indicates the default cursor type.
+     */
     public static final int DEFAULT_CURSOR = 0;
 
-    /** The Constant CROSSHAIR_CURSOR cursor type. */
+    /**
+     * The Constant CROSSHAIR_CURSOR cursor type.
+     */
     public static final int CROSSHAIR_CURSOR = 1;
 
-    /** The Constant TEXT_CURSOR cursor type. */
+    /**
+     * The Constant TEXT_CURSOR cursor type.
+     */
     public static final int TEXT_CURSOR = 2;
 
-    /** The Constant WAIT_CURSOR cursor type. */
+    /**
+     * The Constant WAIT_CURSOR cursor type.
+     */
     public static final int WAIT_CURSOR = 3;
 
-    /** The Constant SW_RESIZE_CURSOR cursor type. */
+    /**
+     * The Constant SW_RESIZE_CURSOR cursor type.
+     */
     public static final int SW_RESIZE_CURSOR = 4;
 
-    /** The Constant SE_RESIZE_CURSOR cursor type. */
+    /**
+     * The Constant SE_RESIZE_CURSOR cursor type.
+     */
     public static final int SE_RESIZE_CURSOR = 5;
 
-    /** The Constant NW_RESIZE_CURSOR cursor type. */
+    /**
+     * The Constant NW_RESIZE_CURSOR cursor type.
+     */
     public static final int NW_RESIZE_CURSOR = 6;
 
-    /** The Constant NE_RESIZE_CURSOR cursor type. */
+    /**
+     * The Constant NE_RESIZE_CURSOR cursor type.
+     */
     public static final int NE_RESIZE_CURSOR = 7;
 
-    /** The Constant N_RESIZE_CURSOR cursor type. */
+    /**
+     * The Constant N_RESIZE_CURSOR cursor type.
+     */
     public static final int N_RESIZE_CURSOR = 8;
 
-    /** The Constant S_RESIZE_CURSOR cursor type. */
+    /**
+     * The Constant S_RESIZE_CURSOR cursor type.
+     */
     public static final int S_RESIZE_CURSOR = 9;
 
-    /** The Constant W_RESIZE_CURSOR cursor type. */
+    /**
+     * The Constant W_RESIZE_CURSOR cursor type.
+     */
     public static final int W_RESIZE_CURSOR = 10;
 
-    /** The Constant E_RESIZE_CURSOR cursor type. */
+    /**
+     * The Constant E_RESIZE_CURSOR cursor type.
+     */
     public static final int E_RESIZE_CURSOR = 11;
 
-    /** The Constant HAND_CURSOR cursor type. */
+    /**
+     * The Constant HAND_CURSOR cursor type.
+     */
     public static final int HAND_CURSOR = 12;
 
-    /** The Constant MOVE_CURSOR cursor type. */
+    /**
+     * The Constant MOVE_CURSOR cursor type.
+     */
     public static final int MOVE_CURSOR = 13;
 
-    /** A mapping from names to system custom cursors. */
+    /**
+     * A mapping from names to system custom cursors.
+     */
     static Map<String, Cursor> systemCustomCursors;
-    
-    /** The cursor props. */
+
+    /**
+     * The cursor props.
+     */
     static Properties cursorProps;
 
-    /** The Constant predefinedNames. */
+    /**
+     * The Constant predefinedNames.
+     */
     static final String[] predefinedNames = {
             "Default", "Crosshair", "Text", "Wait", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
             "Southwest Resize", "Southeast Resize", //$NON-NLS-1$ //$NON-NLS-2$
@@ -99,41 +138,52 @@
 
     };
 
-    /** The predefined set of cursors. */
+    /**
+     * The predefined set of cursors.
+     */
     protected static Cursor[] predefined = {
-            new Cursor(DEFAULT_CURSOR), null, null, null,
-            null, null, null, null,
-            null, null, null, null,
-            null, null
+            new Cursor(DEFAULT_CURSOR), null, null, null, null, null, null, null, null, null, null,
+            null, null, null
     };
 
-    /** The Constant CUSTOM_CURSOR is associated with all custom cursor types. 
+    /**
+     * The Constant CUSTOM_CURSOR is associated with all custom cursor types.
      * (Those which are not predefined)
      */
     public static final int CUSTOM_CURSOR = -1;
 
-    /** The name of the cursor. */
+    /**
+     * The name of the cursor.
+     */
     protected String name;
 
-    /** The type of the cursor, chosen from the list of cursor type constants. */
+    /**
+     * The type of the cursor, chosen from the list of cursor type constants.
+     */
     private final int type;
-    
-    /** The native cursor. */
+
+    /**
+     * The native cursor.
+     */
     private transient NativeCursor nativeCursor;
-    
-    /** The exact point on the cursor image that indicates which point 
-     * the cursor is selecting (pointing to). The coordinates are given 
-     * with respect the origin of the Image (its upper left corner).
+
+    /**
+     * The exact point on the cursor image that indicates which point the cursor
+     * is selecting (pointing to). The coordinates are given with respect the
+     * origin of the Image (its upper left corner).
      */
     private Point hotSpot;
-    
-    /** The image to draw on the screen representing the cursor. */
+
+    /**
+     * The image to draw on the screen representing the cursor.
+     */
     private Image image;
 
     /**
      * Instantiates a new cursor with the specified name.
      * 
-     * @param name the name of cursor.
+     * @param name
+     *            the name of cursor.
      */
     protected Cursor(String name) {
         this(name, null, new Point());
@@ -142,7 +192,8 @@
     /**
      * Instantiates a new cursor of the specified type.
      * 
-     * @param type the type of cursor.
+     * @param type
+     *            the type of cursor.
      */
     public Cursor(int type) {
         checkType(type);
@@ -155,9 +206,12 @@
     /**
      * Instantiates a new cursor.
      * 
-     * @param name the name
-     * @param img the img
-     * @param hotSpot the hot spot
+     * @param name
+     *            the name.
+     * @param img
+     *            the img.
+     * @param hotSpot
+     *            the hot spot.
      */
     Cursor(String name, Image img, Point hotSpot) {
         this.name = name;
@@ -167,10 +221,11 @@
     }
 
     /**
-     * Finalize method overrided finalize method from Object class.
+     * Finalize method overrides the finalize method from Object class.
      * 
-     * @throws Throwable if the native cursor is not null and throws
-     * a throwable when destroyed.
+     * @throws Throwable
+     *             if the native cursor is not null and throws a Throwable when
+     *             destroyed.
      */
     @Override
     protected void finalize() throws Throwable {
@@ -201,7 +256,7 @@
     /**
      * Gets the cursor type.
      * 
-     * @return the cursor type
+     * @return the cursor type.
      */
     public int getType() {
         return type;
@@ -210,8 +265,8 @@
     /**
      * Gets the predefined cursor with the specified type.
      * 
-     * @param type the type of cursor.
-     * 
+     * @param type
+     *            the type of cursor.
      * @return the predefined cursor with the specified type.
      */
     public static Cursor getPredefinedCursor(int type) {
@@ -236,33 +291,33 @@
     /**
      * Gets the specified system custom cursor.
      * 
-     * @param name the name of the desired system cursor.
-     * 
+     * @param name
+     *            the name of the desired system cursor.
      * @return the specific system cursor with the specified name.
-     * 
-     * @throws AWTException if the desired cursor has malformed data
-     * such as an incorrectly defined hot spot.
-     * @throws HeadlessException if the isHeadless method of the GraphicsEnvironment
-     * returns true.
+     * @throws AWTException
+     *             if the desired cursor has malformed data such as an
+     *             incorrectly defined hot spot.
+     * @throws HeadlessException
+     *             if the isHeadless method of the GraphicsEnvironment returns
+     *             true.
      */
-    public static Cursor getSystemCustomCursor(String name)
-    throws AWTException, HeadlessException {
+    public static Cursor getSystemCustomCursor(String name) throws AWTException, HeadlessException {
         Toolkit.checkHeadless();
         return getSystemCustomCursorFromMap(name);
     }
 
     /**
-     * Gets the specified system custom cursor from the map of system custom cursors.
+     * Gets the specified system custom cursor from the map of system custom
+     * cursors.
      * 
-     * @param name the name of the desired cursor.
-     * 
-     * @return the desired system custom cursor from the 
-     * map of system custom cursors.
-     * 
-     * @throws AWTException the AWT exception
+     * @param name
+     *            the name of the desired cursor.
+     * @return the desired system custom cursor from the map of system custom
+     *         cursors.
+     * @throws AWTException
+     *             the AWT exception.
      */
-    private static Cursor getSystemCustomCursorFromMap (String name)
-    throws AWTException {
+    private static Cursor getSystemCustomCursorFromMap(String name) throws AWTException {
         loadCursorProps();
         if (systemCustomCursors == null) {
             systemCustomCursors = new HashMap<String, Cursor>();
@@ -284,8 +339,7 @@
         int x, y;
         try {
             x = new Integer(hotSpotStr.substring(0, idx)).intValue();
-            y = new Integer(hotSpotStr.substring(idx + 1,
-                                                 hotSpotStr.length())).intValue();
+            y = new Integer(hotSpotStr.substring(idx + 1, hotSpotStr.length())).intValue();
         } catch (NumberFormatException nfe) {
             throw new AWTException(exMsg);
         }
@@ -299,7 +353,8 @@
     /**
      * Load cursor props.
      * 
-     * @throws AWTException the AWT exception
+     * @throws AWTException
+     *             the AWT exception.
      */
     private static void loadCursorProps() throws AWTException {
         if (cursorProps != null) {
@@ -308,18 +363,18 @@
         String sep = File.separator;
         String cursorsDir = "lib" + sep + "images" + sep + "cursors"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
         String cursorsAbsDir = System.getProperty("java.home") + sep + //$NON-NLS-1$
-                                cursorsDir;
+                cursorsDir;
         String cursorPropsFileName = "cursors.properties"; //$NON-NLS-1$
-        String cursorPropsFullFileName = (cursorsAbsDir + sep +
-                                          cursorPropsFileName);
+        String cursorPropsFullFileName = (cursorsAbsDir + sep + cursorPropsFileName);
         cursorProps = new Properties();
         try {
-            cursorProps.load(new FileInputStream(new File(
-                    cursorPropsFullFileName)));
+            cursorProps.load(new FileInputStream(new File(cursorPropsFullFileName)));
         } catch (FileNotFoundException e) {
             // awt.142=Exception: class {0} {1} occurred while loading: {2}
             throw new AWTException(Messages.getString("awt.142",//$NON-NLS-1$
-                      new Object[]{e.getClass(), e.getMessage(), cursorPropsFullFileName}));
+                    new Object[] {
+                            e.getClass(), e.getMessage(), cursorPropsFullFileName
+                    }));
         } catch (IOException e) {
             throw new AWTException(e.getMessage());
         }
@@ -329,7 +384,8 @@
     /**
      * Check type.
      * 
-     * @param type the type
+     * @param type
+     *            the type.
      */
     static void checkType(int type) {
         // can't use predefined array here because it may not have been
@@ -344,7 +400,7 @@
     /**
      * Gets the native cursor.
      * 
-     * @return the native cursor
+     * @return the native cursor.
      */
     NativeCursor getNativeCursor() {
         if (nativeCursor != null) {
@@ -354,8 +410,7 @@
         if (type != CUSTOM_CURSOR) {
             nativeCursor = toolkit.createNativeCursor(type);
         } else {
-            nativeCursor = toolkit.createCustomNativeCursor(image, hotSpot,
-                                                            name);
+            nativeCursor = toolkit.createCustomNativeCursor(image, hotSpot, name);
         }
         return nativeCursor;
     }
@@ -363,10 +418,10 @@
     /**
      * Sets the native cursor.
      * 
-     * @param nativeCursor the new native cursor
+     * @param nativeCursor
+     *            the new native cursor.
      */
     void setNativeCursor(NativeCursor nativeCursor) {
         this.nativeCursor = nativeCursor;
     }
 }
-
diff --git a/awt/java/awt/Dimension.java b/awt/java/awt/Dimension.java
index 8137846..6777962 100644
--- a/awt/java/awt/Dimension.java
+++ b/awt/java/awt/Dimension.java
@@ -18,6 +18,7 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.awt.geom.Dimension2D;
@@ -26,26 +27,36 @@
 import org.apache.harmony.misc.HashCode;
 
 /**
- * The Dimension represents the size (width and height) of a component.
- * The width and height values can be negative, but in that case the 
- * behavior of some methods is unexpected. 
+ * The Dimension represents the size (width and height) of a component. The
+ * width and height values can be negative, but in that case the behavior of
+ * some methods is unexpected.
+ * 
+ * @since Android 1.0
  */
 public class Dimension extends Dimension2D implements Serializable {
 
-    /** The Constant serialVersionUID. */
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = 4723952579491349524L;
 
-    /** The width dimension. */
+    /**
+     * The width dimension.
+     */
     public int width;
-    
-    /** The height dimension. */
+
+    /**
+     * The height dimension.
+     */
     public int height;
 
     /**
-     * Instantiates a new Dimension with the same data as the specified Dimension.
+     * Instantiates a new Dimension with the same data as the specified
+     * Dimension.
      * 
-     * @param d the Dimension to copy the data from when creating the 
-     * new Dimension object.
+     * @param d
+     *            the Dimension to copy the data from when creating the new
+     *            Dimension object.
      */
     public Dimension(Dimension d) {
         this(d.width, d.height);
@@ -61,8 +72,10 @@
     /**
      * Instantiates a new Dimension with the specified width and height.
      * 
-     * @param width the width of the new Dimension.
-     * @param height the height of the new Dimension.
+     * @param width
+     *            the width of the new Dimension.
+     * @param height
+     *            the height of the new Dimension.
      */
     public Dimension(int width, int height) {
         setSize(width, height);
@@ -84,10 +97,10 @@
     /**
      * Compares this Dimension object with the specified object.
      * 
-     * @param obj the Object to be compared.
-     * 
-     * @return true, if the specified Object is a Dimension with 
-     * the same width and height data as this Dimension. 
+     * @param obj
+     *            the Object to be compared.
+     * @return true, if the specified Object is a Dimension with the same width
+     *         and height data as this Dimension.
      */
     @Override
     public boolean equals(Object obj) {
@@ -108,16 +121,20 @@
      */
     @Override
     public String toString() {
-        // The output format based on 1.5 release behaviour. It could be obtained in the following way
+        // The output format based on 1.5 release behaviour. It could be
+        // obtained in the following way
         // System.out.println(new Dimension().toString())
         return getClass().getName() + "[width=" + width + ",height=" + height + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
     }
 
     /**
-     * Sets the size of this Dimension object with the specified width and height.
+     * Sets the size of this Dimension object with the specified width and
+     * height.
      * 
-     * @param width the width of the Dimension.
-     * @param height the height of the Dimension.
+     * @param width
+     *            the width of the Dimension.
+     * @param height
+     *            the height of the Dimension.
      */
     public void setSize(int width, int height) {
         this.width = width;
@@ -125,22 +142,24 @@
     }
 
     /**
-     * Sets the size of this Dimension object by copying the 
-     * data from the specified Dimension object.
+     * Sets the size of this Dimension object by copying the data from the
+     * specified Dimension object.
      * 
-     * @param d the Dimension that gives the new size values.
+     * @param d
+     *            the Dimension that gives the new size values.
      */
     public void setSize(Dimension d) {
         setSize(d.width, d.height);
     }
 
     /**
-     * Sets the size of this Dimension object with the specified double width 
+     * Sets the size of this Dimension object with the specified double width
      * and height.
      * 
-     * @param width the width of the Dimension.
-     * @param height the height of the Dimension.
-     * 
+     * @param width
+     *            the width of the Dimension.
+     * @param height
+     *            the height of the Dimension.
      * @see java.awt.geom.Dimension2D#setSize(double, double)
      */
     @Override
@@ -161,7 +180,6 @@
      * Gets the height of the Dimension.
      * 
      * @return the height of the Dimension.
-     * 
      * @see java.awt.geom.Dimension2D#getHeight()
      */
     @Override
@@ -173,7 +191,6 @@
      * Gets the width of the Dimension.
      * 
      * @return the width of the Dimension.
-     * 
      * @see java.awt.geom.Dimension2D#getWidth()
      */
     @Override
@@ -182,4 +199,3 @@
     }
 
 }
-
diff --git a/awt/java/awt/DisplayMode.java b/awt/java/awt/DisplayMode.java
index 082c7b8..8021010 100644
--- a/awt/java/awt/DisplayMode.java
+++ b/awt/java/awt/DisplayMode.java
@@ -18,41 +18,60 @@
  * @author Alexey A. Petrenko
  * @version $Revision$
  */
+
 package java.awt;
 
 /**
- * The DisplayMode class containes the bit depth, height, width and 
- * refresh rate of a GraphicsDevice.
+ * The DisplayMode class contains the bit depth, height, width and refresh rate
+ * of a GraphicsDevice.
+ * 
+ * @since Android 1.0
  */
 public final class DisplayMode {
-    
-    /** The width. */
+
+    /**
+     * The width.
+     */
     private final int width;
 
-    /** The height. */
+    /**
+     * The height.
+     */
     private final int height;
 
-    /** The bit depth. */
+    /**
+     * The bit depth.
+     */
     private final int bitDepth;
 
-    /** The refresh rate. */
+    /**
+     * The refresh rate.
+     */
     private final int refreshRate;
 
-   /** The Constant Value BIT_DEPTH_MULTI indicates the bit depth */
+    /**
+     * The Constant Value BIT_DEPTH_MULTI indicates the bit depth
+     */
 
     public static final int BIT_DEPTH_MULTI = -1;
 
-    /** The Constant REFRESH_RATE_UNKNOWN indicates the refresh rate. */
+    /**
+     * The Constant REFRESH_RATE_UNKNOWN indicates the refresh rate.
+     */
     public static final int REFRESH_RATE_UNKNOWN = 0;
 
-   /**
-    * Creates a new DisplayMode object with the specified parameters.
-    *  
-    * @param width the width of the display.
-    * @param height the height of the display.
-    * @param bitDepth the bit depth of the display.
-    * @param refreshRate the refresh rate of the display.
-    */
+    /**
+     * Creates a new DisplayMode object with the specified parameters.
+     * 
+     * @param width
+     *            the width of the display.
+     * @param height
+     *            the height of the display.
+     * @param bitDepth
+     *            the bit depth of the display.
+     * @param refreshRate
+     *            the refresh rate of the display.
+     */
 
     public DisplayMode(int width, int height, int bitDepth, int refreshRate) {
         this.width = width;
@@ -61,15 +80,14 @@
         this.refreshRate = refreshRate;
     }
 
-
-   /**
-    * Compares if this DisplayMode is equal to the specified object or not.
-    * 
-    * @param dm the Object to be compared.
-    * 
-    * @return true, if the specified object is a DisplayMode with the same
-    * data values as this DisplayMode, false otherwise.
-    */
+    /**
+     * Compares if this DisplayMode is equal to the specified object or not.
+     * 
+     * @param dm
+     *            the Object to be compared.
+     * @return true, if the specified object is a DisplayMode with the same data
+     *         values as this DisplayMode, false otherwise.
+     */
 
     @Override
     public boolean equals(Object dm) {
@@ -80,13 +98,13 @@
     }
 
     /**
-    * Compares if this DisplayMode is equal to the specified DisplayMode object
-    * or not.
-    * 
-    * @param dm the DisplayMode to be compared.
-    * 
-    * @return true, if all of the data values of this DisplayMode are equal 
-    * to the values of the specified DisplayMode object, false otherwise.
+     * Compares if this DisplayMode is equal to the specified DisplayMode object
+     * or not.
+     * 
+     * @param dm
+     *            the DisplayMode to be compared.
+     * @return true, if all of the data values of this DisplayMode are equal to
+     *         the values of the specified DisplayMode object, false otherwise.
      */
     public boolean equals(DisplayMode dm) {
         if (dm == null) {
@@ -108,8 +126,8 @@
     }
 
     /**
-     * Gets the bit depth of the DisplayMode, returns BIT_DEPTH_MULTI value
-     * if multiple bit depths are supported in this display mode.
+     * Gets the bit depth of the DisplayMode, returns BIT_DEPTH_MULTI value if
+     * multiple bit depths are supported in this display mode.
      * 
      * @return the bit depth of the DisplayMode.
      */
diff --git a/awt/java/awt/Event.java b/awt/java/awt/Event.java
index f074258..226a61f 100644
--- a/awt/java/awt/Event.java
+++ b/awt/java/awt/Event.java
@@ -18,224 +18,293 @@
  * @author Dmitry A. Durnev
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.io.Serializable;
 
 /**
- * The Event Class is obsolete and has been replaced by AWTEvent class.
+ * The Event class is obsolete and has been replaced by AWTEvent class.
  * 
+ * @since Android 1.0
  */
 public class Event implements Serializable {
-    
-    /** The Constant serialVersionUID. */
+
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = 5488922509400504703L;
-    
-    /** 
-     * The Constant SHIFT_MASK indicates that the Shift key is down when 
-     * the event occurred.
+
+    /**
+     * The Constant SHIFT_MASK indicates that the Shift key is down when the
+     * event occurred.
      */
     public static final int SHIFT_MASK = 1;
 
-    /** 
-     * The Constant CTRL_MASK indicates that the Control key is down when 
-     * the event occurred.
+    /**
+     * The Constant CTRL_MASK indicates that the Control key is down when the
+     * event occurred.
      */
     public static final int CTRL_MASK = 2;
 
-    /** The Constant META_MASK indicates that the Meta key is down when t
-     * he event occurred (or the right mouse button). */
+    /**
+     * The Constant META_MASK indicates that the Meta key is down when t he
+     * event occurred (or the right mouse button).
+     */
     public static final int META_MASK = 4;
 
-    /** 
-     * The Constant ALT_MASK indicates that the Alt key is down when 
-     * the event occurred (or the middle mouse button). 
+    /**
+     * The Constant ALT_MASK indicates that the Alt key is down when the event
+     * occurred (or the middle mouse button).
      */
     public static final int ALT_MASK = 8;
 
-    /** The Constant HOME indicates Home key. */
+    /**
+     * The Constant HOME indicates Home key.
+     */
     public static final int HOME = 1000;
 
-    /** The Constant END indicates End key. */
+    /**
+     * The Constant END indicates End key.
+     */
     public static final int END = 1001;
 
-    /** The Constant PGUP indicates Page Up key. */
+    /**
+     * The Constant PGUP indicates Page Up key.
+     */
     public static final int PGUP = 1002;
 
-    /** The Constant PGDN indicates Page Down key. */
+    /**
+     * The Constant PGDN indicates Page Down key.
+     */
     public static final int PGDN = 1003;
 
-    /** The Constant UP indicates Up key. */
+    /**
+     * The Constant UP indicates Up key.
+     */
     public static final int UP = 1004;
 
-    /** The Constant DOWN indicates Down key. */
+    /**
+     * The Constant DOWN indicates Down key.
+     */
     public static final int DOWN = 1005;
 
-    /** The Constant LEFT indicates Left key. */
+    /**
+     * The Constant LEFT indicates Left key.
+     */
     public static final int LEFT = 1006;
 
-    /** The Constant RIGHT indicates Right key. */
+    /**
+     * The Constant RIGHT indicates Right key.
+     */
     public static final int RIGHT = 1007;
 
-    /** The Constant F1 indicates F1 key. */
+    /**
+     * The Constant F1 indicates F1 key.
+     */
     public static final int F1 = 1008;
 
-    /** The Constant F2 indicates F2 key. */
+    /**
+     * The Constant F2 indicates F2 key.
+     */
     public static final int F2 = 1009;
 
-    /** The Constant F3 indicates F3 key. */
+    /**
+     * The Constant F3 indicates F3 key.
+     */
     public static final int F3 = 1010;
 
-    /** The Constant F4 indicates F4 key. */
+    /**
+     * The Constant F4 indicates F4 key.
+     */
     public static final int F4 = 1011;
 
-    /** The Constant F5 indicates F5 key. */
+    /**
+     * The Constant F5 indicates F5 key.
+     */
     public static final int F5 = 1012;
 
-    /** The Constant F6 indicates F6 key. */
+    /**
+     * The Constant F6 indicates F6 key.
+     */
     public static final int F6 = 1013;
 
-    /** The Constant F7 indicates F7 key. */
+    /**
+     * The Constant F7 indicates F7 key.
+     */
     public static final int F7 = 1014;
 
-    /** The Constant F8 indicates F8 key. */
+    /**
+     * The Constant F8 indicates F8 key.
+     */
     public static final int F8 = 1015;
 
-    /** The Constant F9 indicates F9 key. */
+    /**
+     * The Constant F9 indicates F9 key.
+     */
     public static final int F9 = 1016;
 
-    /** The Constant F10 indicates F10 key. */
+    /**
+     * The Constant F10 indicates F10 key.
+     */
     public static final int F10 = 1017;
 
-    /** The Constant F11 indicates F11 key. */
+    /**
+     * The Constant F11 indicates F11 key.
+     */
     public static final int F11 = 1018;
 
-    /** The Constant F12 indicates F12 key. */
+    /**
+     * The Constant F12 indicates F12 key.
+     */
     public static final int F12 = 1019;
 
-    /** The Constant PRINT_SCREEN  indicates Print Screen key. */
+    /**
+     * The Constant PRINT_SCREEN indicates Print Screen key.
+     */
     public static final int PRINT_SCREEN = 1020;
 
-    /** The Constant SCROLL_LOCK indicates Scroll Lock key. */
+    /**
+     * The Constant SCROLL_LOCK indicates Scroll Lock key.
+     */
     public static final int SCROLL_LOCK = 1021;
 
-    /** The Constant CAPS_LOCK indicates Caps Lock key. */
+    /**
+     * The Constant CAPS_LOCK indicates Caps Lock key.
+     */
     public static final int CAPS_LOCK = 1022;
 
-    /** The Constant NUM_LOCK indicates Num Lock key. */
+    /**
+     * The Constant NUM_LOCK indicates Num Lock key.
+     */
     public static final int NUM_LOCK = 1023;
 
-    /** The Constant PAUSE indicates Pause key. */
+    /**
+     * The Constant PAUSE indicates Pause key.
+     */
     public static final int PAUSE = 1024;
 
-    /** The Constant INSERT indicates Insert key. */
+    /**
+     * The Constant INSERT indicates Insert key.
+     */
     public static final int INSERT = 1025;
 
-    /** The Constant ENTER indicates Enter key. */
+    /**
+     * The Constant ENTER indicates Enter key.
+     */
     public static final int ENTER = 10;
 
-    /** The Constant BACK_SPACE indicates Back Space key. */
+    /**
+     * The Constant BACK_SPACE indicates Back Space key.
+     */
     public static final int BACK_SPACE = 8;
 
-    /** The Constant TAB indicates TAb key. */
+    /**
+     * The Constant TAB indicates TAb key.
+     */
     public static final int TAB = 9;
 
-    /** The Constant ESCAPE indicates Escape key. */
+    /**
+     * The Constant ESCAPE indicates Escape key.
+     */
     public static final int ESCAPE = 27;
 
-    /** The Constant DELETE indicates Delete key. */
+    /**
+     * The Constant DELETE indicates Delete key.
+     */
     public static final int DELETE = 127;
 
-    /** 
-     * The Constant WINDOW_DESTROY indicates an event when the user has asked the
-     * window manager to kill the window.
+    /**
+     * The Constant WINDOW_DESTROY indicates an event when the user has asked
+     * the window manager to kill the window.
      */
     public static final int WINDOW_DESTROY = 201;
 
-    /** 
+    /**
      * The Constant WINDOW_EXPOSE indicates an event when the user has asked the
      * window manager to expose the window.
      */
     public static final int WINDOW_EXPOSE = 202;
 
-    /** 
-     * The Constant WINDOW_ICONIFY indicates an event when the user has asked the
-     * window manager to inconify the window.
+    /**
+     * The Constant WINDOW_ICONIFY indicates an event when the user has asked
+     * the window manager to iconify the window.
      */
     public static final int WINDOW_ICONIFY = 203;
 
-    /** 
-     * The Constant WINDOW_DEICONIFY indicates an event when the user has asked the
-     * window manager to deinconify the window. 
+    /**
+     * The Constant WINDOW_DEICONIFY indicates an event when the user has asked
+     * the window manager to deiconify the window.
      */
     public static final int WINDOW_DEICONIFY = 204;
 
-    /** 
+    /**
      * The Constant WINDOW_MOVED indicates an event when the user has asked the
-     * window manager to move the window. 
+     * window manager to move the window.
      */
     public static final int WINDOW_MOVED = 205;
 
-    /** 
-     * The Constant KEY_PRESS indicates an event when the user presses 
-     * a normal key. 
+    /**
+     * The Constant KEY_PRESS indicates an event when the user presses a normal
+     * key.
      */
     public static final int KEY_PRESS = 401;
 
-    /** 
-     * The Constant KEY_RELEASE indicates an event when the user releases 
-     * a normal key.
+    /**
+     * The Constant KEY_RELEASE indicates an event when the user releases a
+     * normal key.
      */
     public static final int KEY_RELEASE = 402;
 
-    /** 
-     * The Constant KEY_ACTION indicates an event when the user pressed 
-     * a non-ASCII action key. 
+    /**
+     * The Constant KEY_ACTION indicates an event when the user pressed a
+     * non-ASCII action key.
      */
     public static final int KEY_ACTION = 403;
 
     /**
-     * The Constant KEY_ACTION_RELEASE indicates an event when the user released 
-     * a non-ASCII action key. 
+     * The Constant KEY_ACTION_RELEASE indicates an event when the user released
+     * a non-ASCII action key.
      */
     public static final int KEY_ACTION_RELEASE = 404;
 
-    /** 
-     * The Constant MOUSE_DOWN indicates an event when the user has pressed 
-     * the mouse button. 
+    /**
+     * The Constant MOUSE_DOWN indicates an event when the user has pressed the
+     * mouse button.
      */
     public static final int MOUSE_DOWN = 501;
 
-    /** 
-     * The Constant MOUSE_UP indicates an event when the user has released 
-     * the mouse button. 
+    /**
+     * The Constant MOUSE_UP indicates an event when the user has released the
+     * mouse button.
      */
     public static final int MOUSE_UP = 502;
 
-    /** 
-     * The Constant MOUSE_MOVE indicates an event when the user has moved
-     * the mouse with no button pressed.
+    /**
+     * The Constant MOUSE_MOVE indicates an event when the user has moved the
+     * mouse with no button pressed.
      */
     public static final int MOUSE_MOVE = 503;
 
-    /** 
-     * The Constant MOUSE_ENTER indicates an event when the mouse
-     * has entered a component.
+    /**
+     * The Constant MOUSE_ENTER indicates an event when the mouse has entered a
+     * component.
      */
     public static final int MOUSE_ENTER = 504;
 
-    /** 
-     * The Constant MOUSE_EXIT indicates an event when the mouse
-     * has exited a component. 
+    /**
+     * The Constant MOUSE_EXIT indicates an event when the mouse has exited a
+     * component.
      */
     public static final int MOUSE_EXIT = 505;
 
-    /** The Constant MOUSE_DRAG indicates an event when the user
-     * has moved a mouse with the pressed button. 
+    /**
+     * The Constant MOUSE_DRAG indicates an event when the user has moved a
+     * mouse with the pressed button.
      */
     public static final int MOUSE_DRAG = 506;
 
-    /** 
+    /**
      * The Constant SCROLL_LINE_UP indicates an event when the user has
      * activated line-up area of scrollbar.
      */
@@ -243,101 +312,136 @@
 
     /**
      * The Constant SCROLL_LINE_DOWN indicates an event when the user has
-     * activated line-down area of scrollbar. 
+     * activated line-down area of scrollbar.
      */
     public static final int SCROLL_LINE_DOWN = 602;
 
     /**
      * The Constant SCROLL_PAGE_UP indicates an event when the user has
-     * activated page up area of scrollbar. 
+     * activated page up area of scrollbar.
      */
     public static final int SCROLL_PAGE_UP = 603;
 
     /**
      * The Constant SCROLL_PAGE_DOWN indicates an event when the user has
-     * activated page down area of scrollbar. 
+     * activated page down area of scrollbar.
      */
     public static final int SCROLL_PAGE_DOWN = 604;
 
     /**
-     * The Constant SCROLL_ABSOLUTE indicates an event when the user 
-     * has moved the bubble in a scroll bar. 
+     * The Constant SCROLL_ABSOLUTE indicates an event when the user has moved
+     * the bubble in a scroll bar.
      */
     public static final int SCROLL_ABSOLUTE = 605;
 
-    /** The Constant SCROLL_BEGIN indicates a scroll begin event. */
+    /**
+     * The Constant SCROLL_BEGIN indicates a scroll begin event.
+     */
     public static final int SCROLL_BEGIN = 606;
 
-    /** The Constant SCROLL_END indicates a scroll end event. */
+    /**
+     * The Constant SCROLL_END indicates a scroll end event.
+     */
     public static final int SCROLL_END = 607;
 
-    /** 
-     * The Constant LIST_SELECT indicates that an item in a list 
-     * has been selected.
+    /**
+     * The Constant LIST_SELECT indicates that an item in a list has been
+     * selected.
      */
     public static final int LIST_SELECT = 701;
 
-    /** 
-     * The Constant LIST_DESELECT indicates that an item in a list 
-     * has been deselected. 
+    /**
+     * The Constant LIST_DESELECT indicates that an item in a list has been
+     * unselected.
      */
     public static final int LIST_DESELECT = 702;
 
-    /** 
-     * The Constant ACTION_EVENT indicates that the user wants some 
-     * action to occur.
+    /**
+     * The Constant ACTION_EVENT indicates that the user wants some action to
+     * occur.
      */
     public static final int ACTION_EVENT = 1001;
 
-    /** The Constant LOAD_FILE indicates a file loading event. */
+    /**
+     * The Constant LOAD_FILE indicates a file loading event.
+     */
     public static final int LOAD_FILE = 1002;
 
-    /** The Constant SAVE_FILE indicates a file saving event. */
+    /**
+     * The Constant SAVE_FILE indicates a file saving event.
+     */
     public static final int SAVE_FILE = 1003;
 
-    /** The Constant GOT_FOCUS indicates that a component got the focus. */
+    /**
+     * The Constant GOT_FOCUS indicates that a component got the focus.
+     */
     public static final int GOT_FOCUS = 1004;
 
-    /** The Constant LOST_FOCUS indicates that the component lost the focus. */
+    /**
+     * The Constant LOST_FOCUS indicates that the component lost the focus.
+     */
     public static final int LOST_FOCUS = 1005;
 
-    /** The target is the component with which the event is associated. */
+    /**
+     * The target is the component with which the event is associated.
+     */
     public Object target;
 
-    /** The when is timestamp when event has occured. */
+    /**
+     * The when is timestamp when event has occured.
+     */
     public long when;
 
-    /** The id indicates the type of the event. */
+    /**
+     * The id indicates the type of the event.
+     */
     public int id;
 
-    /** The x coordinate of event. */
+    /**
+     * The x coordinate of event.
+     */
     public int x;
 
-    /** The y coordinate of event. */
+    /**
+     * The y coordinate of event.
+     */
     public int y;
 
-    /** The key code of key event. */
+    /**
+     * The key code of key event.
+     */
     public int key;
 
-    /** The state of the modifier keys (given by a bitmask). */
+    /**
+     * The state of the modifier keys (given by a bitmask).
+     */
     public int modifiers;
 
-    /** The click count indicates the number of consecutive clicks. */
+    /**
+     * The click count indicates the number of consecutive clicks.
+     */
     public int clickCount;
 
-    /** The argument of the event. */
+    /**
+     * The argument of the event.
+     */
     public Object arg;
 
-    /** The next event. */
+    /**
+     * The next event.
+     */
     public Event evt;
 
     /**
-     * Instantiates a new event with the specified target component, 
-     * event type, and argument.
+     * Instantiates a new event with the specified target component, event type,
+     * and argument.
      * 
-     * @param target the target component.
-     * @param id the event type.
-     * @param arg the argument.
+     * @param target
+     *            the target component.
+     * @param id
+     *            the event type.
+     * @param arg
+     *            the argument.
      */
     public Event(Object target, int id, Object arg) {
         this(target, 0l, id, 0, 0, 0, 0, arg);
@@ -348,13 +452,20 @@
      * event type, x and y coordinates, keyboard key, state of the modifier
      * keys, and an argument set to null.
      * 
-     * @param target the target component.
-     * @param when the time stamp.
-     * @param id the event type.
-     * @param x the x coordinate.
-     * @param y the y coordinate.
-     * @param key the key.
-     * @param modifiers the modifier keys state.
+     * @param target
+     *            the target component.
+     * @param when
+     *            the time stamp.
+     * @param id
+     *            the event type.
+     * @param x
+     *            the x coordinate.
+     * @param y
+     *            the y coordinate.
+     * @param key
+     *            the key.
+     * @param modifiers
+     *            the modifier keys state.
      */
     public Event(Object target, long when, int id, int x, int y, int key, int modifiers) {
         this(target, when, id, x, y, key, modifiers, null);
@@ -365,14 +476,22 @@
      * event type, x and y coordinates, keyboard key, state of the modifier
      * keys, and an argument.
      * 
-     * @param target the target component.
-     * @param when the time stamp.
-     * @param id the event type.
-     * @param x the x coordinate.
-     * @param y the y coordinate.
-     * @param key the key.
-     * @param modifiers the modifier keys state.
-     * @param arg the specified argument.
+     * @param target
+     *            the target component.
+     * @param when
+     *            the time stamp.
+     * @param id
+     *            the event type.
+     * @param x
+     *            the x coordinate.
+     * @param y
+     *            the y coordinate.
+     * @param key
+     *            the key.
+     * @param modifiers
+     *            the modifier keys state.
+     * @param arg
+     *            the specified argument.
      */
     public Event(Object target, long when, int id, int x, int y, int key, int modifiers, Object arg) {
         this.target = target;
@@ -392,11 +511,10 @@
      */
     @Override
     public String toString() {
-        /* The format is based on 1.5 release behavior 
-         * which can be revealed by the following code:
-         * 
-         * Event e = new Event(new Button(), 0l, Event.KEY_PRESS, 
-         *                     0, 0, Event.TAB, Event.SHIFT_MASK, "arg");
+        /*
+         * The format is based on 1.5 release behavior which can be revealed by
+         * the following code: Event e = new Event(new Button(), 0l,
+         * Event.KEY_PRESS, 0, 0, Event.TAB, Event.SHIFT_MASK, "arg");
          * System.out.println(e);
          */
 
@@ -410,15 +528,15 @@
      */
     protected String paramString() {
         return "id=" + id + ",x=" + x + ",y=" + y + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-        (key != 0 ? ",key=" + key  + getModifiersString() : "") + //$NON-NLS-1$ //$NON-NLS-2$
-        ",target=" + target + //$NON-NLS-1$
-        (arg != null ? ",arg=" + arg : ""); //$NON-NLS-1$ //$NON-NLS-2$
+                (key != 0 ? ",key=" + key + getModifiersString() : "") + //$NON-NLS-1$ //$NON-NLS-2$
+                ",target=" + target + //$NON-NLS-1$
+                (arg != null ? ",arg=" + arg : ""); //$NON-NLS-1$ //$NON-NLS-2$
     }
 
     /**
      * Gets a string representation of the modifiers.
      * 
-     * @return a string representation of the modifiers
+     * @return a string representation of the modifiers.
      */
     private String getModifiersString() {
         String strMod = ""; //$NON-NLS-1$
@@ -435,13 +553,13 @@
     }
 
     /**
-     * Translates x and y coordinates of his event to the x+dx and x+dy 
+     * Translates x and y coordinates of his event to the x+dx and x+dy
      * coordinates.
      * 
-     * @param dx the dx - the distance by which the event's x coordinate
-     * is increased 
-     * @param dy the dy - the distance by which the event's y coordinate
-     * is increased 
+     * @param dx
+     *            the distance by which the event's x coordinate is increased.
+     * @param dy
+     *            the distance by which the event's y coordinate is increased.
      */
     public void translate(int dx, int dy) {
         x += dx;
@@ -476,4 +594,3 @@
     }
 
 }
-
diff --git a/awt/java/awt/EventQueue.java b/awt/java/awt/EventQueue.java
index 3997546..126a593 100644
--- a/awt/java/awt/EventQueue.java
+++ b/awt/java/awt/EventQueue.java
@@ -18,6 +18,7 @@
  * @author Michael Danilov, Pavel Dolgov
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.awt.event.InvocationEvent;
@@ -25,60 +26,69 @@
 import java.util.EmptyStackException;
 
 /**
- * The EventQueue class manages events. It is a platform-independent class 
- * that queues events both from the underlying peer classes and from trusted 
+ * The EventQueue class manages events. It is a platform-independent class that
+ * queues events both from the underlying peer classes and from trusted
  * application classes.
+ * 
+ * @since Android 1.0
  */
 public class EventQueue {
-    
-    /** The core ref. */
-    private final EventQueueCoreAtomicReference coreRef = 
-            new EventQueueCoreAtomicReference();
-    
+
+    /**
+     * The core ref.
+     */
+    private final EventQueueCoreAtomicReference coreRef = new EventQueueCoreAtomicReference();
+
     /**
      * The Class EventQueueCoreAtomicReference.
      */
     private static final class EventQueueCoreAtomicReference {
-        
-        /** The core. */
+
+        /**
+         * The core.
+         */
         private EventQueueCore core;
 
-        /*synchronized*/ /**
+        /* synchronized */
+        /**
          * Gets the.
          * 
-         * @return the event queue core
+         * @return the event queue core.
          */
-        EventQueueCore get() { 
+        EventQueueCore get() {
             return core;
         }
 
-        /*synchronized*/ /**
+        /* synchronized */
+        /**
          * Sets the.
          * 
-         * @param newCore the new core
+         * @param newCore
+         *            the new core.
          */
-        void set(EventQueueCore newCore) { 
+        void set(EventQueueCore newCore) {
             core = newCore;
         }
     }
 
     /**
-     * Returns true if the calling thread is the current 
-     * AWT EventQueue's dispatch thread. 
+     * Returns true if the calling thread is the current AWT EventQueue's
+     * dispatch thread.
      * 
-     * @return true, if the calling thread is the current 
-     * AWT EventQueue's dispatch thread; false otherwise.
+     * @return true, if the calling thread is the current AWT EventQueue's
+     *         dispatch thread; false otherwise.
      */
     public static boolean isDispatchThread() {
         return Thread.currentThread() instanceof EventDispatchThread;
     }
 
     /**
-     * Posts an InvocationEvent which executes the run() method on a Runnable 
+     * Posts an InvocationEvent which executes the run() method on a Runnable
      * when dispatched by the AWT event dispatcher thread.
      * 
-     * @param runnable the Runnable whose run method should be executed 
-     * synchronously on the EventQueue.
+     * @param runnable
+     *            the Runnable whose run method should be executed synchronously
+     *            on the EventQueue.
      */
     public static void invokeLater(Runnable runnable) {
         Toolkit toolkit = Toolkit.getDefaultToolkit();
@@ -87,29 +97,28 @@
     }
 
     /**
-     * Posts an InvocationEvent which executes the run() method on a Runnable 
-     * when dispatched by the AWT event dispatcher thread and the 
-     * notifyAll method is called on it immediately after run returns.
+     * Posts an InvocationEvent which executes the run() method on a Runnable
+     * when dispatched by the AWT event dispatcher thread and the notifyAll
+     * method is called on it immediately after run returns.
      * 
-     * @param runnable the Runnable whose run method should be executed 
-     * synchronously on the EventQueue.
-     * 
-     * @throws InterruptedException if another thread has interrupted 
-     * this thread.
-     * @throws InvocationTargetException if a throwable is thrown 
-     * when running the runnable. 
+     * @param runnable
+     *            the Runnable whose run method should be executed synchronously
+     *            on the EventQueue.
+     * @throws InterruptedException
+     *             if another thread has interrupted this thread.
+     * @throws InvocationTargetException
+     *             if an error occurred while running the runnable.
      */
-    public static void invokeAndWait(Runnable runnable)
-            throws InterruptedException, InvocationTargetException {
+    public static void invokeAndWait(Runnable runnable) throws InterruptedException,
+            InvocationTargetException {
 
         if (isDispatchThread()) {
             throw new Error();
         }
 
         final Toolkit toolkit = Toolkit.getDefaultToolkit();
-        final Object notifier = new Object();  //$NON-LOCK-1$
-        InvocationEvent event = new InvocationEvent(
-                toolkit, runnable, notifier, true);
+        final Object notifier = new Object(); // $NON-LOCK-1$
+        InvocationEvent event = new InvocationEvent(toolkit, runnable, notifier, true);
 
         synchronized (notifier) {
             toolkit.getSystemEventQueueImpl().postEvent(event);
@@ -126,7 +135,7 @@
     /**
      * Gets the system event queue.
      * 
-     * @return the system event queue
+     * @return the system event queue.
      */
     private static EventQueue getSystemEventQueue() {
         Thread th = Thread.currentThread();
@@ -135,48 +144,45 @@
         }
         return null;
     }
-    
+
     /**
-     * Gets the most recent event's timestamp.
-     * This event was dispatched from the EventQueue associated with the 
-     * calling thread.
+     * Gets the most recent event's timestamp. This event was dispatched from
+     * the EventQueue associated with the calling thread.
      * 
-     * @return the timestamp of the last Event to be dispatched, 
-     * or System.currentTimeMillis() if this method is invoked from 
-     * a thread other than an event-dispatching thread.
+     * @return the timestamp of the last Event to be dispatched, or
+     *         System.currentTimeMillis() if this method is invoked from a
+     *         thread other than an event-dispatching thread.
      */
     public static long getMostRecentEventTime() {
         EventQueue eq = getSystemEventQueue();
-        return (eq != null) ? 
-                eq.getMostRecentEventTimeImpl() : System.currentTimeMillis();
+        return (eq != null) ? eq.getMostRecentEventTimeImpl() : System.currentTimeMillis();
     }
-    
+
     /**
      * Gets the most recent event time impl.
      * 
-     * @return the most recent event time impl
+     * @return the most recent event time impl.
      */
     private long getMostRecentEventTimeImpl() {
         return getCore().getMostRecentEventTime();
     }
 
     /**
-     * Returns the the currently dispatched event by the EventQueue 
-     * associated with the calling thread.
+     * Returns the the currently dispatched event by the EventQueue associated
+     * with the calling thread.
      * 
-     * @return the currently dispatched event or null if this method 
-     * is invoked from a thread other than an event-dispatching thread.
+     * @return the currently dispatched event or null if this method is invoked
+     *         from a thread other than an event-dispatching thread.
      */
     public static AWTEvent getCurrentEvent() {
         EventQueue eq = getSystemEventQueue();
-        return (eq != null) ? 
-                eq.getCurrentEventImpl() : null;
+        return (eq != null) ? eq.getCurrentEventImpl() : null;
     }
 
     /**
      * Gets the current event impl.
      * 
-     * @return the current event impl
+     * @return the current event impl.
      */
     private AWTEvent getCurrentEventImpl() {
         return getCore().getCurrentEvent();
@@ -192,7 +198,8 @@
     /**
      * Instantiates a new event queue.
      * 
-     * @param t the t
+     * @param t
+     *            the t.
      */
     EventQueue(Toolkit t) {
         setCore(new EventQueueCore(this, t));
@@ -201,7 +208,8 @@
     /**
      * Posts a event to the EventQueue.
      * 
-     * @param event AWTEvent.
+     * @param event
+     *            AWTEvent.
      */
     public void postEvent(AWTEvent event) {
         event.isPosted = true;
@@ -209,29 +217,28 @@
     }
 
     /**
-     * Returns an event from the EventQueue and removes it from this queue. 
-     *  
-     * @return the next AWTEvent.
+     * Returns an event from the EventQueue and removes it from this queue.
      * 
-     * @throws InterruptedException is thrown if another thread 
-     * interrupts this thread.
+     * @return the next AWTEvent.
+     * @throws InterruptedException
+     *             is thrown if another thread interrupts this thread.
      */
     public AWTEvent getNextEvent() throws InterruptedException {
         return getCore().getNextEvent();
     }
-    
+
     /**
      * Gets the next event no wait.
      * 
-     * @return the next event no wait
+     * @return the next event no wait.
      */
     AWTEvent getNextEventNoWait() {
         return getCore().getNextEventNoWait();
     }
 
     /**
-     * Returns the first event of the EventQueue (without removing it 
-     * from the queue).
+     * Returns the first event of the EventQueue (without removing it from the
+     * queue).
      * 
      * @return the the first AWT event of the EventQueue.
      */
@@ -240,11 +247,11 @@
     }
 
     /**
-     * Returns the first event of the EventQueue with the specified ID
-     * (without removing it from the queue).
+     * Returns the first event of the EventQueue with the specified ID (without
+     * removing it from the queue).
      * 
-     * @param id the type ID of event.
-     * 
+     * @param id
+     *            the type ID of event.
      * @return the first event of the EventQueue with the specified ID.
      */
     public AWTEvent peekEvent(int id) {
@@ -252,21 +259,22 @@
     }
 
     /**
-     * Replaces the existing EventQueue with the specified EventQueue. 
-     * Any pending events are transferred to the new EventQueue. 
+     * Replaces the existing EventQueue with the specified EventQueue. Any
+     * pending events are transferred to the new EventQueue.
      * 
-     * @param newEventQueue the new event queue.
+     * @param newEventQueue
+     *            the new event queue.
      */
     public void push(EventQueue newEventQueue) {
         getCore().push(newEventQueue);
     }
-    
+
     /**
-     * Stops dispatching events using this EventQueue. 
-     * Any pending events are transferred to the previous EventQueue.
+     * Stops dispatching events using this EventQueue. Any pending events are
+     * transferred to the previous EventQueue.
      * 
-     * @throws EmptyStackException is thrown if no previous push 
-     * was made on this EventQueue.
+     * @throws EmptyStackException
+     *             is thrown if no previous push was made on this EventQueue.
      */
     protected void pop() throws EmptyStackException {
         getCore().pop();
@@ -275,7 +283,8 @@
     /**
      * Dispatches the specified event.
      * 
-     * @param event the AWTEvent.
+     * @param event
+     *            the AWTEvent.
      */
     protected void dispatchEvent(AWTEvent event) {
         getCore().dispatchEventImpl(event);
@@ -284,7 +293,7 @@
     /**
      * Checks if the queue is empty.
      * 
-     * @return true, if is empty
+     * @return true, if is empty.
      */
     boolean isEmpty() {
         return getCore().isEmpty();
@@ -293,16 +302,17 @@
     /**
      * Gets the core.
      * 
-     * @return the core
+     * @return the core.
      */
     EventQueueCore getCore() {
         return coreRef.get();
     }
-    
+
     /**
      * Sets the core.
      * 
-     * @param newCore the new core
+     * @param newCore
+     *            the new core.
      */
     void setCore(EventQueueCore newCore) {
         coreRef.set((newCore != null) ? newCore : new EventQueueCore(this));
diff --git a/awt/java/awt/Font.java b/awt/java/awt/Font.java
index 139ae68..4ed9343 100644
--- a/awt/java/awt/Font.java
+++ b/awt/java/awt/Font.java
@@ -46,130 +46,165 @@
 import org.apache.harmony.awt.gl.font.FontMetricsImpl;
 import org.apache.harmony.awt.gl.font.LineMetricsImpl;
 import org.apache.harmony.awt.internal.nls.Messages;
+import org.apache.harmony.luni.util.NotImplementedException;
 import org.apache.harmony.misc.HashCode;
 
-
 /**
- * The Font class represents fonts for rendering text. 
- * This class allow to map characters to glyphs.
- * <p> 
- * A glyph is a shape used to render a character or a sequence of 
- * characters. For example one character of Latin writing system 
- * represented by one glyth, but in complex writing system such as 
- * South and South-East Asian there is more complicated correspondence 
- * between characters and glyphs.
+ * The Font class represents fonts for rendering text. This class allow to map
+ * characters to glyphs.
  * <p>
- * The Font object is identified by two types of names. The logical font name 
- * is the name that is used to construct the font. The font name
- * is the name of a particular font face (for example, Arial Bold). 
- * The family name is the font's family name that specifies 
- * the typographic design across several faces (for example, Arial). In 
- * all the Font is identified by three attributes: the family name, 
- * the style (such as bold or italic), and the size.
+ * A glyph is a shape used to render a character or a sequence of characters.
+ * For example one character of Latin writing system represented by one glyph,
+ * but in complex writing system such as South and South-East Asian there is
+ * more complicated correspondence between characters and glyphs.
+ * <p>
+ * The Font object is identified by two types of names. The logical font name is
+ * the name that is used to construct the font. The font name is the name of a
+ * particular font face (for example, Arial Bold). The family name is the font's
+ * family name that specifies the typographic design across several faces (for
+ * example, Arial). In all the Font is identified by three attributes: the
+ * family name, the style (such as bold or italic), and the size.
+ * 
+ * @since Android 1.0
  */
 public class Font implements Serializable {
 
-    /** The Constant serialVersionUID. */
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = -4206021311591459213L;
 
     // Identity Transform attribute
-    /** The Constant IDENTITY_TRANSFORM. */
+    /**
+     * The Constant IDENTITY_TRANSFORM.
+     */
     private static final TransformAttribute IDENTITY_TRANSFORM = new TransformAttribute(
             new AffineTransform());
 
-    /** The Constant PLAIN indicates font's plain style. */
+    /**
+     * The Constant PLAIN indicates font's plain style.
+     */
     public static final int PLAIN = 0;
 
-    /** The Constant BOLD indicates font's bold style. */
+    /**
+     * The Constant BOLD indicates font's bold style.
+     */
     public static final int BOLD = 1;
 
-    /** The Constant ITALIC indicates font's italic style. */
+    /**
+     * The Constant ITALIC indicates font's italic style.
+     */
     public static final int ITALIC = 2;
 
-    /** The Constant ROMAN_BASELINE indicated roman baseline. */
+    /**
+     * The Constant ROMAN_BASELINE indicated roman baseline.
+     */
     public static final int ROMAN_BASELINE = 0;
 
-    /** The Constant CENTER_BASELINE indicates center baseline. */
+    /**
+     * The Constant CENTER_BASELINE indicates center baseline.
+     */
     public static final int CENTER_BASELINE = 1;
 
-    /** The Constant HANGING_BASELINE indicates hanging baseline. */
+    /**
+     * The Constant HANGING_BASELINE indicates hanging baseline.
+     */
     public static final int HANGING_BASELINE = 2;
 
-    /** 
-     * The Constant TRUETYPE_FONT indicates a font resource of 
-     * type TRUETYPE. 
+    /**
+     * The Constant TRUETYPE_FONT indicates a font resource of type TRUETYPE.
      */
     public static final int TRUETYPE_FONT = 0;
 
-    /** 
-     * The Constant TYPE1_FONT indicates a font resource of
-     * type TYPE1. 
+    /**
+     * The Constant TYPE1_FONT indicates a font resource of type TYPE1.
      */
     public static final int TYPE1_FONT = 1;
 
-    /** 
-     * The Constant LAYOUT_LEFT_TO_RIGHT indicates that text is
-     * left to right. 
+    /**
+     * The Constant LAYOUT_LEFT_TO_RIGHT indicates that text is left to right.
      */
     public static final int LAYOUT_LEFT_TO_RIGHT = 0;
 
-    /** 
-     * The Constant LAYOUT_RIGHT_TO_LEFT indicates that text is
-     * right to left. 
+    /**
+     * The Constant LAYOUT_RIGHT_TO_LEFT indicates that text is right to left.
      */
     public static final int LAYOUT_RIGHT_TO_LEFT = 1;
 
-    /** 
-     * The Constant LAYOUT_NO_START_CONTEXT indicates that the text
-     * in the char array before the indicated start should not be examined. 
+    /**
+     * The Constant LAYOUT_NO_START_CONTEXT indicates that the text in the char
+     * array before the indicated start should not be examined.
      */
     public static final int LAYOUT_NO_START_CONTEXT = 2;
 
-    /** The Constant LAYOUT_NO_LIMIT_CONTEXT indicates that text in 
-     * the char array after the indicated limit should not be examined. */
+    /**
+     * The Constant LAYOUT_NO_LIMIT_CONTEXT indicates that text in the char
+     * array after the indicated limit should not be examined.
+     */
     public static final int LAYOUT_NO_LIMIT_CONTEXT = 4;
 
-    /** The Constant DEFAULT_FONT. */
+    /**
+     * The Constant DEFAULT_FONT.
+     */
     static final Font DEFAULT_FONT = new Font("Dialog", Font.PLAIN, 12); //$NON-NLS-1$
 
-    /** The name of the Font. */
+    /**
+     * The name of the Font.
+     */
     protected String name;
 
-    /** The style of the Font. */
+    /**
+     * The style of the Font.
+     */
     protected int style;
 
-    /** The size of the Font. */
+    /**
+     * The size of the Font.
+     */
     protected int size;
 
-    /** The point size of the Font. */
+    /**
+     * The point size of the Font.
+     */
     protected float pointSize;
 
     // Flag if the Font object transformed
-    /** The transformed. */
+    /**
+     * The transformed.
+     */
     private boolean transformed;
 
     // Set of font attributes
-    /** The requested attributes. */
+    /**
+     * The requested attributes.
+     */
     private Hashtable<Attribute, Object> fRequestedAttributes;
 
     // font peer object corresponding to this Font
-    /** The font peer. */
+    /**
+     * The font peer.
+     */
     private transient FontPeerImpl fontPeer;
 
     // number of glyphs in this Font
-    /** The num glyphs. */
+    /**
+     * The num glyphs.
+     */
     private transient int numGlyphs = -1;
 
     // code for missing glyph for this Font
-    /** The missing glyph code. */
+    /**
+     * The missing glyph code.
+     */
     private transient int missingGlyphCode = -1;
 
     /**
      * Writes object to ObjectOutputStream.
      * 
-     * @param out ObjectOutputStream
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param out
+     *            ObjectOutputStream.
+     * @throws IOException
+     *             Signals that an I/O exception has occurred.
      */
     private void writeObject(java.io.ObjectOutputStream out) throws IOException {
         out.defaultWriteObject();
@@ -179,10 +214,12 @@
      * Reads object from ObjectInputStream object and set native platform
      * dependent fields to default values.
      * 
-     * @param in ObjectInputStream object
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
-     * @throws ClassNotFoundException the class not found exception
+     * @param in
+     *            ObjectInputStream object.
+     * @throws IOException
+     *             Signals that an I/O exception has occurred.
+     * @throws ClassNotFoundException
+     *             the class not found exception.
      */
     private void readObject(java.io.ObjectInputStream in) throws IOException,
             ClassNotFoundException {
@@ -194,11 +231,11 @@
     }
 
     /**
-     * Instantiates a new Font with the specified attributes. 
-     * The Font will be created with default attributes 
-     * if the attribute's parameter is null. 
+     * Instantiates a new Font with the specified attributes. The Font will be
+     * created with default attributes if the attribute's parameter is null.
      * 
-     * @param attributes the attributes to be assigned to the new Font, or null.
+     * @param attributes
+     *            the attributes to be assigned to the new Font, or null.
      */
     public Font(Map<? extends Attribute, ?> attributes) {
         Object currAttr;
@@ -217,43 +254,38 @@
 
             currAttr = attributes.get(TextAttribute.SIZE);
             if (currAttr != null) {
-                this.pointSize = ((Float) currAttr).floatValue();
-                this.size = (int) Math.ceil(this.pointSize);
+                this.pointSize = ((Float)currAttr).floatValue();
+                this.size = (int)Math.ceil(this.pointSize);
             }
 
             currAttr = attributes.get(TextAttribute.POSTURE);
-            if (currAttr != null
-                    && currAttr.equals(TextAttribute.POSTURE_OBLIQUE)) {
+            if (currAttr != null && currAttr.equals(TextAttribute.POSTURE_OBLIQUE)) {
                 this.style |= Font.ITALIC;
             }
 
             currAttr = attributes.get(TextAttribute.WEIGHT);
             if ((currAttr != null)
-                    && (((Float) currAttr).floatValue() >= (TextAttribute.WEIGHT_BOLD)
-                            .floatValue())) {
+                    && (((Float)currAttr).floatValue() >= (TextAttribute.WEIGHT_BOLD).floatValue())) {
                 this.style |= Font.BOLD;
             }
 
             currAttr = attributes.get(TextAttribute.FAMILY);
             if (currAttr != null) {
-                this.name = (String) currAttr;
+                this.name = (String)currAttr;
             }
 
             currAttr = attributes.get(TextAttribute.TRANSFORM);
             if (currAttr != null) {
                 if (currAttr instanceof TransformAttribute) {
-                    this.transformed = !((TransformAttribute) currAttr)
-                            .getTransform().isIdentity();
+                    this.transformed = !((TransformAttribute)currAttr).getTransform().isIdentity();
                 } else if (currAttr instanceof AffineTransform) {
-                    this.transformed = !((AffineTransform) currAttr)
-                            .isIdentity();
+                    this.transformed = !((AffineTransform)currAttr).isIdentity();
                 }
             }
 
         } else {
             fRequestedAttributes = new Hashtable<Attribute, Object>(5);
-            fRequestedAttributes.put(TextAttribute.TRANSFORM,
-                    IDENTITY_TRANSFORM);
+            fRequestedAttributes.put(TextAttribute.TRANSFORM, IDENTITY_TRANSFORM);
 
             this.transformed = false;
 
@@ -262,18 +294,14 @@
             fRequestedAttributes.put(TextAttribute.SIZE, new Float(this.size));
 
             if ((this.style & Font.BOLD) != 0) {
-                fRequestedAttributes.put(TextAttribute.WEIGHT,
-                        TextAttribute.WEIGHT_BOLD);
+                fRequestedAttributes.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD);
             } else {
-                fRequestedAttributes.put(TextAttribute.WEIGHT,
-                        TextAttribute.WEIGHT_REGULAR);
+                fRequestedAttributes.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_REGULAR);
             }
             if ((this.style & Font.ITALIC) != 0) {
-                fRequestedAttributes.put(TextAttribute.POSTURE,
-                        TextAttribute.POSTURE_OBLIQUE);
+                fRequestedAttributes.put(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE);
             } else {
-                fRequestedAttributes.put(TextAttribute.POSTURE,
-                        TextAttribute.POSTURE_REGULAR);
+                fRequestedAttributes.put(TextAttribute.POSTURE, TextAttribute.POSTURE_REGULAR);
             }
 
         }
@@ -282,9 +310,12 @@
     /**
      * Instantiates a new Font with the specified name, style and size.
      * 
-     * @param name the name of font.
-     * @param style the style of font.
-     * @param size the size of font.
+     * @param name
+     *            the name of font.
+     * @param style
+     *            the style of font.
+     * @param size
+     *            the size of font.
      */
     public Font(String name, int style, int size) {
 
@@ -303,46 +334,43 @@
         fRequestedAttributes.put(TextAttribute.SIZE, new Float(this.size));
 
         if ((this.style & Font.BOLD) != 0) {
-            fRequestedAttributes.put(TextAttribute.WEIGHT,
-                    TextAttribute.WEIGHT_BOLD);
+            fRequestedAttributes.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD);
         } else {
-            fRequestedAttributes.put(TextAttribute.WEIGHT,
-                    TextAttribute.WEIGHT_REGULAR);
+            fRequestedAttributes.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_REGULAR);
         }
         if ((this.style & Font.ITALIC) != 0) {
-            fRequestedAttributes.put(TextAttribute.POSTURE,
-                    TextAttribute.POSTURE_OBLIQUE);
+            fRequestedAttributes.put(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE);
         } else {
-            fRequestedAttributes.put(TextAttribute.POSTURE,
-                    TextAttribute.POSTURE_REGULAR);
+            fRequestedAttributes.put(TextAttribute.POSTURE, TextAttribute.POSTURE_REGULAR);
         }
     }
 
     /**
      * Returns true if this Font has a glyph for the specified character.
      * 
-     * @param c the character.
-     * 
-     * @return true if this Font has a glyph for the specified character,
-     * false otherwise.
+     * @param c
+     *            the character.
+     * @return true if this Font has a glyph for the specified character, false
+     *         otherwise.
      */
     public boolean canDisplay(char c) {
-        FontPeerImpl peer = (FontPeerImpl) this.getPeer();
+        FontPeerImpl peer = (FontPeerImpl)this.getPeer();
         return peer.canDisplay(c);
     }
 
     /**
-     * Returns true if the Font can display the characters of the 
-     * the specified text from the specified start position 
-     * to the specified limit position. 
+     * Returns true if the Font can display the characters of the the specified
+     * text from the specified start position to the specified limit position.
      * 
-     * @param text the text.
-     * @param start the start offset (in the character array).
-     * @param limit the limit offset (in the character array).
-     * 
-     * @return the a character's position in the text that this Font 
-     * can not display, or -1 if this Font can display all characters 
-     * in this text.
+     * @param text
+     *            the text.
+     * @param start
+     *            the start offset (in the character array).
+     * @param limit
+     *            the limit offset (in the character array).
+     * @return the a character's position in the text that this Font can not
+     *         display, or -1 if this Font can display all characters in this
+     *         text.
      */
     public int canDisplayUpTo(char[] text, int start, int limit) {
         int st = start;
@@ -361,17 +389,19 @@
     }
 
     /**
-     * Returns true if the Font can display the characters of the 
-     * the specified CharacterIterator from the specified start position 
-     * and the specified limit position. 
+     * Returns true if the Font can display the characters of the the specified
+     * CharacterIterator from the specified start position and the specified
+     * limit position.
      * 
-     * @param iter the CharacterIterator.
-     * @param start the start offset.
-     * @param limit the limit offset.
-     * 
-     * @return the a character's position in the CharacterIterator
-     * that this Font can not display, or -1 if this Font can display 
-     * all characters in this text.
+     * @param iter
+     *            the CharacterIterator.
+     * @param start
+     *            the start offset.
+     * @param limit
+     *            the limit offset.
+     * @return the a character's position in the CharacterIterator that this
+     *         Font can not display, or -1 if this Font can display all
+     *         characters in this text.
      */
     public int canDisplayUpTo(CharacterIterator iter, int start, int limit) {
         int st = start;
@@ -394,11 +424,11 @@
     /**
      * Returns true if this Font can display a specified String.
      * 
-     * @param str the String.
-     * 
-     * @return the a character's position in the String that 
-     * this Font can not display, or -1 if this Font can display 
-     * all characters in this text.
+     * @param str
+     *            the String.
+     * @return the a character's position in the String that this Font can not
+     *         display, or -1 if this Font can display all characters in this
+     *         text.
      */
     public int canDisplayUpTo(String str) {
         char[] chars = str.toCharArray();
@@ -406,45 +436,49 @@
     }
 
     /**
-     * Creates a GlyphVector of associating characters to glyphs 
-     * based on the unicode map of this Font. 
+     * Creates a GlyphVector of associating characters to glyphs based on the
+     * Unicode map of this Font.
      * 
-     * @param frc the FontRenderContext.
-     * @param chars the characters array.
-     * 
-     * @return the GlyphVector of associating characters to glyphs 
-     * based on the unicode map of this Font.
+     * @param frc
+     *            the FontRenderContext.
+     * @param chars
+     *            the characters array.
+     * @return the GlyphVector of associating characters to glyphs based on the
+     *         Unicode map of this Font.
      */
     public GlyphVector createGlyphVector(FontRenderContext frc, char[] chars) {
         return new AndroidGlyphVector(chars, frc, this, 0);
     }
 
     /**
-     * Creates a GlyphVector of associating characters contained
-     * in the specified CharacterIterator to glyphs based on 
-     * the unicode map of this Font. 
+     * Creates a GlyphVector of associating characters contained in the
+     * specified CharacterIterator to glyphs based on the Unicode map of this
+     * Font.
      * 
-     * @param frc the FontRenderContext.
-     * @param iter the CharacterIterator.
-     * 
-     * @return the GlyphVector of associating characters contained
-     * in the specified CharacterIterator to glyphs 
-     * based on the unicode map of this Font.
+     * @param frc
+     *            the FontRenderContext.
+     * @param iter
+     *            the CharacterIterator.
+     * @return the GlyphVector of associating characters contained in the
+     *         specified CharacterIterator to glyphs based on the Unicode map of
+     *         this Font.
      */
-    public GlyphVector createGlyphVector(FontRenderContext frc,
-            CharacterIterator iter) {
-    	throw new RuntimeException("Not implemented!"); //$NON-NLS-1$    
+    public GlyphVector createGlyphVector(FontRenderContext frc, CharacterIterator iter) {
+        throw new RuntimeException("Not implemented!"); //$NON-NLS-1$    
     }
 
     /**
-     * Creates a GlyphVector of associating characters to glyphs based on 
-     * the unicode map of this Font. 
+     * Creates a GlyphVector of associating characters to glyphs based on the
+     * Unicode map of this Font.
      * 
-     * @param frc the FontRenderContext.
-     * @param glyphCodes the specified integer array of glyph codes.
-     * 
-     * @return the GlyphVector of associating characters to glyphs 
-     * based on the unicode map of this Font.
+     * @param frc
+     *            the FontRenderContext.
+     * @param glyphCodes
+     *            the specified integer array of glyph codes.
+     * @return the GlyphVector of associating characters to glyphs based on the
+     *         Unicode map of this Font.
+     * @throws NotImplementedException
+     *             if this method is not implemented by a subclass.
      */
     public GlyphVector createGlyphVector(FontRenderContext frc, int[] glyphCodes)
             throws org.apache.harmony.luni.util.NotImplementedException {
@@ -452,14 +486,15 @@
     }
 
     /**
-     * Creates a GlyphVector of associating characters to glyphs based on 
-     * the unicode map of this Font. 
+     * Creates a GlyphVector of associating characters to glyphs based on the
+     * Unicode map of this Font.
      * 
-     * @param frc the FontRenderContext.
-     * @param str the specified String.
-     * 
-     * @return the GlyphVector of associating characters to glyphs 
-     * based on the unicode map of this Font.
+     * @param frc
+     *            the FontRenderContext.
+     * @param str
+     *            the specified String.
+     * @return the GlyphVector of associating characters to glyphs based on the
+     *         Unicode map of this Font.
      */
     public GlyphVector createGlyphVector(FontRenderContext frc, String str) {
         return new AndroidGlyphVector(str.toCharArray(), frc, this, 0);
@@ -467,14 +502,14 @@
     }
 
     /**
-     * Returns the font style constant value corresponding to one of the font style
-     * names ("BOLD", "ITALIC", "BOLDITALIC"). This method returns Font.PLAIN if
-     * the argument is not one of the predefined style names.
+     * Returns the font style constant value corresponding to one of the font
+     * style names ("BOLD", "ITALIC", "BOLDITALIC"). This method returns
+     * Font.PLAIN if the argument is not one of the predefined style names.
      * 
-     * @param fontStyleName font style name
-     * 
+     * @param fontStyleName
+     *            font style name.
      * @return font style constant value corresponding to the font style name
-     * specified.
+     *         specified.
      */
     private static int getFontStyle(String fontStyleName) {
         int result = Font.PLAIN;
@@ -491,12 +526,12 @@
     }
 
     /**
-     * Decodes the specified string which described the Font. The string 
-     * should have the following format: fontname-style-pointsize. 
-     * The style can be PLAIN, BOLD, BOLDITALIC, or ITALIC.
+     * Decodes the specified string which described the Font. The string should
+     * have the following format: fontname-style-pointsize. The style can be
+     * PLAIN, BOLD, BOLDITALIC, or ITALIC.
      * 
-     * @param str the string which describes the font.
-     * 
+     * @param str
+     *            the string which describes the font.
      * @return the Font from the specified string.
      */
     public static Font decode(String str) {
@@ -553,15 +588,14 @@
     }
 
     /**
-     * Perfoms the specified affine transform to the Font and returns 
-     * a new Font.
+     * Performs the specified affine transform to the Font and returns a new
+     * Font.
      * 
-     * @param trans the AffineTransform.
-     * 
+     * @param trans
+     *            the AffineTransform.
      * @return the Font object.
-     * 
-     * @throws IllegalArgumentException if affine transform parameter
-     * is null.
+     * @throws IllegalArgumentException
+     *             if affine transform parameter is null.
      */
     @SuppressWarnings("unchecked")
     public Font deriveFont(AffineTransform trans) {
@@ -571,55 +605,52 @@
             throw new IllegalArgumentException(Messages.getString("awt.94")); //$NON-NLS-1$
         }
 
-        Hashtable<Attribute, Object> derivefRequestedAttributes = (Hashtable<Attribute, Object>) fRequestedAttributes
+        Hashtable<Attribute, Object> derivefRequestedAttributes = (Hashtable<Attribute, Object>)fRequestedAttributes
                 .clone();
 
-        derivefRequestedAttributes.put(TextAttribute.TRANSFORM,
-                new TransformAttribute(trans));
+        derivefRequestedAttributes.put(TextAttribute.TRANSFORM, new TransformAttribute(trans));
 
         return new Font(derivefRequestedAttributes);
 
     }
 
     /**
-     * Returns a new Font that is a copy of the current Font 
-     * modified so that the size is the specified size.
+     * Returns a new Font that is a copy of the current Font modified so that
+     * the size is the specified size.
      * 
-     * @param size the size of font.
-     * 
+     * @param size
+     *            the size of font.
      * @return the Font object.
      */
     @SuppressWarnings("unchecked")
     public Font deriveFont(float size) {
-        Hashtable<Attribute, Object> derivefRequestedAttributes = (Hashtable<Attribute, Object>) fRequestedAttributes
+        Hashtable<Attribute, Object> derivefRequestedAttributes = (Hashtable<Attribute, Object>)fRequestedAttributes
                 .clone();
         derivefRequestedAttributes.put(TextAttribute.SIZE, new Float(size));
         return new Font(derivefRequestedAttributes);
     }
 
     /**
-     * Returns a new Font that is a copy of the current Font 
-     * modified so that the style is the specified style.
+     * Returns a new Font that is a copy of the current Font modified so that
+     * the style is the specified style.
      * 
-     * @param style the style of font.
-     * 
+     * @param style
+     *            the style of font.
      * @return the Font object.
      */
     @SuppressWarnings("unchecked")
     public Font deriveFont(int style) {
-        Hashtable<Attribute, Object> derivefRequestedAttributes = (Hashtable<Attribute, Object>) fRequestedAttributes
+        Hashtable<Attribute, Object> derivefRequestedAttributes = (Hashtable<Attribute, Object>)fRequestedAttributes
                 .clone();
 
         if ((style & Font.BOLD) != 0) {
-            derivefRequestedAttributes.put(TextAttribute.WEIGHT,
-                    TextAttribute.WEIGHT_BOLD);
+            derivefRequestedAttributes.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD);
         } else if (derivefRequestedAttributes.get(TextAttribute.WEIGHT) != null) {
             derivefRequestedAttributes.remove(TextAttribute.WEIGHT);
         }
 
         if ((style & Font.ITALIC) != 0) {
-            derivefRequestedAttributes.put(TextAttribute.POSTURE,
-                    TextAttribute.POSTURE_OBLIQUE);
+            derivefRequestedAttributes.put(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE);
         } else if (derivefRequestedAttributes.get(TextAttribute.POSTURE) != null) {
             derivefRequestedAttributes.remove(TextAttribute.POSTURE);
         }
@@ -628,13 +659,14 @@
     }
 
     /**
-     * Returns a new Font that is a copy of the current Font
-     * modified to match the specified style and with the specified
-     * affine transform applied to its glyphs.
+     * Returns a new Font that is a copy of the current Font modified to match
+     * the specified style and with the specified affine transform applied to
+     * its glyphs.
      * 
-     * @param style the style of font.
-     * @param trans the AffineTransform.
-     * 
+     * @param style
+     *            the style of font.
+     * @param trans
+     *            the AffineTransform.
      * @return the Font object.
      */
     @SuppressWarnings("unchecked")
@@ -644,53 +676,48 @@
             // awt.94=transform can not be null
             throw new IllegalArgumentException(Messages.getString("awt.94")); //$NON-NLS-1$
         }
-        Hashtable<Attribute, Object> derivefRequestedAttributes = (Hashtable<Attribute, Object>) fRequestedAttributes
+        Hashtable<Attribute, Object> derivefRequestedAttributes = (Hashtable<Attribute, Object>)fRequestedAttributes
                 .clone();
 
         if ((style & BOLD) != 0) {
-            derivefRequestedAttributes.put(TextAttribute.WEIGHT,
-                    TextAttribute.WEIGHT_BOLD);
+            derivefRequestedAttributes.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD);
         } else if (derivefRequestedAttributes.get(TextAttribute.WEIGHT) != null) {
             derivefRequestedAttributes.remove(TextAttribute.WEIGHT);
         }
 
         if ((style & ITALIC) != 0) {
-            derivefRequestedAttributes.put(TextAttribute.POSTURE,
-                    TextAttribute.POSTURE_OBLIQUE);
+            derivefRequestedAttributes.put(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE);
         } else if (derivefRequestedAttributes.get(TextAttribute.POSTURE) != null) {
             derivefRequestedAttributes.remove(TextAttribute.POSTURE);
         }
-        derivefRequestedAttributes.put(TextAttribute.TRANSFORM,
-                new TransformAttribute(trans));
+        derivefRequestedAttributes.put(TextAttribute.TRANSFORM, new TransformAttribute(trans));
 
         return new Font(derivefRequestedAttributes);
     }
 
     /**
-     * Returns a new Font that is a copy of the current Font 
-     * modified so that the size and style are the specified 
-     * size and style.
+     * Returns a new Font that is a copy of the current Font modified so that
+     * the size and style are the specified size and style.
      * 
-     * @param style the style of font.
-     * @param size the size of font.
-     * 
+     * @param style
+     *            the style of font.
+     * @param size
+     *            the size of font.
      * @return the Font object.
      */
     @SuppressWarnings("unchecked")
     public Font deriveFont(int style, float size) {
-        Hashtable<Attribute, Object> derivefRequestedAttributes = (Hashtable<Attribute, Object>) fRequestedAttributes
+        Hashtable<Attribute, Object> derivefRequestedAttributes = (Hashtable<Attribute, Object>)fRequestedAttributes
                 .clone();
 
         if ((style & BOLD) != 0) {
-            derivefRequestedAttributes.put(TextAttribute.WEIGHT,
-                    TextAttribute.WEIGHT_BOLD);
+            derivefRequestedAttributes.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD);
         } else if (derivefRequestedAttributes.get(TextAttribute.WEIGHT) != null) {
             derivefRequestedAttributes.remove(TextAttribute.WEIGHT);
         }
 
         if ((style & ITALIC) != 0) {
-            derivefRequestedAttributes.put(TextAttribute.POSTURE,
-                    TextAttribute.POSTURE_OBLIQUE);
+            derivefRequestedAttributes.put(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE);
         } else if (derivefRequestedAttributes.get(TextAttribute.POSTURE) != null) {
             derivefRequestedAttributes.remove(TextAttribute.POSTURE);
         }
@@ -703,15 +730,15 @@
     /**
      * Returns a new Font object with a new set of font attributes.
      * 
-     * @param attributes the map of attributes.
-     * 
+     * @param attributes
+     *            the map of attributes.
      * @return the Font.
      */
     @SuppressWarnings("unchecked")
     public Font deriveFont(Map<? extends Attribute, ?> attributes) {
         Attribute[] avalAttributes = this.getAvailableAttributes();
 
-        Hashtable<Attribute, Object> derivefRequestedAttributes = (Hashtable<Attribute, Object>) fRequestedAttributes
+        Hashtable<Attribute, Object> derivefRequestedAttributes = (Hashtable<Attribute, Object>)fRequestedAttributes
                 .clone();
         Object currAttribute;
         for (Attribute element : avalAttributes) {
@@ -726,10 +753,10 @@
     /**
      * Compares the specified Object with the current Font.
      * 
-     * @param obj the Object to be compared.
-     * 
-     * @return true, if the specified Object is an instance of Font
-     * with the same family, size, and style as this Font, false otherwise. 
+     * @param obj
+     *            the Object to be compared.
+     * @return true, if the specified Object is an instance of Font with the
+     *         same family, size, and style as this Font, false otherwise.
      */
     @Override
     public boolean equals(Object obj) {
@@ -739,11 +766,10 @@
 
         if (obj != null) {
             try {
-                Font font = (Font) obj;
+                Font font = (Font)obj;
 
                 return ((this.style == font.style) && (this.size == font.size)
-                        && this.name.equals(font.name)
-                        && (this.pointSize == font.pointSize) && (this
+                        && this.name.equals(font.name) && (this.pointSize == font.pointSize) && (this
                         .getTransform()).equals(font.getTransform()));
             } catch (ClassCastException e) {
             }
@@ -759,7 +785,7 @@
      */
     @SuppressWarnings("unchecked")
     public Map<TextAttribute, ?> getAttributes() {
-        return (Map<TextAttribute, ?>) fRequestedAttributes.clone();
+        return (Map<TextAttribute, ?>)fRequestedAttributes.clone();
     }
 
     /**
@@ -768,18 +794,19 @@
      * @return the keys array of all available attributes.
      */
     public Attribute[] getAvailableAttributes() {
-        Attribute[] attrs = { TextAttribute.FAMILY, TextAttribute.POSTURE,
-                TextAttribute.SIZE, TextAttribute.TRANSFORM,
-                TextAttribute.WEIGHT, TextAttribute.SUPERSCRIPT,
-                TextAttribute.WIDTH };
+        Attribute[] attrs = {
+                TextAttribute.FAMILY, TextAttribute.POSTURE, TextAttribute.SIZE,
+                TextAttribute.TRANSFORM, TextAttribute.WEIGHT, TextAttribute.SUPERSCRIPT,
+                TextAttribute.WIDTH
+        };
         return attrs;
     }
 
     /**
      * Gets the baseline for this character.
      * 
-     * @param c the character.
-     * 
+     * @param c
+     *            the character.
      * @return the baseline for this character.
      */
     public byte getBaselineFor(char c) {
@@ -800,19 +827,18 @@
     }
 
     /**
-     * Returns the family name of this Font associated with 
-     * the specified locale.
+     * Returns the family name of this Font associated with the specified
+     * locale.
      * 
-     * @param l the locale.
-     * 
-     * @return the family name of this Font associated with 
-     * the specified locale.
+     * @param l
+     *            the locale.
+     * @return the family name of this Font associated with the specified
+     *         locale.
      */
     public String getFamily(Locale l) {
         if (l == null) {
             // awt.01='{0}' parameter is null
-            throw new NullPointerException(Messages.getString(
-                    "awt.01", "Locale")); //$NON-NLS-1$ //$NON-NLS-2$ 
+            throw new NullPointerException(Messages.getString("awt.01", "Locale")); //$NON-NLS-1$ //$NON-NLS-2$ 
         }
         return getFamily();
     }
@@ -820,12 +846,12 @@
     /**
      * Gets a Font with the specified attribute set.
      * 
-     * @param attributes the attributes to be assigned to the new Font.
-     * 
+     * @param attributes
+     *            the attributes to be assigned to the new Font.
      * @return the Font.
      */
     public static Font getFont(Map<? extends Attribute, ?> attributes) {
-        Font fnt = (Font) attributes.get(TextAttribute.FONT);
+        Font fnt = (Font)attributes.get(TextAttribute.FONT);
         if (fnt != null) {
             return fnt;
         }
@@ -833,14 +859,16 @@
     }
 
     /**
-     * Gets a Font object from the system properties list with the specified name
-     * or returns the specified Font if there is no such property.
+     * Gets a Font object from the system properties list with the specified
+     * name or returns the specified Font if there is no such property.
      * 
-     * @param sp the specified property name.
-     * @param f the Font.
-     * 
-     * @return the Font object from the system properties list  with the specified name
-     * or the specified Font if there is no such property.
+     * @param sp
+     *            the specified property name.
+     * @param f
+     *            the Font.
+     * @return the Font object from the system properties list with the
+     *         specified name or the specified Font if there is no such
+     *         property.
      */
     public static Font getFont(String sp, Font f) {
         String pr = System.getProperty(sp);
@@ -851,12 +879,13 @@
     }
 
     /**
-     * Gets a Font object from the system properties list with the specified name.
+     * Gets a Font object from the system properties list with the specified
+     * name.
      * 
-     * @param sp the system property name.
-     * 
-     * @return the Font, or null if there is no shuch property
-     * with the specified name. 
+     * @param sp
+     *            the system property name.
+     * @return the Font, or null if there is no such property with the specified
+     *         name.
      */
     public static Font getFont(String sp) {
         return getFont(sp, null);
@@ -877,8 +906,8 @@
     /**
      * Returns the font name associated with the specified locale.
      * 
-     * @param l the locale.
-     * 
+     * @param l
+     *            the locale.
      * @return the font name associated with the specified locale.
      */
     public String getFontName(Locale l) {
@@ -888,38 +917,45 @@
     /**
      * Returns a LineMetrics object created with the specified parameters.
      * 
-     * @param chars the chars array.
-     * @param start the start offset.
-     * @param end the end offset.
-     * @param frc the FontRenderContext.
-     * 
+     * @param chars
+     *            the chars array.
+     * @param start
+     *            the start offset.
+     * @param end
+     *            the end offset.
+     * @param frc
+     *            the FontRenderContext.
      * @return the LineMetrics for the specified parameters.
      */
-    public LineMetrics getLineMetrics(char[] chars, int start, int end,
-            FontRenderContext frc) {
+    public LineMetrics getLineMetrics(char[] chars, int start, int end, FontRenderContext frc) {
         if (frc == null) {
             // awt.00=FontRenderContext is null
             throw new NullPointerException(Messages.getString("awt.00")); //$NON-NLS-1$
         }
 
-        //FontMetrics fm = AndroidGraphics2D.getInstance().getFontMetrics();
+        // FontMetrics fm = AndroidGraphics2D.getInstance().getFontMetrics();
         FontMetrics fm = new FontMetricsImpl(this);
-        float[] fmet = {fm.getAscent(), fm.getDescent(), fm.getLeading()}; 
+        float[] fmet = {
+                fm.getAscent(), fm.getDescent(), fm.getLeading()
+        };
         return new LineMetricsImpl(chars.length, fmet, null);
     }
 
     /**
      * Returns a LineMetrics object created with the specified parameters.
      * 
-     * @param iter the CharacterIterator.
-     * @param start the start offset.
-     * @param end the end offset.
-     * @param frc the FontRenderContext.
-     * 
+     * @param iter
+     *            the CharacterIterator.
+     * @param start
+     *            the start offset.
+     * @param end
+     *            the end offset.
+     * @param frc
+     *            the FontRenderContext.
      * @return the LineMetrics for the specified parameters.
      */
-    public LineMetrics getLineMetrics(CharacterIterator iter, int start,
-            int end, FontRenderContext frc) {
+    public LineMetrics getLineMetrics(CharacterIterator iter, int start, int end,
+            FontRenderContext frc) {
 
         if (frc == null) {
             // awt.00=FontRenderContext is null
@@ -935,8 +971,8 @@
         } else {
             char[] chars = new char[iterCount];
             int i = 0;
-            for (char c = iter.setIndex(start); c != CharacterIterator.DONE
-                    && (i < iterCount); c = iter.next()) {
+            for (char c = iter.setIndex(start); c != CharacterIterator.DONE && (i < iterCount); c = iter
+                    .next()) {
                 chars[i] = c;
                 i++;
             }
@@ -948,16 +984,19 @@
     /**
      * Returns a LineMetrics object created with the specified parameters.
      * 
-     * @param str the String.
-     * @param frc the FontRenderContext.
-     * 
+     * @param str
+     *            the String.
+     * @param frc
+     *            the FontRenderContext.
      * @return the LineMetrics for the specified parameters.
      */
     public LineMetrics getLineMetrics(String str, FontRenderContext frc) {
-        //FontMetrics fm = AndroidGraphics2D.getInstance().getFontMetrics();
+        // FontMetrics fm = AndroidGraphics2D.getInstance().getFontMetrics();
         FontMetrics fm = new FontMetricsImpl(this);
-        float[] fmet = {fm.getAscent(), fm.getDescent(), fm.getLeading()};
-        //Log.i("FONT FMET", fmet.toString());
+        float[] fmet = {
+                fm.getAscent(), fm.getDescent(), fm.getLeading()
+        };
+        // Log.i("FONT FMET", fmet.toString());
         return new LineMetricsImpl(str.length(), fmet, null);
 
     }
@@ -965,45 +1004,48 @@
     /**
      * Returns a LineMetrics object created with the specified parameters.
      * 
-     * @param str the String.
-     * @param start the start offset.
-     * @param end the end offset.
-     * @param frc the FontRenderContext.
-     * 
+     * @param str
+     *            the String.
+     * @param start
+     *            the start offset.
+     * @param end
+     *            the end offset.
+     * @param frc
+     *            the FontRenderContext.
      * @return the LineMetrics for the specified parameters.
      */
-    public LineMetrics getLineMetrics(String str, int start, int end,
-            FontRenderContext frc) {
+    public LineMetrics getLineMetrics(String str, int start, int end, FontRenderContext frc) {
         return this.getLineMetrics(str.substring(start, end), frc);
     }
 
     /**
-     * Gets the logical bounds of the specified String in 
-     * the specified FontRenderContext. The logical bounds contains 
-     * the origin, ascent, advance, and height.
+     * Gets the logical bounds of the specified String in the specified
+     * FontRenderContext. The logical bounds contains the origin, ascent,
+     * advance, and height.
      * 
-     * @param ci the specified CharacterIterator.
-     * @param start the start offset.
-     * @param end the end offset.
-     * @param frc the FontRenderContext.
-     * 
+     * @param ci
+     *            the specified CharacterIterator.
+     * @param start
+     *            the start offset.
+     * @param end
+     *            the end offset.
+     * @param frc
+     *            the FontRenderContext.
      * @return a Rectangle2D object.
      */
-    public Rectangle2D getStringBounds(CharacterIterator ci, int start,
-            int end, FontRenderContext frc) {
+    public Rectangle2D getStringBounds(CharacterIterator ci, int start, int end,
+            FontRenderContext frc) {
         int first = ci.getBeginIndex();
         int finish = ci.getEndIndex();
         char[] chars;
 
         if (start < first) {
             // awt.95=Wrong start index: {0}
-            throw new IndexOutOfBoundsException(Messages.getString(
-                    "awt.95", start)); //$NON-NLS-1$
+            throw new IndexOutOfBoundsException(Messages.getString("awt.95", start)); //$NON-NLS-1$
         }
         if (end > finish) {
             // awt.96=Wrong finish index: {0}
-            throw new IndexOutOfBoundsException(Messages.getString(
-                    "awt.96", end)); //$NON-NLS-1$
+            throw new IndexOutOfBoundsException(Messages.getString("awt.96", end)); //$NON-NLS-1$
         }
         if (start > end) {
             // awt.97=Wrong range length: {0}
@@ -1028,13 +1070,14 @@
     }
 
     /**
-     * Gets the logical bounds of the specified String in 
-     * the specified FontRenderContext. The logical bounds contains 
-     * the origin, ascent, advance, and height.
+     * Gets the logical bounds of the specified String in the specified
+     * FontRenderContext. The logical bounds contains the origin, ascent,
+     * advance, and height.
      * 
-     * @param str the specified String.
-     * @param frc the FontRenderContext.
-     * 
+     * @param str
+     *            the specified String.
+     * @param frc
+     *            the FontRenderContext.
      * @return a Rectangle2D object.
      */
     public Rectangle2D getStringBounds(String str, FontRenderContext frc) {
@@ -1044,46 +1087,48 @@
     }
 
     /**
-     * Gets the logical bounds of the specified String in 
-     * the specified FontRenderContext. The logical bounds contains 
-     * the origin, ascent, advance, and height.
+     * Gets the logical bounds of the specified String in the specified
+     * FontRenderContext. The logical bounds contains the origin, ascent,
+     * advance, and height.
      * 
-     * @param str the specified String.
-     * @param start the start offset.
-     * @param end the end offset.
-     * @param frc the FontRenderContext.
-     * 
+     * @param str
+     *            the specified String.
+     * @param start
+     *            the start offset.
+     * @param end
+     *            the end offset.
+     * @param frc
+     *            the FontRenderContext.
      * @return a Rectangle2D object.
      */
-    public Rectangle2D getStringBounds(String str, int start, int end,
-            FontRenderContext frc) {
+    public Rectangle2D getStringBounds(String str, int start, int end, FontRenderContext frc) {
 
         return this.getStringBounds((str.substring(start, end)), frc);
     }
 
     /**
-     * Gets the logical bounds of the specified String in 
-     * the specified FontRenderContext. The logical bounds contains 
-     * the origin, ascent, advance, and height.
+     * Gets the logical bounds of the specified String in the specified
+     * FontRenderContext. The logical bounds contains the origin, ascent,
+     * advance, and height.
      * 
-     * @param chars the specified character array.
-     * @param start the start offset.
-     * @param end the end offset.
-     * @param frc the FontRenderContext.
-     * 
+     * @param chars
+     *            the specified character array.
+     * @param start
+     *            the start offset.
+     * @param end
+     *            the end offset.
+     * @param frc
+     *            the FontRenderContext.
      * @return a Rectangle2D object.
      */
-    public Rectangle2D getStringBounds(char[] chars, int start, int end,
-            FontRenderContext frc) {
+    public Rectangle2D getStringBounds(char[] chars, int start, int end, FontRenderContext frc) {
         if (start < 0) {
             // awt.95=Wrong start index: {0}
-            throw new IndexOutOfBoundsException(Messages.getString(
-                    "awt.95", start)); //$NON-NLS-1$
+            throw new IndexOutOfBoundsException(Messages.getString("awt.95", start)); //$NON-NLS-1$
         }
         if (end > chars.length) {
             // awt.96=Wrong finish index: {0}
-            throw new IndexOutOfBoundsException(Messages.getString(
-                    "awt.96", end)); //$NON-NLS-1$
+            throw new IndexOutOfBoundsException(Messages.getString("awt.96", end)); //$NON-NLS-1$
         }
         if (start > end) {
             // awt.97=Wrong range length: {0}
@@ -1095,7 +1140,7 @@
             throw new NullPointerException(Messages.getString("awt.00")); //$NON-NLS-1$
         }
 
-        FontPeerImpl peer = (FontPeerImpl) this.getPeer();
+        FontPeerImpl peer = (FontPeerImpl)this.getPeer();
 
         final int TRANSFORM_MASK = AffineTransform.TYPE_GENERAL_ROTATION
                 | AffineTransform.TYPE_GENERAL_TRANSFORM;
@@ -1110,13 +1155,13 @@
             for (int i = start; i < end; i++) {
                 width += peer.charWidth(chars[i]);
             }
-            //LineMetrics nlm = peer.getLineMetrics();
-            
+            // LineMetrics nlm = peer.getLineMetrics();
+
             LineMetrics nlm = getLineMetrics(chars, start, end, frc);
-            
+
             bounds = transform.createTransformedShape(
-                    new Rectangle2D.Float(0, -nlm.getAscent(), width, nlm
-                            .getHeight())).getBounds2D();
+                    new Rectangle2D.Float(0, -nlm.getAscent(), width, nlm.getHeight()))
+                    .getBounds2D();
         } else {
             int len = end - start;
             char[] subChars = new char[len];
@@ -1127,11 +1172,11 @@
     }
 
     /**
-     * Gets the character's maximum bounds as defined in 
-     * the specified FontRenderContext.
+     * Gets the character's maximum bounds as defined in the specified
+     * FontRenderContext.
      * 
-     * @param frc the FontRenderContext.
-     * 
+     * @param frc
+     *            the FontRenderContext.
      * @return the character's maximum bounds.
      */
     public Rectangle2D getMaxCharBounds(FontRenderContext frc) {
@@ -1140,7 +1185,7 @@
             throw new NullPointerException(Messages.getString("awt.00")); //$NON-NLS-1$ 
         }
 
-        FontPeerImpl peer = (FontPeerImpl) this.getPeer();
+        FontPeerImpl peer = (FontPeerImpl)this.getPeer();
 
         Rectangle2D bounds = peer.getMaxCharBounds(frc);
         AffineTransform transform = getTransform();
@@ -1155,42 +1200,40 @@
     }
 
     /**
-     * Returns a new GlyphVector object performing full layout of
-     * the text.
+     * Returns a new GlyphVector object performing full layout of the text.
      * 
-     * @param frc the FontRenderContext.
-     * @param chars the character array to be layout.
-     * @param start the start offset of the text to use for 
-     * the GlyphVector.
-     * @param count the count of characters to use for 
-     * the GlyphVector.
-     * @param flags the flag indicating text direction: 
-     * LAYOUT_RIGHT_TO_LEFT, LAYOUT_LEFT_TO_RIGHT.
-     * 
+     * @param frc
+     *            the FontRenderContext.
+     * @param chars
+     *            the character array to be layout.
+     * @param start
+     *            the start offset of the text to use for the GlyphVector.
+     * @param count
+     *            the count of characters to use for the GlyphVector.
+     * @param flags
+     *            the flag indicating text direction: LAYOUT_RIGHT_TO_LEFT,
+     *            LAYOUT_LEFT_TO_RIGHT.
      * @return the GlyphVector.
      */
-    public GlyphVector layoutGlyphVector(FontRenderContext frc, char[] chars,
-            int start, int count, int flags) {
+    public GlyphVector layoutGlyphVector(FontRenderContext frc, char[] chars, int start, int count,
+            int flags) {
         // TODO: implement method for bidirectional text.
         // At the moment only LTR and RTL texts supported.
         if (start < 0) {
             // awt.95=Wrong start index: {0}
-            throw new ArrayIndexOutOfBoundsException(Messages.getString(
-                    "awt.95", //$NON-NLS-1$
+            throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.95", //$NON-NLS-1$
                     start));
         }
 
         if (count < 0) {
             // awt.98=Wrong count value, can not be negative: {0}
-            throw new ArrayIndexOutOfBoundsException(Messages.getString(
-                    "awt.98", //$NON-NLS-1$
+            throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.98", //$NON-NLS-1$
                     count));
         }
 
         if (start + count > chars.length) {
             // awt.99=Wrong [start + count] is out of range: {0}
-            throw new ArrayIndexOutOfBoundsException(Messages.getString(
-                    "awt.99", //$NON-NLS-1$
+            throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.99", //$NON-NLS-1$
                     (start + count)));
         }
 
@@ -1234,7 +1277,7 @@
      * @return the postscript name of this Font.
      */
     public String getPSName() {
-        FontPeerImpl peer = (FontPeerImpl) this.getPeer();
+        FontPeerImpl peer = (FontPeerImpl)this.getPeer();
         return peer.getPSName();
     }
 
@@ -1251,39 +1294,37 @@
      * Gets the peer of this Font.
      * 
      * @return the peer of this Font.
-     * 
      * @deprecated Font rendering is platform independent now.
      */
     @Deprecated
     public java.awt.peer.FontPeer getPeer() {
         if (fontPeer == null) {
-            fontPeer = (FontPeerImpl) Toolkit.getDefaultToolkit()
-                    .getGraphicsFactory().getFontPeer(this);
+            fontPeer = (FontPeerImpl)Toolkit.getDefaultToolkit().getGraphicsFactory().getFontPeer(
+                    this);
         }
         return fontPeer;
 
     }
 
     /**
-     * Gets the transform acting on this Font (from the Font's 
-     * attributes).
+     * Gets the transform acting on this Font (from the Font's attributes).
      * 
-     * @return the transformation of this Font. 
+     * @return the transformation of this Font.
      */
     public AffineTransform getTransform() {
         Object transform = fRequestedAttributes.get(TextAttribute.TRANSFORM);
 
         if (transform != null) {
             if (transform instanceof TransformAttribute) {
-                return ((TransformAttribute) transform).getTransform();
+                return ((TransformAttribute)transform).getTransform();
             }
             if (transform instanceof AffineTransform) {
-                return new AffineTransform((AffineTransform) transform);
+                return new AffineTransform((AffineTransform)transform);
             }
         } else {
             transform = new AffineTransform();
         }
-        return (AffineTransform) transform;
+        return (AffineTransform)transform;
 
     }
 
@@ -1324,13 +1365,12 @@
     }
 
     /**
-     * Returns true if this Font has uniform line metrics. 
+     * Returns true if this Font has uniform line metrics.
      * 
-     * @return true if this Font has uniform line metrics, 
-     * false otherwise.
+     * @return true if this Font has uniform line metrics, false otherwise.
      */
     public boolean hasUniformLineMetrics() {
-        FontPeerImpl peer = (FontPeerImpl) this.getPeer();
+        FontPeerImpl peer = (FontPeerImpl)this.getPeer();
         return peer.hasUniformLineMetrics();
     }
 
@@ -1338,7 +1378,6 @@
      * Returns hash code of this Font object.
      * 
      * @return the hash code of this Font object.
-
      */
     @Override
     public int hashCode() {
@@ -1376,21 +1415,21 @@
      */
     public int getNumGlyphs() {
         if (numGlyphs == -1) {
-            FontPeerImpl peer = (FontPeerImpl) this.getPeer();
+            FontPeerImpl peer = (FontPeerImpl)this.getPeer();
             this.numGlyphs = peer.getNumGlyphs();
         }
         return this.numGlyphs;
     }
 
     /**
-     * Gets the glyphCode which is used as default glyph when this Font
-     * does not have a glyph for a specified unicode.
+     * Gets the glyphCode which is used as default glyph when this Font does not
+     * have a glyph for a specified Unicode.
      * 
      * @return the missing glyph code.
      */
     public int getMissingGlyphCode() {
         if (missingGlyphCode == -1) {
-            FontPeerImpl peer = (FontPeerImpl) this.getPeer();
+            FontPeerImpl peer = (FontPeerImpl)this.getPeer();
             this.missingGlyphCode = peer.getMissingGlyphCode();
         }
         return this.missingGlyphCode;
@@ -1407,29 +1446,30 @@
 
     /**
      * Gets the italic angle of this Font.
-      * 
+     * 
      * @return the italic angle of this Font.
      */
     public float getItalicAngle() {
-        FontPeerImpl peer = (FontPeerImpl) this.getPeer();
+        FontPeerImpl peer = (FontPeerImpl)this.getPeer();
         return peer.getItalicAngle();
     }
 
     /**
      * Creates the font with the specified font format and font file.
      * 
-     * @param fontFormat the font format.
-     * @param fontFile the file object represented the input data 
-     * for the font.
-     * 
+     * @param fontFormat
+     *            the font format.
+     * @param fontFile
+     *            the file object represented the input data for the font.
      * @return the Font.
-     * 
-     * @throws FontFormatException is thrown if fontFile does not contain 
-     * the required font tables for the specified format.
-     * @throws IOException signals that an I/O exception has occurred.
+     * @throws FontFormatException
+     *             is thrown if fontFile does not contain the required font
+     *             tables for the specified format.
+     * @throws IOException
+     *             signals that an I/O exception has occurred.
      */
-    public static Font createFont(int fontFormat, File fontFile)
-            throws FontFormatException, IOException {
+    public static Font createFont(int fontFormat, File fontFile) throws FontFormatException,
+            IOException {
         // ???AWT not supported
         InputStream is = new FileInputStream(fontFile);
         try {
@@ -1442,15 +1482,16 @@
     /**
      * Creates the font with the specified font format and input stream.
      * 
-     * @param fontFormat the font format.
-     * @param fontStream the input stream represented input data for 
-     * the font.
-     * 
+     * @param fontFormat
+     *            the font format.
+     * @param fontStream
+     *            the input stream represented input data for the font.
      * @return the Font.
-     * 
-     * @throws FontFormatException is thrown if fontFile does not contain 
-     * the required font tables for the specified format.
-     * @throws IOException signals that an I/O exception has occurred.
+     * @throws FontFormatException
+     *             is thrown if fontFile does not contain the required font
+     *             tables for the specified format.
+     * @throws IOException
+     *             signals that an I/O exception has occurred.
      */
     public static Font createFont(int fontFormat, InputStream fontStream)
             throws FontFormatException, IOException {
@@ -1466,15 +1507,15 @@
         if (fontFormat != TRUETYPE_FONT) { // awt.9A=Unsupported font format
             throw new IllegalArgumentException(Messages.getString("awt.9A")); //$NON-NLS-1$ 
         }
-        
+
         /* Get font file in system-specific directory */
 
-        File fontFile = Toolkit.getDefaultToolkit().getGraphicsFactory()
-                .getFontManager().getTempFontFile();
+        File fontFile = Toolkit.getDefaultToolkit().getGraphicsFactory().getFontManager()
+                .getTempFontFile();
 
-                // BEGIN android-modified
+        // BEGIN android-modified
         buffStream = new BufferedInputStream(fontStream, 8192);
-                // END android-modified
+        // END android-modified
         FileOutputStream fOutStream = new FileOutputStream(fontFile);
 
         bRead = buffStream.read(buf, 0, size);
diff --git a/awt/java/awt/FontFormatException.java b/awt/java/awt/FontFormatException.java
index c017fd2..806711a 100644
--- a/awt/java/awt/FontFormatException.java
+++ b/awt/java/awt/FontFormatException.java
@@ -18,21 +18,27 @@
  * @author Ilya S. Okomin
  * @version $Revision$
  */
+
 package java.awt;
 
 /**
- * The FontFormatException class is used to provide notification
- * and information that font can't be created.
+ * The FontFormatException class is used to provide notification and information
+ * that font can't be created.
+ * 
+ * @since Android 1.0
  */
 public class FontFormatException extends Exception {
-    
-    /** The Constant serialVersionUID. */
+
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = -4481290147811361272L;
 
     /**
      * Instantiates a new font format exception with detailed message.
      * 
-     * @param reason the detailed message.
+     * @param reason
+     *            the detailed message.
      */
     public FontFormatException(String reason) {
         super(reason);
diff --git a/awt/java/awt/FontMetrics.java b/awt/java/awt/FontMetrics.java
index 3948d73..9082626 100644
--- a/awt/java/awt/FontMetrics.java
+++ b/awt/java/awt/FontMetrics.java
@@ -18,6 +18,7 @@
  * @author Ilya S. Okomin
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.awt.font.FontRenderContext;
@@ -29,34 +30,40 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The FontMetrics class contains information about the rendering 
- * of a particular font on a particular screen.
+ * The FontMetrics class contains information about the rendering of a
+ * particular font on a particular screen.
  * <p>
- * Each character in the Font has three values that help define where 
- * to place it: an ascent, a descent, and an advance. The ascent is the 
- * distance the character extends above the baseline. The descent is
- * the distance the character extends below the baseline. 
- * The advance width defines the position at which the next character
- * should be placed.
+ * Each character in the Font has three values that help define where to place
+ * it: an ascent, a descent, and an advance. The ascent is the distance the
+ * character extends above the baseline. The descent is the distance the
+ * character extends below the baseline. The advance width defines the position
+ * at which the next character should be placed.
  * <p>
- * An array of characters or a string has an ascent, a descent,
- *  and an advance width too. The ascent or descent of the array 
- *  is specified by the maximum ascent or descent of the characters 
- *  in the array. The advance width is the sum of the advance widths 
- *  of each of the characters in the character array.
+ * An array of characters or a string has an ascent, a descent, and an advance
+ * width too. The ascent or descent of the array is specified by the maximum
+ * ascent or descent of the characters in the array. The advance width is the
+ * sum of the advance widths of each of the characters in the character array.
+ * </p>
+ * 
+ * @since Android 1.0
  */
 public abstract class FontMetrics implements Serializable {
-    
-    /** The Constant serialVersionUID. */
+
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = 1681126225205050147L;
 
-    /** The font from which the FontMetrics is created. */
+    /**
+     * The font from which the FontMetrics is created.
+     */
     protected Font font;
 
     /**
      * Instantiates a new font metrics from the specified Font.
      * 
-     * @param fnt the Font.
+     * @param fnt
+     *            the Font.
      */
     protected FontMetrics(Font fnt) {
         this.font = fnt;
@@ -65,12 +72,11 @@
     /**
      * Returns the String representation of this FontMetrics.
      * 
-     * @return the string
+     * @return the string.
      */
     @Override
     public String toString() {
-        return this.getClass().getName() +
-                "[font=" + this.getFont() + //$NON-NLS-1$
+        return this.getClass().getName() + "[font=" + this.getFont() + //$NON-NLS-1$
                 "ascent=" + this.getAscent() + //$NON-NLS-1$
                 ", descent=" + this.getDescent() + //$NON-NLS-1$
                 ", height=" + this.getHeight() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
@@ -95,9 +101,9 @@
     }
 
     /**
-     * Gets the font ascent of the Font associated with this FontMetrics.
-     * The font ascent is the distance from the font's baseline to 
-     * the top of most alphanumeric characters.
+     * Gets the font ascent of the Font associated with this FontMetrics. The
+     * font ascent is the distance from the font's baseline to the top of most
+     * alphanumeric characters.
      * 
      * @return the ascent of the Font associated with this FontMetrics.
      */
@@ -106,9 +112,9 @@
     }
 
     /**
-     * Gets the font descent of the Font associated with this FontMetrics.
-     * The font descent is the distance from the font's baseline to 
-     * the bottom of most alphanumeric characters with descenders.
+     * Gets the font descent of the Font associated with this FontMetrics. The
+     * font descent is the distance from the font's baseline to the bottom of
+     * most alphanumeric characters with descenders.
      * 
      * @return the descent of the Font associated with this FontMetrics.
      */
@@ -126,192 +132,198 @@
     }
 
     /**
-     * Gets the LineMetrics object for the specified CharacterIterator
-     * in the specified Graphics.
+     * Gets the LineMetrics object for the specified CharacterIterator in the
+     * specified Graphics.
      * 
-     * @param ci the CharacterIterator.
-     * @param beginIndex the offset.
-     * @param limit the number of characters to be used.
-     * @param context the Graphics.
-     * 
-     * @return the LineMetrics object for the specified CharacterIterator
-     * in the specified Graphics.
+     * @param ci
+     *            the CharacterIterator.
+     * @param beginIndex
+     *            the offset.
+     * @param limit
+     *            the number of characters to be used.
+     * @param context
+     *            the Graphics.
+     * @return the LineMetrics object for the specified CharacterIterator in the
+     *         specified Graphics.
      */
-    public LineMetrics getLineMetrics(CharacterIterator ci, int beginIndex,
-                                        int limit, Graphics context) {
-        return font.getLineMetrics(ci, beginIndex, limit, 
-                this.getFRCFromGraphics(context));
+    public LineMetrics getLineMetrics(CharacterIterator ci, int beginIndex, int limit,
+            Graphics context) {
+        return font.getLineMetrics(ci, beginIndex, limit, this.getFRCFromGraphics(context));
     }
 
     /**
-     * Gets the LineMetrics object for the specified String
-     * in the specified Graphics.
+     * Gets the LineMetrics object for the specified String in the specified
+     * Graphics.
      * 
-     * @param str the String.
-     * @param context the Graphics.
-     * 
-     * @return the LineMetrics object for the specified String
-     * in the specified Graphics.
+     * @param str
+     *            the String.
+     * @param context
+     *            the Graphics.
+     * @return the LineMetrics object for the specified String in the specified
+     *         Graphics.
      */
     public LineMetrics getLineMetrics(String str, Graphics context) {
         return font.getLineMetrics(str, this.getFRCFromGraphics(context));
     }
 
     /**
-     * Gets the LineMetrics object for the specified character 
-     * array in the specified Graphics.
+     * Gets the LineMetrics object for the specified character array in the
+     * specified Graphics.
      * 
-     * @param chars the character array.
-     * @param beginIndex the offset of array.
-     * @param limit the number of characters to be used.
-     * @param context the Graphics.
-     * 
-     * @return the LineMetrics object for the specified character 
-     * array in the specified Graphics.
+     * @param chars
+     *            the character array.
+     * @param beginIndex
+     *            the offset of array.
+     * @param limit
+     *            the number of characters to be used.
+     * @param context
+     *            the Graphics.
+     * @return the LineMetrics object for the specified character array in the
+     *         specified Graphics.
      */
-    public LineMetrics getLineMetrics(char[] chars, int beginIndex, int limit,
-                                        Graphics context) {
-        return font.getLineMetrics(chars, beginIndex, limit, 
-                this.getFRCFromGraphics(context));
+    public LineMetrics getLineMetrics(char[] chars, int beginIndex, int limit, Graphics context) {
+        return font.getLineMetrics(chars, beginIndex, limit, this.getFRCFromGraphics(context));
     }
 
     /**
-     * Gets the LineMetrics object for the specified String
-     * in the specified Graphics.
+     * Gets the LineMetrics object for the specified String in the specified
+     * Graphics.
      * 
-     * @param str the String.
-     * @param beginIndex the offset.
-     * @param limit the number of characters to be used.
-     * @param context the Graphics.
-     * 
-     * @return the LineMetrics object for the specified String
-     * in the specified Graphics.
+     * @param str
+     *            the String.
+     * @param beginIndex
+     *            the offset.
+     * @param limit
+     *            the number of characters to be used.
+     * @param context
+     *            the Graphics.
+     * @return the LineMetrics object for the specified String in the specified
+     *         Graphics.
      */
-    public LineMetrics getLineMetrics(String str, int beginIndex, int limit,
-                                        Graphics context) {
-        return font.getLineMetrics(str, beginIndex, limit, 
-                this.getFRCFromGraphics(context));
+    public LineMetrics getLineMetrics(String str, int beginIndex, int limit, Graphics context) {
+        return font.getLineMetrics(str, beginIndex, limit, this.getFRCFromGraphics(context));
     }
 
     /**
-     * Returns the character's maximum bounds in the specified 
-     * Graphics context.
+     * Returns the character's maximum bounds in the specified Graphics context.
      * 
-     * @param context the Graphics context.
-     * 
-     * @return the character's maximum bounds in the specified 
-     * Graphics context.
+     * @param context
+     *            the Graphics context.
+     * @return the character's maximum bounds in the specified Graphics context.
      */
     public Rectangle2D getMaxCharBounds(Graphics context) {
         return this.font.getMaxCharBounds(this.getFRCFromGraphics(context));
     }
-    
-    /**
-     * Gets the bounds of the specified CharacterIterator 
-     * in the specified Graphics context.
-     * 
-     * @param ci the CharacterIterator.
-     * @param beginIndex the begin offset of the array.
-     * @param limit the number of characters.
-     * @param context the Graphics.
-     * 
-     * @return the bounds of the specified CharacterIterator 
-     * in the specified Graphics context.
-     */
-    public Rectangle2D getStringBounds(CharacterIterator ci, int beginIndex,
-            int limit, Graphics context) {
-        return font.getStringBounds(ci, beginIndex, limit, 
-                this.getFRCFromGraphics(context));
-    }
 
     /**
-     * Gets the bounds of the specified String 
-     * in the specified Graphics context.
+     * Gets the bounds of the specified CharacterIterator in the specified
+     * Graphics context.
      * 
-     * @param str the String.
-     * @param beginIndex the begin offset of the array.
-     * @param limit the number of characters.
-     * @param context the Graphics.
-     * 
-     * @return the bounds of the specified String 
-     * in the specified Graphics context.
+     * @param ci
+     *            the CharacterIterator.
+     * @param beginIndex
+     *            the begin offset of the array.
+     * @param limit
+     *            the number of characters.
+     * @param context
+     *            the Graphics.
+     * @return the bounds of the specified CharacterIterator in the specified
+     *         Graphics context.
      */
-    public Rectangle2D getStringBounds(String str, int beginIndex, int limit,
+    public Rectangle2D getStringBounds(CharacterIterator ci, int beginIndex, int limit,
             Graphics context) {
-        return font.getStringBounds(str, beginIndex, limit, 
-                this.getFRCFromGraphics(context));
+        return font.getStringBounds(ci, beginIndex, limit, this.getFRCFromGraphics(context));
     }
 
-
     /**
-     * Gets the bounds of the specified characters array 
-     * in the specified Graphics context.
+     * Gets the bounds of the specified String in the specified Graphics
+     * context.
      * 
-     * @param chars the characters array.
-     * @param beginIndex the begin offset of the array.
-     * @param limit the number of characters.
-     * @param context the Graphics.
-     * 
-     * @return the bounds of the specified characters array 
-     * in the specified Graphics context.
+     * @param str
+     *            the String.
+     * @param beginIndex
+     *            the begin offset of the array.
+     * @param limit
+     *            the number of characters.
+     * @param context
+     *            the Graphics.
+     * @return the bounds of the specified String in the specified Graphics
+     *         context.
      */
-    public Rectangle2D getStringBounds(char[] chars, int beginIndex, int limit,
-            Graphics context) {
-        return font.getStringBounds(chars, beginIndex, limit, 
-                this.getFRCFromGraphics(context));
+    public Rectangle2D getStringBounds(String str, int beginIndex, int limit, Graphics context) {
+        return font.getStringBounds(str, beginIndex, limit, this.getFRCFromGraphics(context));
     }
 
     /**
-     * Gets the bounds of the specified String 
-     * in the specified Graphics context.
+     * Gets the bounds of the specified characters array in the specified
+     * Graphics context.
      * 
-     * @param str the String.
-     * @param context the Graphics.
+     * @param chars
+     *            the characters array.
+     * @param beginIndex
+     *            the begin offset of the array.
+     * @param limit
+     *            the number of characters.
+     * @param context
+     *            the Graphics.
+     * @return the bounds of the specified characters array in the specified
+     *         Graphics context.
+     */
+    public Rectangle2D getStringBounds(char[] chars, int beginIndex, int limit, Graphics context) {
+        return font.getStringBounds(chars, beginIndex, limit, this.getFRCFromGraphics(context));
+    }
+
+    /**
+     * Gets the bounds of the specified String in the specified Graphics
+     * context.
      * 
-     * @return the bounds of the specified String 
-     * in the specified Graphics context.
+     * @param str
+     *            the String.
+     * @param context
+     *            the Graphics.
+     * @return the bounds of the specified String in the specified Graphics
+     *         context.
      */
     public Rectangle2D getStringBounds(String str, Graphics context) {
         return font.getStringBounds(str, this.getFRCFromGraphics(context));
     }
 
     /**
-     * Checks if the Font has uniform line metrics or not. 
-     * The Font can contain characters of other fonts for 
-     * covering character set. In this case the Font isn't
-     * uniform. 
-     *  
-     * @return true, if the Font has uniform line metrics, 
-     * false otherwise.
+     * Checks if the Font has uniform line metrics or not. The Font can contain
+     * characters of other fonts for covering character set. In this case the
+     * Font isn't uniform.
+     * 
+     * @return true, if the Font has uniform line metrics, false otherwise.
      */
     public boolean hasUniformLineMetrics() {
         return this.font.hasUniformLineMetrics();
     }
 
     /**
-     * Returns the distance from the leftmost point to the rightmost 
-     * point on the string's baseline showing the specified array 
-     * of bytes in this Font.   
+     * Returns the distance from the leftmost point to the rightmost point on
+     * the string's baseline showing the specified array of bytes in this Font.
      * 
-     * @param data the array of bytes to be measured.
-     * @param off the start offset.
-     * @param len the number of bytes to be measured.
-     * 
+     * @param data
+     *            the array of bytes to be measured.
+     * @param off
+     *            the start offset.
+     * @param len
+     *            the number of bytes to be measured.
      * @return the advance width of the array.
      */
     public int bytesWidth(byte[] data, int off, int len) {
         int width = 0;
-        if ((off >= data.length) || (off < 0)){
+        if ((off >= data.length) || (off < 0)) {
             // awt.13B=offset off is out of range
             throw new IllegalArgumentException(Messages.getString("awt.13B")); //$NON-NLS-1$
         }
 
-        if ((off+len > data.length)){
+        if ((off + len > data.length)) {
             // awt.13C=number of elemets len is out of range
             throw new IllegalArgumentException(Messages.getString("awt.13C")); //$NON-NLS-1$
         }
 
-        for (int i = off; i < off+len; i++){
+        for (int i = off; i < off + len; i++) {
             width += charWidth(data[i]);
         }
 
@@ -319,29 +331,31 @@
     }
 
     /**
-     * Returns the distance from the leftmost point to the rightmost 
-     * point on the string's baseline showing the specified array 
-     * of characters in this Font.   
+     * Returns the distance from the leftmost point to the rightmost point on
+     * the string's baseline showing the specified array of characters in this
+     * Font.
      * 
-     * @param data the array of characters to be measured.
-     * @param off the start offset.
-     * @param len the number of bytes to be measured.
-     * 
+     * @param data
+     *            the array of characters to be measured.
+     * @param off
+     *            the start offset.
+     * @param len
+     *            the number of bytes to be measured.
      * @return the advance width of the array.
      */
-    public int charsWidth(char[] data, int off , int len){
+    public int charsWidth(char[] data, int off, int len) {
         int width = 0;
-        if ((off >= data.length) || (off < 0)){
+        if ((off >= data.length) || (off < 0)) {
             // awt.13B=offset off is out of range
             throw new IllegalArgumentException(Messages.getString("awt.13B")); //$NON-NLS-1$
         }
 
-        if ((off+len > data.length)){
+        if ((off + len > data.length)) {
             // awt.13C=number of elemets len is out of range
             throw new IllegalArgumentException(Messages.getString("awt.13C")); //$NON-NLS-1$
         }
 
-        for (int i = off; i < off+len; i++){
+        for (int i = off; i < off + len; i++) {
             width += charWidth(data[i]);
         }
 
@@ -349,12 +363,11 @@
     }
 
     /**
-     * Returns the distance from the leftmost point to the rightmost 
-     * point of the specified character in this Font.   
+     * Returns the distance from the leftmost point to the rightmost point of
+     * the specified character in this Font.
      * 
-     * @param ch the specified unicode point code of 
-     * character to be measured.
-     * 
+     * @param ch
+     *            the specified Unicode point code of character to be measured.
      * @return the advance width of the character.
      */
     public int charWidth(int ch) {
@@ -362,11 +375,11 @@
     }
 
     /**
-     * Returns the distance from the leftmost point to the rightmost 
-     * point of the specified character in this Font.   
+     * Returns the distance from the leftmost point to the rightmost point of
+     * the specified character in this Font.
      * 
-     * @param ch the specified character to be measured.
-     * 
+     * @param ch
+     *            the specified character to be measured.
      * @return the advance width of the character.
      */
     public int charWidth(char ch) {
@@ -383,11 +396,11 @@
     }
 
     /**
-     * Gets the maximum font ascent of the Font associated with 
-     * this FontMetrics.
+     * Gets the maximum font ascent of the Font associated with this
+     * FontMetrics.
      * 
-     * @return the maximum font ascent of the Font associated with 
-     * this FontMetrics.
+     * @return the maximum font ascent of the Font associated with this
+     *         FontMetrics.
      */
     public int getMaxAscent() {
         return 0;
@@ -397,7 +410,6 @@
      * Gets the maximum font descent of character in this Font.
      * 
      * @return the maximum font descent of character in this Font.
-     * 
      * @deprecated Replaced by getMaxDescent() method.
      */
     @Deprecated
@@ -426,23 +438,22 @@
     /**
      * Returns the advance width for the specified String in this Font.
      * 
-     * @param str String to be measured. 
-     * 
-     * @return the the advance width for the specified String 
-     * in this Font.
+     * @param str
+     *            String to be measured.
+     * @return the the advance width for the specified String in this Font.
      */
     public int stringWidth(String str) {
         return 0;
     }
-    
+
     /**
-     * Returns FontRenderContext instanse of the Graphics context specified.
+     * Returns a FontRenderContext instance of the Graphics context specified.
      * 
-     * @param context the specified Graphics context
-     * 
+     * @param context
+     *            the specified Graphics context.
      * @return a FontRenderContext of the specified Graphics context.
      */
-    private FontRenderContext getFRCFromGraphics(Graphics context){
+    private FontRenderContext getFRCFromGraphics(Graphics context) {
         FontRenderContext frc;
         if (context instanceof Graphics2D) {
             frc = ((Graphics2D)context).getFontRenderContext();
@@ -453,4 +464,3 @@
         return frc;
     }
 }
-
diff --git a/awt/java/awt/GradientPaint.java b/awt/java/awt/GradientPaint.java
index 0e06528..3b32ef5 100644
--- a/awt/java/awt/GradientPaint.java
+++ b/awt/java/awt/GradientPaint.java
@@ -26,56 +26,71 @@
 
 /**
  * The GradientPaint class defines a way to fill a Shape with a linear color
- * gradient pattern. 
+ * gradient pattern.
  * <p>
- * The GradientPaint's fill pattern is determined by two points and two colors, 
- * plus the cyclic mode option.
- * Each of the two points is painted with its corresponding color, and on 
- * the line segment connecting the two points, the color is proportionally
- * changed between the two colors. For points on the same line which are not 
- * between the two specified points (outside of the connecting segment) their
- * color is determined by the cyclic mode option. If the mode is cyclic, then
- * the rest of the line repeats the color pattern of the connecting segment, 
- * cycling back and forth between the two colors. If not, the mode is acyclic 
- * which means that all points 
- * on the line outside the connecting line segment are given the same 
- * color as the closest of the two specified points.
+ * The GradientPaint's fill pattern is determined by two points and two colors,
+ * plus the cyclic mode option. Each of the two points is painted with its
+ * corresponding color, and on the line segment connecting the two points, the
+ * color is proportionally changed between the two colors. For points on the
+ * same line which are not between the two specified points (outside of the
+ * connecting segment) their color is determined by the cyclic mode option. If
+ * the mode is cyclic, then the rest of the line repeats the color pattern of
+ * the connecting segment, cycling back and forth between the two colors. If
+ * not, the mode is acyclic which means that all points on the line outside the
+ * connecting line segment are given the same color as the closest of the two
+ * specified points.
  * <p>
- * The color of points that are not on the line connecting the two 
- * specified points are given by perpendicular projection: by taking 
- * the set of lines perpendicular to the connecting line and for each 
- * one, the whole line is colored with the same color.
+ * The color of points that are not on the line connecting the two specified
+ * points are given by perpendicular projection: by taking the set of lines
+ * perpendicular to the connecting line and for each one, the whole line is
+ * colored with the same color.
+ * 
+ * @since Android 1.0
  */
 public class GradientPaint implements Paint {
-    
-    /** The start point color. */
+
+    /**
+     * The start point color.
+     */
     Color color1;
 
-    /** The end color point. */
+    /**
+     * The end color point.
+     */
     Color color2;
 
-    /** The location of the start point. */
+    /**
+     * The location of the start point.
+     */
     Point2D point1;
 
-    /** The location of the end point. */
+    /**
+     * The location of the end point.
+     */
     Point2D point2;
 
-    /** The indicator of cycle filling. If TRUE filling 
-     * repeated outside points stripe, if FALSE solid color filling outside. */
+    /**
+     * The indicator of cycle filling. If TRUE filling repeated outside points
+     * stripe, if FALSE solid color filling outside.
+     */
     boolean cyclic;
 
     /**
      * Instantiates a new GradientPaint with cyclic or acyclic mode.
      * 
-     * @param point1 the first specified point.
-     * @param color1 the Color of the first specified point. 
-     * @param point2 the second specified point.
-     * @param color2 the Color of the second specified point.
-     * @param cyclic the cyclic mode - true if the gradient pattern should cycle 
-     * repeatedly between the two colors; false otherwise.
+     * @param point1
+     *            the first specified point.
+     * @param color1
+     *            the Color of the first specified point.
+     * @param point2
+     *            the second specified point.
+     * @param color2
+     *            the Color of the second specified point.
+     * @param cyclic
+     *            the cyclic mode - true if the gradient pattern should cycle
+     *            repeatedly between the two colors; false otherwise.
      */
-    public GradientPaint(Point2D point1, Color color1, Point2D point2,
-            Color color2, boolean cyclic) {
+    public GradientPaint(Point2D point1, Color color1, Point2D point2, Color color2, boolean cyclic) {
         if (point1 == null || point2 == null) {
             // awt.6D=Point is null
             throw new NullPointerException(Messages.getString("awt.6D")); //$NON-NLS-1$
@@ -93,17 +108,24 @@
     }
 
     /**
-     * Instantiates a new GradientPaint with cyclic or acyclic mode;
-     * points are specified by coordinates.
+     * Instantiates a new GradientPaint with cyclic or acyclic mode; points are
+     * specified by coordinates.
      * 
-     * @param x1 the X coordinate of the first point.
-     * @param y1 the Y coordinate of the first point.
-     * @param color1 the color of the first point.
-     * @param x2 the X coordinate of the second point.
-     * @param y2 the Y coordinate of the second point.
-     * @param color2 the color of the second point.
-     * @param cyclic the cyclic mode - true if the gradient pattern should cycle 
-     * repeatedly between the two colors; false otherwise.
+     * @param x1
+     *            the X coordinate of the first point.
+     * @param y1
+     *            the Y coordinate of the first point.
+     * @param color1
+     *            the color of the first point.
+     * @param x2
+     *            the X coordinate of the second point.
+     * @param y2
+     *            the Y coordinate of the second point.
+     * @param color2
+     *            the color of the second point.
+     * @param cyclic
+     *            the cyclic mode - true if the gradient pattern should cycle
+     *            repeatedly between the two colors; false otherwise.
      */
     public GradientPaint(float x1, float y1, Color color1, float x2, float y2, Color color2,
             boolean cyclic) {
@@ -111,15 +133,21 @@
     }
 
     /**
-     * Instantiates a new acyclic GradientPaint;
-     * points are specified by coordinates.
+     * Instantiates a new acyclic GradientPaint; points are specified by
+     * coordinates.
      * 
-     * @param x1 the X coordinate of the first point.
-     * @param y1 the Y coordinate of the first point.
-     * @param color1 the color of the first point.
-     * @param x2 the X coordinate of the second point.
-     * @param y2 the Y coordinate of the second point.
-     * @param color2 the color of the second point.
+     * @param x1
+     *            the X coordinate of the first point.
+     * @param y1
+     *            the Y coordinate of the first point.
+     * @param color1
+     *            the color of the first point.
+     * @param x2
+     *            the X coordinate of the second point.
+     * @param y2
+     *            the Y coordinate of the second point.
+     * @param color2
+     *            the color of the second point.
      */
     public GradientPaint(float x1, float y1, Color color1, float x2, float y2, Color color2) {
         this(x1, y1, color1, x2, y2, color2, false);
@@ -128,29 +156,38 @@
     /**
      * Instantiates a new acyclic GradientPaint.
      * 
-     * @param point1 the first specified point.
-     * @param color1 the Color of the first specified point. 
-     * @param point2 the second specified point.
-     * @param color2 the Color of the second specified point.
+     * @param point1
+     *            the first specified point.
+     * @param color1
+     *            the Color of the first specified point.
+     * @param point2
+     *            the second specified point.
+     * @param color2
+     *            the Color of the second specified point.
      */
     public GradientPaint(Point2D point1, Color color1, Point2D point2, Color color2) {
         this(point1, color1, point2, color2, false);
     }
 
     /**
-     * Creates PaintContext for a color pattern generating. 
+     * Creates PaintContext for a color pattern generating.
      * 
-     * @param cm the ColorModel of the Paint data.
-     * @param deviceBounds the bounding Rectangle of graphics primitives
-     * being rendered in the device space. 
-     * @param userBounds tthe bounding Rectangle of graphics primitives
-     * being rendered in the user space. 
-     * @param t the AffineTransform from user space into device space.
-     * @param hints the RrenderingHints object.
-     * 
+     * @param cm
+     *            the ColorModel of the Paint data.
+     * @param deviceBounds
+     *            the bounding Rectangle of graphics primitives being rendered
+     *            in the device space.
+     * @param userBounds
+     *            the bounding Rectangle of graphics primitives being rendered
+     *            in the user space.
+     * @param t
+     *            the AffineTransform from user space into device space.
+     * @param hints
+     *            the RrenderingHints object.
      * @return the PaintContext for color pattern generating.
-     * 
-     * @see java.awt.Paint#createContext(java.awt.image.ColorModel, java.awt.Rectangle, java.awt.geom.Rectangle2D, java.awt.geom.AffineTransform, java.awt.RenderingHints)
+     * @see java.awt.Paint#createContext(java.awt.image.ColorModel,
+     *      java.awt.Rectangle, java.awt.geom.Rectangle2D,
+     *      java.awt.geom.AffineTransform, java.awt.RenderingHints)
      */
     public PaintContext createContext(ColorModel cm, Rectangle deviceBounds,
             Rectangle2D userBounds, AffineTransform t, RenderingHints hints) {
@@ -178,7 +215,7 @@
     /**
      * Gets the first point.
      * 
-     * @return the Point object - the first point. 
+     * @return the Point object - the first point.
      */
     public Point2D getPoint1() {
         return point1;
@@ -197,7 +234,6 @@
      * Gets the transparency mode for the GradientPaint.
      * 
      * @return the transparency mode for the GradientPaint.
-     * 
      * @see java.awt.Transparency#getTransparency()
      */
     public int getTransparency() {
@@ -207,11 +243,11 @@
     }
 
     /**
-     * Returns the GradientPaint mode: true for cyclic mode, false for
-     * acyclic mode.
+     * Returns the GradientPaint mode: true for cyclic mode, false for acyclic
+     * mode.
      * 
-     * @return true if the gradient cycles repeatedly between the two colors; 
-     * false otherwise.
+     * @return true if the gradient cycles repeatedly between the two colors;
+     *         false otherwise.
      */
     public boolean isCyclic() {
         return cyclic;
diff --git a/awt/java/awt/Graphics.java b/awt/java/awt/Graphics.java
index c20f6bc..2d6e79f 100644
--- a/awt/java/awt/Graphics.java
+++ b/awt/java/awt/Graphics.java
@@ -18,26 +18,27 @@
  * @author Alexey A. Petrenko
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.awt.image.ImageObserver;
 import java.text.AttributedCharacterIterator;
 
 /**
- * The abstract Graphics class allows applications to draw on a screen
- * or other rendering target. There are several properties which 
- * define rendering options: origin point, clipping area, color, font.
- * <br><br>
- * The origin point specifies the beggining of the clipping area coordinate 
- * system. All coordinates used in rendering operations are computed with 
- * respect to this point. The clipping area defines the boundaries where 
- * rendering operations can be performed. Rendering operations can't modify 
- * pixels outside of the clipping area.
- * <br><br>
- * The draw and fill methods allow applications to drawing shapes, text, 
- * images with specified font and color options in the specified part 
- * of the screen.
- *    
+ * The abstract Graphics class allows applications to draw on a screen or other
+ * rendering target. There are several properties which define rendering
+ * options: origin point, clipping area, color, font. <br>
+ * <br>
+ * The origin point specifies the beginning of the clipping area coordinate
+ * system. All coordinates used in rendering operations are computed with
+ * respect to this point. The clipping area defines the boundaries where
+ * rendering operations can be performed. Rendering operations can't modify
+ * pixels outside of the clipping area. <br>
+ * <br>
+ * The draw and fill methods allow applications to drawing shapes, text, images
+ * with specified font and color options in the specified part of the screen.
+ * 
+ * @since Android 1.0
  */
 public abstract class Graphics {
 
@@ -45,7 +46,7 @@
 
     /**
      * Instantiates a new Graphics. This constructor is default for Graphics and
-     * can not be called directly. 
+     * can not be called directly.
      */
     protected Graphics() {
     }
@@ -53,19 +54,22 @@
     // Public methods
 
     /**
-     * Creates a copy of the Graphics object with a new origin and a new 
-     * specified clip area. The new clip area is the rectangle defined by 
-     * the origin point with coordinates X,Y and the given width and height. 
-     * The coordinates of all subsequent rendering operations will be computed
-     * with respect to the new origin and can be performed only within the 
-     * range of the clipping area dimentions. 
-     *  
-     * @param x the X coordinate of the original point
-     * @param y the Y coordinate of the original point
-     * @param width the width of clipping area
-     * @param height the height of clipping area
+     * Creates a copy of the Graphics object with a new origin and a new
+     * specified clip area. The new clip area is the rectangle defined by the
+     * origin point with coordinates X,Y and the given width and height. The
+     * coordinates of all subsequent rendering operations will be computed with
+     * respect to the new origin and can be performed only within the range of
+     * the clipping area dimensions.
      * 
-     * @return the Graphics object with new origin point and clipping area. 
+     * @param x
+     *            the X coordinate of the original point.
+     * @param y
+     *            the Y coordinate of the original point.
+     * @param width
+     *            the width of clipping area.
+     * @param height
+     *            the height of clipping area.
+     * @return the Graphics object with new origin point and clipping area.
      */
     public Graphics create(int x, int y, int width, int height) {
         Graphics res = create();
@@ -75,18 +79,24 @@
     }
 
     /**
-     * Draws the higlighted outline of a rectangle.
+     * Draws the highlighted outline of a rectangle.
      * 
-     * @param x the X coordinate of the rectangle's top left corner.
-     * @param y the Y coordinate of the rectangle's top left corner.
-     * @param width the width of rectangle.
-     * @param height the height of rectangle.
-     * @param raised a boolean value that determines whether the rectangle 
-     * is drawn as raised or indented.
+     * @param x
+     *            the X coordinate of the rectangle's top left corner.
+     * @param y
+     *            the Y coordinate of the rectangle's top left corner.
+     * @param width
+     *            the width of rectangle.
+     * @param height
+     *            the height of rectangle.
+     * @param raised
+     *            a boolean value that determines whether the rectangle is drawn
+     *            as raised or indented.
      */
     public void draw3DRect(int x, int y, int width, int height, boolean raised) {
         // Note: lighter/darker colors should be used to draw 3d rect.
-        // The resulting rect is (width+1)x(height+1). Stroke and paint attributes of
+        // The resulting rect is (width+1)x(height+1). Stroke and paint
+        // attributes of
         // the Graphics2D should be reset to the default values.
         // fillRect is used instead of drawLine to bypass stroke
         // reset/set and rasterization.
@@ -103,36 +113,46 @@
 
         setColor(colorUp);
         fillRect(x, y, width, 1);
-        fillRect(x, y+1, 1, height);
+        fillRect(x, y + 1, 1, height);
 
         setColor(colorDown);
-        fillRect(x+width, y, 1, height);
-        fillRect(x+1, y+height, width, 1);
+        fillRect(x + width, y, 1, height);
+        fillRect(x + 1, y + height, width, 1);
     }
 
     /**
-     * Draws the text represented by byte array. This method uses the current 
+     * Draws the text represented by byte array. This method uses the current
      * font and color for rendering.
      * 
-     * @param bytes the byte array which contains the text to be drawn. 
-     * @param off the offset within the byte array of the text to be drawn.
-     * @param len the number of bytes of text to draw. 
-     * @param x the X coordinate where the text is to be drawn.
-     * @param y the Y coordinate where the text is to be drawn.
+     * @param bytes
+     *            the byte array which contains the text to be drawn.
+     * @param off
+     *            the offset within the byte array of the text to be drawn.
+     * @param len
+     *            the number of bytes of text to draw.
+     * @param x
+     *            the X coordinate where the text is to be drawn.
+     * @param y
+     *            the Y coordinate where the text is to be drawn.
      */
     public void drawBytes(byte[] bytes, int off, int len, int x, int y) {
         drawString(new String(bytes, off, len), x, y);
     }
 
     /**
-     * Draws the text represented by character array. This method uses the 
+     * Draws the text represented by character array. This method uses the
      * current font and color for rendering.
      * 
-     * @param chars the character array. 
-     * @param off the offset within the character array of the text to be drawn.
-     * @param len the number of characters which will be drawn. 
-     * @param x the X coordinate where the text is to be drawn.
-     * @param y the Y coordinate where the text is to be drawn.
+     * @param chars
+     *            the character array.
+     * @param off
+     *            the offset within the character array of the text to be drawn.
+     * @param len
+     *            the number of characters which will be drawn.
+     * @param x
+     *            the X coordinate where the text is to be drawn.
+     * @param y
+     *            the Y coordinate where the text is to be drawn.
      */
     public void drawChars(char[] chars, int off, int len, int x, int y) {
         drawString(new String(chars, off, len), x, y);
@@ -141,37 +161,51 @@
     /**
      * Draws the outline of a polygon which is defined by Polygon object.
      * 
-     * @param p the Polygon object.
+     * @param p
+     *            the Polygon object.
      */
     public void drawPolygon(Polygon p) {
         drawPolygon(p.xpoints, p.ypoints, p.npoints);
     }
 
     /**
-     * Draws the rectangle with the specified width and length and top left 
+     * Draws the rectangle with the specified width and length and top left
      * corner coordinates.
      * 
-     * @param x the X coordinate of the rectangle's top left corner.
-     * @param y the Y coordinate of the rectangle's top left corner.
-     * @param width the width of the rectangle.
-     * @param height the height of the rectangle.
+     * @param x
+     *            the X coordinate of the rectangle's top left corner.
+     * @param y
+     *            the Y coordinate of the rectangle's top left corner.
+     * @param width
+     *            the width of the rectangle.
+     * @param height
+     *            the height of the rectangle.
      */
     public void drawRect(int x, int y, int width, int height) {
-        int []xpoints = {x, x, x+width, x+width};
-        int []ypoints = {y, y+height, y+height, y};
+        int[] xpoints = {
+                x, x, x + width, x + width
+        };
+        int[] ypoints = {
+                y, y + height, y + height, y
+        };
 
         drawPolygon(xpoints, ypoints, 4);
     }
 
     /**
-     * Fills the higlighted outline of a rectangle.
+     * Fills the highlighted outline of a rectangle.
      * 
-     * @param x the X coordinate of the rectangle's top left corner.
-     * @param y the Y coordinate of the rectangle's top left corner.
-     * @param width the width of the rectangle.
-     * @param height the height of the rectangle.
-     * @param raised a boolean value that determines whether the rectangle 
-     * is drawn as raised or indented.
+     * @param x
+     *            the X coordinate of the rectangle's top left corner.
+     * @param y
+     *            the Y coordinate of the rectangle's top left corner.
+     * @param width
+     *            the width of the rectangle.
+     * @param height
+     *            the height of the rectangle.
+     * @param raised
+     *            a boolean value that determines whether the rectangle is drawn
+     *            as raised or indented.
      */
     public void fill3DRect(int x, int y, int width, int height, boolean raised) {
         // Note: lighter/darker colors should be used to draw 3d rect.
@@ -179,7 +213,7 @@
         // Stroke and paint attributes of the Graphics2D should be reset
         // to the default values. fillRect is used instead of drawLine to
         // bypass stroke reset/set and line rasterization.
-        
+
         Color color = getColor();
         Color colorUp, colorDown;
         if (raised) {
@@ -194,21 +228,22 @@
 
         width--;
         height--;
-        fillRect(x+1, y+1, width-1, height-1);
+        fillRect(x + 1, y + 1, width - 1, height - 1);
 
         setColor(colorUp);
         fillRect(x, y, width, 1);
-        fillRect(x, y+1, 1, height);
+        fillRect(x, y + 1, 1, height);
 
         setColor(colorDown);
-        fillRect(x+width, y, 1, height);
-        fillRect(x+1, y+height, width, 1);
+        fillRect(x + width, y, 1, height);
+        fillRect(x + 1, y + height, width, 1);
     }
 
     /**
      * Fills the polygon with the current color.
      * 
-     * @param p the Polygon object.
+     * @param p
+     *            the Polygon object.
      */
     public void fillPolygon(Polygon p) {
         fillPolygon(p.xpoints, p.ypoints, p.npoints);
@@ -222,12 +257,12 @@
     }
 
     /**
-     * Gets the bounds of the current clipping area as a rectangle 
-     * and copies it to an existing rectangle.
-     *  
-     * @param r a Rectangle object where the current clipping area 
-     * bounds are to be copied.
+     * Gets the bounds of the current clipping area as a rectangle and copies it
+     * to an existing rectangle.
      * 
+     * @param r
+     *            a Rectangle object where the current clipping area bounds are
+     *            to be copied.
      * @return the bounds of the current clipping area.
      */
     public Rectangle getClipBounds(Rectangle r) {
@@ -248,8 +283,7 @@
     /**
      * Gets the bounds of the current clipping area as a rectangle.
      * 
-     * @return a Rectangle object 
-     * 
+     * @return a Rectangle object.
      * @deprecated Use {@link #getClipBounds()}
      */
     @Deprecated
@@ -258,9 +292,8 @@
     }
 
     /**
-     * Gets the font metrics of the current font. 
-     * The font metrics object contains information about the rendering 
-     * of a particular font.
+     * Gets the font metrics of the current font. The font metrics object
+     * contains information about the rendering of a particular font.
      * 
      * @return the font metrics of current font.
      */
@@ -269,19 +302,23 @@
     }
 
     /**
-     * Determines whether or not the specified rectangle intersects the 
-     * current clipping area.
-     *  
-     * @param x the X coordinate of the rectangle.
-     * @param y the Y coordinate of the rectangle.
-     * @param width the width of the rectangle.
-     * @param height the height of the rectangle.
+     * Determines whether or not the specified rectangle intersects the current
+     * clipping area.
      * 
-     * @return true, if the specified rectangle intersects the current clipping area, 
-     * overwise false. 
+     * @param x
+     *            the X coordinate of the rectangle.
+     * @param y
+     *            the Y coordinate of the rectangle.
+     * @param width
+     *            the width of the rectangle.
+     * @param height
+     *            the height of the rectangle.
+     * @return true, if the specified rectangle intersects the current clipping
+     *         area, false otherwise.
      */
     public boolean hitClip(int x, int y, int width, int height) {
-        // TODO: Create package private method Rectangle.intersects(int, int, int, int);
+        // TODO: Create package private method Rectangle.intersects(int, int,
+        // int, int);
         return getClipBounds().intersects(new Rectangle(x, y, width, height));
     }
 
@@ -299,45 +336,56 @@
     // Abstract methods
 
     /**
-     * Clears the specified rectangle. This method fills specified rectangle 
-     * with background color.  
+     * Clears the specified rectangle. This method fills specified rectangle
+     * with background color.
      * 
-     * @param x the X coordinate of the rectangle.
-     * @param y the Y coordinate of the rectangle.
-     * @param width the width of the rectangle.
-     * @param height the height of the rectangle.
+     * @param x
+     *            the X coordinate of the rectangle.
+     * @param y
+     *            the Y coordinate of the rectangle.
+     * @param width
+     *            the width of the rectangle.
+     * @param height
+     *            the height of the rectangle.
      */
     public abstract void clearRect(int x, int y, int width, int height);
 
     /**
-     * Intersects the current clipping area with a new rectangle. 
-     * If the current clipping area is not defined, the rectangle 
-     * becomes a new clipping area. Rendering operations are only allowed 
-     * within the new the clipping area.    
-     *          
-     * @param x the X coordinate of the rectangle for intersection. 
-     * @param y the Y coordinate of the rectangle for intersection.
-     * @param width the width of the rectangle for intersection.
-     * @param height the height of the rectangle for intersection.
+     * Intersects the current clipping area with a new rectangle. If the current
+     * clipping area is not defined, the rectangle becomes a new clipping area.
+     * Rendering operations are only allowed within the new the clipping area.
+     * 
+     * @param x
+     *            the X coordinate of the rectangle for intersection.
+     * @param y
+     *            the Y coordinate of the rectangle for intersection.
+     * @param width
+     *            the width of the rectangle for intersection.
+     * @param height
+     *            the height of the rectangle for intersection.
      */
     public abstract void clipRect(int x, int y, int width, int height);
 
     /**
-     * Copies the rectangle area to another area specified by 
-     * a distance (dx, dy) from the original rectangle's location. 
-     * Positive dx and dy values give a new location defined by 
-     * translation to the right and down from the original location, 
-     * negative dx and dy values - to the left and up.
-     * <br><br>
+     * Copies the rectangle area to another area specified by a distance (dx,
+     * dy) from the original rectangle's location. Positive dx and dy values
+     * give a new location defined by translation to the right and down from the
+     * original location, negative dx and dy values - to the left and up.
      * 
-     * @param sx the X coordinate of the rectangle which will be copied. 
-     * @param sy the Y coordinate of the rectangle which will be copied.
-     * @param width the width of the rectangle which will be copied.
-     * @param height the height of the rectangle which will be copied.
-     * @param dx the horizontal distance from the source rectangle's 
-     * location to the copy's location. 
-     * @param dy the vertical distance from the source rectangle's 
-     * location to the copy's location. 
+     * @param sx
+     *            the X coordinate of the rectangle which will be copied.
+     * @param sy
+     *            the Y coordinate of the rectangle which will be copied.
+     * @param width
+     *            the width of the rectangle which will be copied.
+     * @param height
+     *            the height of the rectangle which will be copied.
+     * @param dx
+     *            the horizontal distance from the source rectangle's location
+     *            to the copy's location.
+     * @param dy
+     *            the vertical distance from the source rectangle's location to
+     *            the copy's location.
      */
     public abstract void copyArea(int sx, int sy, int width, int height, int dx, int dy);
 
@@ -349,215 +397,314 @@
     public abstract Graphics create();
 
     /**
-     * Disposes of the Graphics. This Graphics object can not be used after 
-     * calling this method.  
+     * Disposes of the Graphics. This Graphics object can not be used after
+     * calling this method.
      */
     public abstract void dispose();
 
     /**
-     * Draws the arc covering the specified rectangle and using the current color. 
-     * The rectangle is defined by the origin point (X, Y) and dimentions 
-     * (width and height). The arc center is the the center of specified rectangle. 
-     * The angle origin is 3 o'clock position, the positive angle is counted as a 
-     * counter-clockwise rotation, the negotive angle is counted as clockwise rotation.   
+     * Draws the arc covering the specified rectangle and using the current
+     * color. The rectangle is defined by the origin point (X, Y) and dimensions
+     * (width and height). The arc center is the the center of specified
+     * rectangle. The angle origin is 3 o'clock position, the positive angle is
+     * counted as a counter-clockwise rotation, the negative angle is counted as
+     * clockwise rotation.
      * 
-     * @param x the X origin coordinate of the rectangle which scales the arc. 
-     * @param y the Y origin coordinate of the rectangle which scales the arc.
-     * @param width the width of the rectangle which scales the arc.
-     * @param height the height of the rectangle which scales the arc.
-     * @param sa start angle - the origin angle of arc.
-     * @param ea arc angle - the angular arc value relative to the start angle. 
+     * @param x
+     *            the X origin coordinate of the rectangle which scales the arc.
+     * @param y
+     *            the Y origin coordinate of the rectangle which scales the arc.
+     * @param width
+     *            the width of the rectangle which scales the arc.
+     * @param height
+     *            the height of the rectangle which scales the arc.
+     * @param sa
+     *            start angle - the origin angle of arc.
+     * @param ea
+     *            arc angle - the angular arc value relative to the start angle.
      */
     public abstract void drawArc(int x, int y, int width, int height, int sa, int ea);
 
     /**
-     * Draws the specified image with the defined background color. 
-     * The top left corner of image will be drawn at point (x, y) 
-     * in current coordinate system. The image loading process notifies the
-     * specified Image Observer. This method returns true if the image
-     * has loaded, overwise it returns false.       
+     * Draws the specified image with the defined background color. The top left
+     * corner of image will be drawn at point (x, y) in current coordinate
+     * system. The image loading process notifies the specified Image Observer.
+     * This method returns true if the image has loaded, otherwise it returns
+     * false.
      * 
-     * @param img the image which will be drawn. 
-     * @param x the X coordinate of the image top left corner. 
-     * @param y the Y coordinate of the image top left corner. 
-     * @param bgcolor the background color.
-     * @param observer the ImageObserver object which should be notified about image loading process.
-     * 
-     * @return true, if loading image is successful or image is null, overwise false.
+     * @param img
+     *            the image which will be drawn.
+     * @param x
+     *            the X coordinate of the image top left corner.
+     * @param y
+     *            the Y coordinate of the image top left corner.
+     * @param bgcolor
+     *            the background color.
+     * @param observer
+     *            the ImageObserver object which should be notified about image
+     *            loading process.
+     * @return true, if loading image is successful or image is null, false
+     *         otherwise.
      */
     public abstract boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer);
 
     /**
-     * Draws the specified image. 
-     * The top left corner of image will be drawn at point (x, y) 
-     * in current coordinate system. The image loading process notifies the
-     * specified Image Observer. This method returns true if the image
-     * has loaded, overwise it returns false. 
+     * Draws the specified image. The top left corner of image will be drawn at
+     * point (x, y) in current coordinate system. The image loading process
+     * notifies the specified Image Observer. This method returns true if the
+     * image has loaded, otherwise it returns false.
      * 
-     * @param img the image which will be drawn. 
-     * @param x the X coordinate of the image top left corner. 
-     * @param y the Y coordinate of the image top left corner. 
-     * @param observer the ImageObserver object which should be notified about image loading process.
-     * 
-     * @return true, if loading image is successful or image is null, overwise false.
+     * @param img
+     *            the image which will be drawn.
+     * @param x
+     *            the X coordinate of the image top left corner.
+     * @param y
+     *            the Y coordinate of the image top left corner.
+     * @param observer
+     *            the ImageObserver object which should be notified about image
+     *            loading process.
+     * @return true, if loading image is successful or image is null, otherwise
+     *         false.
      */
     public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer);
 
     /**
-     * Scales the specified image to fit in the specified rectangle and 
-     * draws it with the defined background color. The top left corner 
-     * of the image will be drawn at the point (x, y) in current coordinate 
-     * system. The non-opaque pixels will be drawn in the background color. 
-     * The image loading process notifies the specified Image Observer. 
-     * This method returns true if the image has loaded, overwise it returns false. 
+     * Scales the specified image to fit in the specified rectangle and draws it
+     * with the defined background color. The top left corner of the image will
+     * be drawn at the point (x, y) in current coordinate system. The non-opaque
+     * pixels will be drawn in the background color. The image loading process
+     * notifies the specified Image Observer. This method returns true if the
+     * image has loaded, otherwise it returns false.
      * 
-     * @param img the image which will be drawn.
-     * @param x the X coordinate of the image's top left corner.
-     * @param y the Y coordinate of the image's top left corner. 
-     * @param width the width of rectangle which scales the image.
-     * @param height the height of rectangle which scales the image.
-     * @param bgcolor the background color.
-     * @param observer the ImageObserver object which should be notified about image loading process.
-     * 
-     * @return true, if loading image is successful or image is null, overwise false.
+     * @param img
+     *            the image which will be drawn.
+     * @param x
+     *            the X coordinate of the image's top left corner.
+     * @param y
+     *            the Y coordinate of the image's top left corner.
+     * @param width
+     *            the width of rectangle which scales the image.
+     * @param height
+     *            the height of rectangle which scales the image.
+     * @param bgcolor
+     *            the background color.
+     * @param observer
+     *            the ImageObserver object which should be notified about image
+     *            loading process.
+     * @return true, if loading image is successful or image is null, otherwise
+     *         false.
      */
-    public abstract boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer);
+    public abstract boolean drawImage(Image img, int x, int y, int width, int height,
+            Color bgcolor, ImageObserver observer);
 
     /**
-     * Scales the specified image to fit in the specified rectangle and 
-     * draws it. The top left corner of the image will be drawn at the 
-     * point (x, y) in current coordinate system. The image loading process 
-     * notifies the specified Image Observer. 
-     * This method returns true if the image has loaded, overwise it returns false. 
+     * Scales the specified image to fit in the specified rectangle and draws
+     * it. The top left corner of the image will be drawn at the point (x, y) in
+     * current coordinate system. The image loading process notifies the
+     * specified Image Observer. This method returns true if the image has
+     * loaded, otherwise it returns false.
      * 
-     * @param img the image which will be drawn.
-     * @param x the X coordinate of the image top left corner.
-     * @param y the Y coordinate of the image top left corner. 
-     * @param width the width of rectangle which scales the image.
-     * @param height the height of rectangle which scales the image.
-     * @param observer the ImageObserver object which should be notified about image loading process.
-     * 
-     * @return true, if loading image is successful or image is null, overwise false.
+     * @param img
+     *            the image which will be drawn.
+     * @param x
+     *            the X coordinate of the image top left corner.
+     * @param y
+     *            the Y coordinate of the image top left corner.
+     * @param width
+     *            the width of rectangle which scales the image.
+     * @param height
+     *            the height of rectangle which scales the image.
+     * @param observer
+     *            the ImageObserver object which should be notified about image
+     *            loading process.
+     * @return true, if loading image is successful or image is null, otherwise
+     *         false.
      */
-    public abstract boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer);
+    public abstract boolean drawImage(Image img, int x, int y, int width, int height,
+            ImageObserver observer);
 
     /**
-     * Scales the specified area of the specified image to fit in the rectangle area 
-     * defined by its corners coordinates and draws the sub-image with the specified 
-     * background color. The sub-image to be drawn is defined by its top left 
-     * corner coordinates (sx1, sy1) and bottom right corner coordinates (sx2, sy2)
-     * computed with respect to the origin (top left corner) of the source image.
-     * The non opaque pixels will be drawn in the background color. The 
-     * image loading process notifies specified Image Observer. 
-     * This method returns true if the image
-     * has loaded, overwise it returns false. 
+     * Scales the specified area of the specified image to fit in the rectangle
+     * area defined by its corners coordinates and draws the sub-image with the
+     * specified background color. The sub-image to be drawn is defined by its
+     * top left corner coordinates (sx1, sy1) and bottom right corner
+     * coordinates (sx2, sy2) computed with respect to the origin (top left
+     * corner) of the source image. The non opaque pixels will be drawn in the
+     * background color. The image loading process notifies specified Image
+     * Observer. This method returns true if the image has loaded, otherwise it
+     * returns false.
      * 
-     * @param img the image which will be drawn.
-     * @param dx1 the X top left corner coordinate of the destination rectangle area. 
-     * @param dy1 the Y top left corner coordinate of the destination rectangle area.
-     * @param dx2 the X bottom right corner coordinate of the destination rectangle area.
-     * @param dy2 the Y bottom right corner coordinate of the destination rectangle area.
-     * @param sx1 the X top left corner coordinate of the area to be drawn within the source image.
-     * @param sy1 the Y top left corner coordinate of the area to be drawn within the source image.
-     * @param sx2 the X bottom right corner coordinate of the area to be drawn within the source image.
-     * @param sy2 the Y bottom right corner coordinate of the area to be drawn within the source image.
-     * @param bgcolor the background color.
-     * @param observer the ImageObserver object which should be notified about image loading process.
-     * 
-     * @return true, if loading image is successful or image is null, overwise false.
+     * @param img
+     *            the image which will be drawn.
+     * @param dx1
+     *            the X top left corner coordinate of the destination rectangle
+     *            area.
+     * @param dy1
+     *            the Y top left corner coordinate of the destination rectangle
+     *            area.
+     * @param dx2
+     *            the X bottom right corner coordinate of the destination
+     *            rectangle area.
+     * @param dy2
+     *            the Y bottom right corner coordinate of the destination
+     *            rectangle area.
+     * @param sx1
+     *            the X top left corner coordinate of the area to be drawn
+     *            within the source image.
+     * @param sy1
+     *            the Y top left corner coordinate of the area to be drawn
+     *            within the source image.
+     * @param sx2
+     *            the X bottom right corner coordinate of the area to be drawn
+     *            within the source image.
+     * @param sy2
+     *            the Y bottom right corner coordinate of the area to be drawn
+     *            within the source image.
+     * @param bgcolor
+     *            the background color.
+     * @param observer
+     *            the ImageObserver object which should be notified about image
+     *            loading process.
+     * @return true, if loading image is successful or image is null, false
+     *         otherwise.
      */
-    public abstract boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer);
+    public abstract boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1,
+            int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer);
 
     /**
-     * Scales the specified area of the specified image to fit in the rectangle area 
-     * defined by its corners coordinates and draws the sub-image. The sub-image 
-     * to be drawn is defined by its top left 
-     * corner coordinates (sx1, sy1) and bottom right corner coordinates (sx2, sy2)
-     * computed with respect to the origin (top left corner) of the source image.
-     * The image loading process notifies specified Image Observer. 
-     * This method returns true if the image
-     * has loaded, overwise it returns false. 
+     * Scales the specified area of the specified image to fit in the rectangle
+     * area defined by its corners coordinates and draws the sub-image. The
+     * sub-image to be drawn is defined by its top left corner coordinates (sx1,
+     * sy1) and bottom right corner coordinates (sx2, sy2) computed with respect
+     * to the origin (top left corner) of the source image. The image loading
+     * process notifies specified Image Observer. This method returns true if
+     * the image has loaded, otherwise it returns false.
      * 
-     * @param img the image which will be drawn.
-     * @param dx1 the X top left corner coordinate of the destination rectangle area. 
-     * @param dy1 the Y top left corner coordinate of the destination rectangle area.
-     * @param dx2 the X bottom right corner coordinate of the destination rectangle area.
-     * @param dy2 the Y bottom right corner coordinate of the destination rectangle area.
-     * @param sx1 the X top left corner coordinate of the area to be drawn within the source image.
-     * @param sy1 the Y top left corner coordinate of the area to be drawn within the source image.
-     * @param sx2 the X bottom right corner coordinate of the area to be drawn within the source image.
-     * @param sy2 the Y bottom right corner coordinate of the area to be drawn within the source image.
-     * @param observer the ImageObserver object which should be notified about image loading process.
-     * 
-     * @return true, if loading image is successful or image is null, overwise false.
+     * @param img
+     *            the image which will be drawn.
+     * @param dx1
+     *            the X top left corner coordinate of the destination rectangle
+     *            area.
+     * @param dy1
+     *            the Y top left corner coordinate of the destination rectangle
+     *            area.
+     * @param dx2
+     *            the X bottom right corner coordinate of the destination
+     *            rectangle area.
+     * @param dy2
+     *            the Y bottom right corner coordinate of the destination
+     *            rectangle area.
+     * @param sx1
+     *            the X top left corner coordinate of the area to be drawn
+     *            within the source image.
+     * @param sy1
+     *            the Y top left corner coordinate of the area to be drawn
+     *            within the source image.
+     * @param sx2
+     *            the X bottom right corner coordinate of the area to be drawn
+     *            within the source image.
+     * @param sy2
+     *            the Y bottom right corner coordinate of the area to be drawn
+     *            within the source image.
+     * @param observer
+     *            the ImageObserver object which should be notified about image
+     *            loading process.
+     * @return true, if loading image is successful or image is null, false
+     *         otherwise.
      */
-    public abstract boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer);
-    
+    public abstract boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1,
+            int sy1, int sx2, int sy2, ImageObserver observer);
+
     /**
-     * Draws a line from the point (x1, y1) to the point (x2, y2). 
-     * This method draws the line with current color 
-     * which can be changed by setColor(Color c) method.
+     * Draws a line from the point (x1, y1) to the point (x2, y2). This method
+     * draws the line with current color which can be changed by setColor(Color
+     * c) method.
      * 
-     * @param x1 the X coordinate of the first point.
-     * @param y1 the Y coordinate of the first point.
-     * @param x2 the X coordinate of the second point.
-     * @param y2 the Y coordinate of the second point.
+     * @param x1
+     *            the X coordinate of the first point.
+     * @param y1
+     *            the Y coordinate of the first point.
+     * @param x2
+     *            the X coordinate of the second point.
+     * @param y2
+     *            the Y coordinate of the second point.
      */
     public abstract void drawLine(int x1, int y1, int x2, int y2);
 
     /**
-     * Draws the ouline of an oval to fit in the rectangle defined
-     * by the given width, height, and top left corner.
+     * Draws the outline of an oval to fit in the rectangle defined by the given
+     * width, height, and top left corner.
      * 
-     * @param x the X top left corner oval coordinate
-     * @param y the Y top left corner oval coordinate
-     * @param width the oval width
-     * @param height the oval height
+     * @param x
+     *            the X top left corner oval coordinate.
+     * @param y
+     *            the Y top left corner oval coordinate.
+     * @param width
+     *            the oval width.
+     * @param height
+     *            the oval height.
      */
     public abstract void drawOval(int x, int y, int width, int height);
 
     /**
-     * Draws the outline of a polygon. The polygon vertices are defined by points 
-     * with xpoints[i], ypoints[i]  as coordinates. The polygon edges are the
-     * lines from the points with (xpoints[i-1], ypoints[i-1]) coordinates to   
-     * the points with (xpoints[i], ypoints[i]) coordinates, for 0 < i < npoints +1.
+     * Draws the outline of a polygon. The polygon vertices are defined by
+     * points with xpoints[i], ypoints[i] as coordinates. The polygon edges are
+     * the lines from the points with (xpoints[i-1], ypoints[i-1]) coordinates
+     * to the points with (xpoints[i], ypoints[i]) coordinates, for 0 < i <
+     * npoints +1.
      * 
-     * @param xpoints the array of X coordinates of the polygon vertices.
-     * @param ypoints the array of Y coordinates of the polygon vertices.
-     * @param npoints the number of polygon vertices/points.
+     * @param xpoints
+     *            the array of X coordinates of the polygon vertices.
+     * @param ypoints
+     *            the array of Y coordinates of the polygon vertices.
+     * @param npoints
+     *            the number of polygon vertices/points.
      */
     public abstract void drawPolygon(int[] xpoints, int[] ypoints, int npoints);
 
     /**
-     * Draws a set of connected lines which are defined by the x and y coordinate arrays.  
-     * The polyline is closed if coordinates of the first point are the same as 
-     * coordinates of the last point.
+     * Draws a set of connected lines which are defined by the x and y
+     * coordinate arrays. The polyline is closed if coordinates of the first
+     * point are the same as coordinates of the last point.
      * 
-     * @param xpoints the array of X point coordinates.
-     * @param ypoints the array of Y point coordinates.
-     * @param npoints the number of points.
+     * @param xpoints
+     *            the array of X point coordinates.
+     * @param ypoints
+     *            the array of Y point coordinates.
+     * @param npoints
+     *            the number of points.
      */
     public abstract void drawPolyline(int[] xpoints, int[] ypoints, int npoints);
 
     /**
      * Draws the outline of a rectangle with round corners.
      * 
-     * @param x the X coordinate of the rectangle's top left corner.
-     * @param y the Y coordinate of the rectangle's top left corner.
-     * @param width the width of the rectangle.
-     * @param height the height of the rectangle.
-     * @param arcWidth the arc width for the corners.
-     * @param arcHeight the arc height for the corners.
+     * @param x
+     *            the X coordinate of the rectangle's top left corner.
+     * @param y
+     *            the Y coordinate of the rectangle's top left corner.
+     * @param width
+     *            the width of the rectangle.
+     * @param height
+     *            the height of the rectangle.
+     * @param arcWidth
+     *            the arc width for the corners.
+     * @param arcHeight
+     *            the arc height for the corners.
      */
-    public abstract void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight);
+    public abstract void drawRoundRect(int x, int y, int width, int height, int arcWidth,
+            int arcHeight);
 
     /**
-     * Draws a text defined by an iterator. The iterator should specify the font 
-     * for every character. 
-     *  
-     * @param iterator the iterator.
-     * @param x the X coordinate of the firt character.
-     * @param y the Y coordinate of the first character.
+     * Draws a text defined by an iterator. The iterator should specify the font
+     * for every character.
+     * 
+     * @param iterator
+     *            the iterator.
+     * @param x
+     *            the X coordinate of the first character.
+     * @param y
+     *            the Y coordinate of the first character.
      */
     public abstract void drawString(AttributedCharacterIterator iterator, int x, int y);
 
@@ -565,86 +712,117 @@
      * Draws a text defined by a string. This method draws the text with current
      * font and color.
      * 
-     * @param str the string. 
-     * @param x the X coordinate of the firt character.
-     * @param y the Y coordinate of the first character.
+     * @param str
+     *            the string.
+     * @param x
+     *            the X coordinate of the first character.
+     * @param y
+     *            the Y coordinate of the first character.
      */
     public abstract void drawString(String str, int x, int y);
 
     /**
-     * Fills the arc covering the rectangle and using the current color. 
-     * The rectangle is defined by the origin point (X, Y) and dimentions (width and height). 
-     * The arc center is the the center of specified rectangle. 
-     * The angle origin is at the 3 o'clock position, and a positive angle gives  
+     * Fills the arc covering the rectangle and using the current color. The
+     * rectangle is defined by the origin point (X, Y) and dimensions (width and
+     * height). The arc center is the the center of specified rectangle. The
+     * angle origin is at the 3 o'clock position, and a positive angle gives
      * counter-clockwise rotation, a negative angle gives clockwise rotation.
-     *  
-     * @param x the X origin coordinate of the rectangle which scales the arc. 
-     * @param y the Y origin coordinate of the rectangle which scales the arc.
-     * @param width the width of the rectangle which scales the arc.
-     * @param height the height of the rectangle which scales the arc.
-     * @param sa start angle - the origin angle of arc.
-     * @param ea arc angle - the angular arc value relative to the start angle. 
+     * 
+     * @param x
+     *            the X origin coordinate of the rectangle which scales the arc.
+     * @param y
+     *            the Y origin coordinate of the rectangle which scales the arc.
+     * @param width
+     *            the width of the rectangle which scales the arc.
+     * @param height
+     *            the height of the rectangle which scales the arc.
+     * @param sa
+     *            start angle - the origin angle of arc.
+     * @param ea
+     *            arc angle - the angular arc value relative to the start angle.
      */
     public abstract void fillArc(int x, int y, int width, int height, int sa, int ea);
 
     /**
-     * Fills an oval with the current color where the oval is defined by the 
+     * Fills an oval with the current color where the oval is defined by the
      * bounding rectangle with the given width, height, and top left corner.
      * 
-     * @param x the X top left corner oval coordinate.
-     * @param y the Y top left corner oval coordinate.
-     * @param width the oval width.
-     * @param height the oval height.
+     * @param x
+     *            the X top left corner oval coordinate.
+     * @param y
+     *            the Y top left corner oval coordinate.
+     * @param width
+     *            the oval width.
+     * @param height
+     *            the oval height.
      */
     public abstract void fillOval(int x, int y, int width, int height);
 
     /**
-     * Fills a polygon with the current color. The polygon vertices are defined by the points 
-     * with xpoints[i], ypoints[i] as coordinates. The polygon edges are the
-     * lines from the points with (xpoints[i-1], ypoints[i-1]) coordinates to   
-     * the points with (xpoints[i], ypoints[i]) coordinates, for 0 < i < npoints +1.
+     * Fills a polygon with the current color. The polygon vertices are defined
+     * by the points with xpoints[i], ypoints[i] as coordinates. The polygon
+     * edges are the lines from the points with (xpoints[i-1], ypoints[i-1])
+     * coordinates to the points with (xpoints[i], ypoints[i]) coordinates, for
+     * 0 < i < npoints +1.
      * 
-     * @param xpoints the array of X coordinates of the polygon vertices.
-     * @param ypoints the array of Y coordinates of the polygon vertices.
-     * @param npoints the number of polygon vertices/points.
+     * @param xpoints
+     *            the array of X coordinates of the polygon vertices.
+     * @param ypoints
+     *            the array of Y coordinates of the polygon vertices.
+     * @param npoints
+     *            the number of polygon vertices/points.
      */
     public abstract void fillPolygon(int[] xpoints, int[] ypoints, int npoints);
 
     /**
-     * Fills a rectangle with the current color. 
-     * The rectangle is defined by its width and length and top left corner coordinates.
+     * Fills a rectangle with the current color. The rectangle is defined by its
+     * width and length and top left corner coordinates.
      * 
-     * @param x the X coordinate of the rectangle's top left corner.
-     * @param y the Y coordinate of the rectangle's top left corner.
-     * @param width the width of rectangle.
-     * @param height the height of rectangle.
+     * @param x
+     *            the X coordinate of the rectangle's top left corner.
+     * @param y
+     *            the Y coordinate of the rectangle's top left corner.
+     * @param width
+     *            the width of rectangle.
+     * @param height
+     *            the height of rectangle.
      */
     public abstract void fillRect(int x, int y, int width, int height);
 
     /**
      * Fills a round cornered rectangle with the current color.
      * 
-     * @param x the X coordinate of the top left corner of the bounding rectangle.
-     * @param y the Y coordinate of the top left corner of the bounding rectangle.
-     * @param width the width of the bounding rectangle.
-     * @param height the height of the bounding rectangle.
-     * @param arcWidth the arc width at the corners.
-     * @param arcHeight the arc height at the corners.
+     * @param x
+     *            the X coordinate of the top left corner of the bounding
+     *            rectangle.
+     * @param y
+     *            the Y coordinate of the top left corner of the bounding
+     *            rectangle.
+     * @param width
+     *            the width of the bounding rectangle.
+     * @param height
+     *            the height of the bounding rectangle.
+     * @param arcWidth
+     *            the arc width at the corners.
+     * @param arcHeight
+     *            the arc height at the corners.
      */
-    public abstract void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight);
+    public abstract void fillRoundRect(int x, int y, int width, int height, int arcWidth,
+            int arcHeight);
 
     /**
-     * Gets the clipping area.
-     * <br> <br>
-     *  
+     * Gets the clipping area. <br>
+     * <br>
+     * 
      * @return a Shape object of the clipping area or null if it is not set.
      */
     public abstract Shape getClip();
 
     /**
      * Gets the bounds of the current clipping area as a rectangle.
-     *  
-     * @return a Rectangle object which represents the bounds of the current clipping area. 
+     * 
+     * @return a Rectangle object which represents the bounds of the current
+     *         clipping area.
      */
     public abstract Rectangle getClipBounds();
 
@@ -663,75 +841,84 @@
     public abstract Font getFont();
 
     /**
-     * Gets the font metrics of the specified font. 
-     * The font metrics object contains information about the rendering of a particular font.
+     * Gets the font metrics of the specified font. The font metrics object
+     * contains information about the rendering of a particular font.
      * 
-     * @param font the specified font
-     * 
+     * @param font
+     *            the specified font.
      * @return the font metrics for the specified font.
      */
     public abstract FontMetrics getFontMetrics(Font font);
 
     /**
-     * Sets the new clipping area specified by rectangle. The new clipping area 
-     * doesn't depend on the window's visibility. Rendering operations can't be performed 
-     * outside new clipping area.
+     * Sets the new clipping area specified by rectangle. The new clipping area
+     * doesn't depend on the window's visibility. Rendering operations can't be
+     * performed outside new clipping area.
      * 
-     * @param x the X coordinate of the new clipping rectangle.
-     * @param y the Y coordinate of the new clipping rectangle.
-     * @param width the width of the new clipping rectangle.
-     * @param height the height of the new clipping rectangle.
+     * @param x
+     *            the X coordinate of the new clipping rectangle.
+     * @param y
+     *            the Y coordinate of the new clipping rectangle.
+     * @param width
+     *            the width of the new clipping rectangle.
+     * @param height
+     *            the height of the new clipping rectangle.
      */
     public abstract void setClip(int x, int y, int width, int height);
 
     /**
-     * Sets the new clipping area to be the area specified by Shape object. 
-     * The new clipping area doesn't depend on the window's visibility. 
-     * Rendering operations can't be performed outside new clipping area.
+     * Sets the new clipping area to be the area specified by Shape object. The
+     * new clipping area doesn't depend on the window's visibility. Rendering
+     * operations can't be performed outside new clipping area.
      * 
-     * @param clip a Shape object which representes new clipping area.
+     * @param clip
+     *            the Shape object which represents new clipping area.
      */
     public abstract void setClip(Shape clip);
 
     /**
-     * Sets the current Graphics color. All rendering operations with this Graphics
-     * will use this color.
+     * Sets the current Graphics color. All rendering operations with this
+     * Graphics will use this color.
      * 
-     * @param c the new color.
+     * @param c
+     *            the new color.
      */
     public abstract void setColor(Color c);
 
     /**
-     * Sets the current Graphics font. All rendering operations with this Graphics
-     * will use this font.
+     * Sets the current Graphics font. All rendering operations with this
+     * Graphics will use this font.
      * 
-     * @param font the new font.
+     * @param font
+     *            the new font.
      */
     public abstract void setFont(Font font);
 
     /**
-     * Sets the paint mode for the Graphics which overwrites all rendering 
+     * Sets the paint mode for the Graphics which overwrites all rendering
      * operations with the current color.
-     *  
      */
     public abstract void setPaintMode();
 
     /**
-     * Sets the XOR mode for the Graphics which changes a pixel from
-     * the current color to the specified XOR color.
-     * <br> <br>
+     * Sets the XOR mode for the Graphics which changes a pixel from the current
+     * color to the specified XOR color. <br>
+     * <br>
      * 
-     * @param color the new XOR mode
+     * @param color
+     *            the new XOR mode.
      */
     public abstract void setXORMode(Color color);
 
     /**
-     * Translates the origin of Graphics current coordinate system 
-     * to the point with X, Y coordinates in the current coordinate system.
-     * All rendering operation in this Graphics will be related to the new origin.
+     * Translates the origin of Graphics current coordinate system to the point
+     * with X, Y coordinates in the current coordinate system. All rendering
+     * operation in this Graphics will be related to the new origin.
      * 
-     * @param x the X coordinate of the origin
-     * @param y the Y coordinate of the origin
+     * @param x
+     *            the X coordinate of the origin.
+     * @param y
+     *            the Y coordinate of the origin.
      */
     public abstract void translate(int x, int y);
 }
diff --git a/awt/java/awt/Graphics2D.java b/awt/java/awt/Graphics2D.java
index 2ff5e0c..04a7319 100644
--- a/awt/java/awt/Graphics2D.java
+++ b/awt/java/awt/Graphics2D.java
@@ -30,19 +30,22 @@
 
 /**
  * The Graphics2D class extends Graphics class and provides more capabilities
- * for rendering text, images, shapes. This provides methods to peform 
- * transformation of coordinate system, color management, and text layout. 
- * The following attributes exist for rendering:
+ * for rendering text, images, shapes. This provides methods to perform
+ * transformation of coordinate system, color management, and text layout. The
+ * following attributes exist for rendering:
  * <ul>
  * <li>Color - current Graphics2D color;</li>
  * <li>Font - current Graphics2D font;</li>
- * <li>Stroke - pen with a width of 1 pixel;</li>  
+ * <li>Stroke - pen with a width of 1 pixel;</li>
  * <li>Transform - current Graphics2D Transformation;</li>
- * <li>Composite - alpha compositing rules for combining source and destination colors.</li>
- * </ul> 
+ * <li>Composite - alpha compositing rules for combining source and destination
+ * colors.</li>
+ * </ul>
+ * 
+ * @since Android 1.0
  */
 public abstract class Graphics2D extends Graphics {
-    
+
     /**
      * Instantiates a new Graphics2D object. This constructor should never be
      * called directly.
@@ -52,41 +55,46 @@
     }
 
     /**
-     * Adds preferences for the rendering algorithms. The preferences
-     * are arbitrary and specified by Map objects. All specified by Map object
-     * preferencies can be modified. 
+     * Adds preferences for the rendering algorithms. The preferences are
+     * arbitrary and specified by Map objects. All specified by Map object
+     * preferences can be modified.
      * 
-     * @param hints the rendering hints.
+     * @param hints
+     *            the rendering hints.
      */
     public abstract void addRenderingHints(Map<?, ?> hints);
 
     /**
-     * Intersects the current clipping area with the specified Shape 
-     * and the result becomes a new clipping area. 
-     * If current clipping area is not defined, the Shape 
-     * becomes the new clipping area. No rendering operations 
-     * are allowed outside the clipping area.  
+     * Intersects the current clipping area with the specified Shape and the
+     * result becomes a new clipping area. If current clipping area is not
+     * defined, the Shape becomes the new clipping area. No rendering operations
+     * are allowed outside the clipping area.
      * 
-     * @param s the specified Shape object which will be intersected 
-     * with current clipping area.
+     * @param s
+     *            the specified Shape object which will be intersected with
+     *            current clipping area.
      */
     public abstract void clip(Shape s);
 
     /**
      * Draws the outline of the specified Shape.
      * 
-     * @param s the Shape which ouline is drawn.
+     * @param s
+     *            the Shape which outline is drawn.
      */
     public abstract void draw(Shape s);
 
     /**
-     * Draws the specified GlyphVector object's text at the point x, y. 
+     * Draws the specified GlyphVector object's text at the point x, y.
      * 
-     * @param g the GlyphVector object to be drawn.
-     * @param x the X position where the GlyphVector's text should 
-     * be rendered.  
-     * @param y the Y position where the GlyphVector's text should 
-     * be rendered.
+     * @param g
+     *            the GlyphVector object to be drawn.
+     * @param x
+     *            the X position where the GlyphVector's text should be
+     *            rendered.
+     * @param y
+     *            the Y position where the GlyphVector's text should be
+     *            rendered.
      */
     public abstract void drawGlyphVector(GlyphVector g, float x, float y);
 
@@ -94,87 +102,107 @@
      * Draws the BufferedImage -- modified according to the operation
      * BufferedImageOp -- at the point x, y.
      * 
-     * @param img the BufferedImage to be rendered.
-     * @param op the filter to be applied to the image before rendering. 
-     * @param x the X coordinate of the point where the image's upper left corner
-     * will be placed.
-     * @param y the Y coordinate of the point where the image's upper left corner
-     * will be placed.
+     * @param img
+     *            the BufferedImage to be rendered.
+     * @param op
+     *            the filter to be applied to the image before rendering.
+     * @param x
+     *            the X coordinate of the point where the image's upper left
+     *            corner will be placed.
+     * @param y
+     *            the Y coordinate of the point where the image's upper left
+     *            corner will be placed.
      */
     public abstract void drawImage(BufferedImage img, BufferedImageOp op, int x, int y);
 
     /**
-     * Draws BufferedImage transformed from image space into user space 
+     * Draws BufferedImage transformed from image space into user space
      * according to the AffineTransform xform and notifies the ImageObserver.
-     *  
-     * @param img the BufferedImage to be rendered.
-     * @param xform the affine transformation from the image to the user space.
-     * @param obs the ImageObserver to be notified about the image conversion.
      * 
-     * @return true, if the image is successfully loaded and rendered, 
-     * or it's null, otherwise false.
+     * @param img
+     *            the BufferedImage to be rendered.
+     * @param xform
+     *            the affine transformation from the image to the user space.
+     * @param obs
+     *            the ImageObserver to be notified about the image conversion.
+     * @return true, if the image is successfully loaded and rendered, or it's
+     *         null, otherwise false.
      */
     public abstract boolean drawImage(Image img, AffineTransform xform, ImageObserver obs);
 
     /**
-     * Draws a RenderableImage which is transformed from image space into user 
+     * Draws a RenderableImage which is transformed from image space into user
      * according to the AffineTransform xform.
-     *  
-     * @param img the RenderableImage to be rendered.
-     * @param xform the affine transformation from image to user space.
+     * 
+     * @param img
+     *            the RenderableImage to be rendered.
+     * @param xform
+     *            the affine transformation from image to user space.
      */
     public abstract void drawRenderableImage(RenderableImage img, AffineTransform xform);
 
     /**
-     * Draws a RenderedImage which is transformed from image space into user 
+     * Draws a RenderedImage which is transformed from image space into user
      * according to the AffineTransform xform.
-     *  
-     * @param img the RenderedImage to be rendered.
-     * @param xform the affine transformation from image to user space.
+     * 
+     * @param img
+     *            the RenderedImage to be rendered.
+     * @param xform
+     *            the affine transformation from image to user space.
      */
     public abstract void drawRenderedImage(RenderedImage img, AffineTransform xform);
 
     /**
-     * Draws the string specified by the AttributedCharacterIterator. 
-     * The first character's position is specified by the X, Y parameters.   
+     * Draws the string specified by the AttributedCharacterIterator. The first
+     * character's position is specified by the X, Y parameters.
      * 
-     * @param iterator whose text is drawn.
-     * @param x the X position where the first character is drawn. 
-     * @param y the Y position where the first character is drawn.
+     * @param iterator
+     *            whose text is drawn.
+     * @param x
+     *            the X position where the first character is drawn.
+     * @param y
+     *            the Y position where the first character is drawn.
      */
     public abstract void drawString(AttributedCharacterIterator iterator, float x, float y);
 
     /**
-     * Draws the string specified by the AttributedCharacterIterator. 
-     * The first character's position is specified by the X, Y parameters.   
+     * Draws the string specified by the AttributedCharacterIterator. The first
+     * character's position is specified by the X, Y parameters.
      * 
-     * @param iterator whose text is drawn.
-     * @param x the X position where the first character is drawn. 
-     * @param y the Y position where the first character is drawn.
-     * 
+     * @param iterator
+     *            whose text is drawn.
+     * @param x
+     *            the X position where the first character is drawn.
+     * @param y
+     *            the Y position where the first character is drawn.
      * @see java.awt.Graphics#drawString(AttributedCharacterIterator, int, int)
      */
     @Override
     public abstract void drawString(AttributedCharacterIterator iterator, int x, int y);
 
     /**
-     * Draws the String whose the first character position is specified 
-     * by the parameters X, Y.   
+     * Draws the String whose the first character position is specified by the
+     * parameters X, Y.
      * 
-     * @param s the String to be drawn.
-     * @param x the X position of the first character. 
-     * @param y the Y position of the first character.
+     * @param s
+     *            the String to be drawn.
+     * @param x
+     *            the X position of the first character.
+     * @param y
+     *            the Y position of the first character.
      */
     public abstract void drawString(String s, float x, float y);
 
     /**
-     * Draws the String whose the first character coordinates are specified 
-     * by the parameters X, Y.   
+     * Draws the String whose the first character coordinates are specified by
+     * the parameters X, Y.
      * 
-     * @param str the String to be drawn.
-     * @param x the X coordinate of the first character. 
-     * @param y the Y coordinate of the first character.
-     * 
+     * @param str
+     *            the String to be drawn.
+     * @param x
+     *            the X coordinate of the first character.
+     * @param y
+     *            the Y coordinate of the first character.
      * @see java.awt.Graphics#drawString(String, int, int)
      */
     @Override
@@ -183,7 +211,8 @@
     /**
      * Fills the interior of the specified Shape.
      * 
-     * @param s the Shape to be filled.
+     * @param s
+     *            the Shape to be filled.
      */
     public abstract void fill(Shape s);
 
@@ -204,7 +233,7 @@
     /**
      * Gets the device configuration.
      * 
-     * @return the device configuration
+     * @return the device configuration.
      */
     public abstract GraphicsConfiguration getDeviceConfiguration();
 
@@ -223,17 +252,17 @@
     public abstract Paint getPaint();
 
     /**
-     * Gets the value of single preference for specified key. 
+     * Gets the value of single preference for specified key.
      * 
-     * @param key the specified key of the rendering hint.
-     * 
+     * @param key
+     *            the specified key of the rendering hint.
      * @return the value of rendering hint for specified key.
      */
     public abstract Object getRenderingHint(RenderingHints.Key key);
 
     /**
-     * Gets the set of the rendering preferences as a collection of 
-     * key/value pairs.
+     * Gets the set of the rendering preferences as a collection of key/value
+     * pairs.
      * 
      * @return the RenderingHints which contains the rendering preferences.
      */
@@ -254,172 +283,196 @@
     public abstract AffineTransform getTransform();
 
     /**
-     * Determines wether or not the specified Shape intersects the specified 
-     * Rectangle. If the onStroke parameter is true, this method 
-     * checks whether or not the specified Shape outline intersects the specified 
-     * Rectangle, otherwise this method checks whether or not the specified 
-     * Shape's interior intersects the specified Rectangle.   
+     * Determines whether or not the specified Shape intersects the specified
+     * Rectangle. If the onStroke parameter is true, this method checks whether
+     * or not the specified Shape outline intersects the specified Rectangle,
+     * otherwise this method checks whether or not the specified Shape's
+     * interior intersects the specified Rectangle.
      * 
-     * @param rect the specified Rectangle.
-     * @param s the Shape to check for intersection.
-     * @param onStroke the parameter determines whether or not this method checks
-     * for intersection of the Shape outline or of the Shape interior with 
-     * the Rectangle. 
-     * 
-     * @return true, if there is a hit, otherwise false.
+     * @param rect
+     *            the specified Rectangle.
+     * @param s
+     *            the Shape to check for intersection.
+     * @param onStroke
+     *            the parameter determines whether or not this method checks for
+     *            intersection of the Shape outline or of the Shape interior
+     *            with the Rectangle.
+     * @return true, if there is a hit, false otherwise.
      */
     public abstract boolean hit(Rectangle rect, Shape s, boolean onStroke);
 
     /**
      * Performs a rotation transform relative to current Graphics2D Transform.
-     * The coordinate system is rotated by the specified angle in radians relative to 
-     * current origin.
+     * The coordinate system is rotated by the specified angle in radians
+     * relative to current origin.
      * 
-     * @param theta the angle of rotation in radians.
+     * @param theta
+     *            the angle of rotation in radians.
      */
     public abstract void rotate(double theta);
 
     /**
-     * Performs a translated rotation transform relative to current Graphics2D 
-     * Transform. The coordinate system is rotated by the specified angle in radians 
-     * relative to current origin and then moved to point (x, y).
+     * Performs a translated rotation transform relative to current Graphics2D
+     * Transform. The coordinate system is rotated by the specified angle in
+     * radians relative to current origin and then moved to point (x, y). Is
+     * this right?
      * 
-     * Is this right?
-     * 
-     * @param theta the angle of rotation in radians.
-     * @param x the X coordinate.
-     * @param y the Y coordinate. 
+     * @param theta
+     *            the angle of rotation in radians.
+     * @param x
+     *            the X coordinate.
+     * @param y
+     *            the Y coordinate.
      */
     public abstract void rotate(double theta, double x, double y);
 
     /**
-     * Performs a linear scale transform relative to current Graphics2D Transform.
-     * The coordinate system is rescaled vertically and horizontally 
+     * Performs a linear scale transform relative to current Graphics2D
+     * Transform. The coordinate system is rescaled vertically and horizontally
      * by the specified parameters.
      * 
-     * @param sx the scaling factor by which the X coordinate is multiplied.   
-     * @param sy the scaling factor by which the Y coordinate is multiplied.   
+     * @param sx
+     *            the scaling factor by which the X coordinate is multiplied.
+     * @param sy
+     *            the scaling factor by which the Y coordinate is multiplied.
      */
     public abstract void scale(double sx, double sy);
 
     /**
-     * Sets a new background color for clearing rectangular areas. 
-     * The clearRect method uses the current background color. 
+     * Sets a new background color for clearing rectangular areas. The clearRect
+     * method uses the current background color.
      * 
-     * @param color the new background color.
+     * @param color
+     *            the new background color.
      */
     public abstract void setBackground(Color color);
 
     /**
-     * Sets the current composite for Graphics2D. 
+     * Sets the current composite for Graphics2D.
      * 
-     * @param comp the Composite object.
+     * @param comp
+     *            the Composite object.
      */
     public abstract void setComposite(Composite comp);
 
     /**
      * Sets the paint for Graphics2D.
      * 
-     * @param paint the Paint object.
+     * @param paint
+     *            the Paint object.
      */
     public abstract void setPaint(Paint paint);
 
     /**
      * Sets a key-value pair in the current RenderingHints map.
      * 
-     * @param key the key of the rendering hint to set.
-     * @param value the value to set for the rendering hint.
+     * @param key
+     *            the key of the rendering hint to set.
+     * @param value
+     *            the value to set for the rendering hint.
      */
     public abstract void setRenderingHint(RenderingHints.Key key, Object value);
 
     /**
-     * Replaces the current rendering hints with the specified rendering preferences.
+     * Replaces the current rendering hints with the specified rendering
+     * preferences.
      * 
-     * @param hints the new Map of rendering hints.
+     * @param hints
+     *            the new Map of rendering hints.
      */
     public abstract void setRenderingHints(Map<?, ?> hints);
 
     /**
      * Sets the stroke for the Graphics2D.
      * 
-     * @param s the Stroke object.
+     * @param s
+     *            the Stroke object.
      */
     public abstract void setStroke(Stroke s);
 
     /**
-     * Overwrite the current Transform of the Graphics2D. The specified Transform 
-     * should be received from the getTransform() method and should be used 
-     * only for restoring the original Graphics2D transform after calling
-     * draw or fill methods. 
+     * Overwrite the current Transform of the Graphics2D. The specified
+     * Transform should be received from the getTransform() method and should be
+     * used only for restoring the original Graphics2D transform after calling
+     * draw or fill methods.
      * 
-     * @param Tx the specified Transform.
+     * @param Tx
+     *            the specified Transform.
      */
     public abstract void setTransform(AffineTransform Tx);
 
     /**
-     * Performs a shear transform relative to current Graphics2D Transform.
-     * The coordinate system is shifted by the specified multipliers relative to 
+     * Performs a shear transform relative to current Graphics2D Transform. The
+     * coordinate system is shifted by the specified multipliers relative to
      * current position.
      * 
-     * @param shx the multiplier by which the X coordinates shift position
-     * along X axis as a function of Y coordinates.   
-     * @param shy the multiplier by which the Y coordinates shift position
-     * along Y axis as a function of X coordinates.   
+     * @param shx
+     *            the multiplier by which the X coordinates shift position along
+     *            X axis as a function of Y coordinates.
+     * @param shy
+     *            the multiplier by which the Y coordinates shift position along
+     *            Y axis as a function of X coordinates.
      */
     public abstract void shear(double shx, double shy);
 
     /**
-     * Concatenates the AffineTransform object with current Transform 
-     * of this Graphics2D. The transforms are applied in reverse order
-     * with the last specified transform applied first and the next
-     * transformation applied to the result of previous transformation. 
-     * More precisely, if Cx is the current Graphics2D transform, the 
-     * transform method's result with Tx as the parameter
-     * is the transformation Rx, where Rx(p) = Cx(Tx(p)), for p - a point
-     * in current coordinate system. Rx becomes the current Transform   
+     * Concatenates the AffineTransform object with current Transform of this
+     * Graphics2D. The transforms are applied in reverse order with the last
+     * specified transform applied first and the next transformation applied to
+     * the result of previous transformation. More precisely, if Cx is the
+     * current Graphics2D transform, the transform method's result with Tx as
+     * the parameter is the transformation Rx, where Rx(p) = Cx(Tx(p)), for p -
+     * a point in current coordinate system. Rx becomes the current Transform
      * for this Graphics2D.
      * 
-     * @param Tx the AffineTransform object to be concatenated with 
-     * current Transform.
+     * @param Tx
+     *            the AffineTransform object to be concatenated with current
+     *            Transform.
      */
     public abstract void transform(AffineTransform Tx);
 
     /**
      * Performs a translate transform relative to current Graphics2D Transform.
-     * The coordinate system is moved by the specified distance relative 
-     * to current position.
+     * The coordinate system is moved by the specified distance relative to
+     * current position.
      * 
-     * @param tx the translation distance along the X axis.
-     * @param ty the translation distance along the Y axis.
+     * @param tx
+     *            the translation distance along the X axis.
+     * @param ty
+     *            the translation distance along the Y axis.
      */
     public abstract void translate(double tx, double ty);
 
     /**
-     * Moves the origin Graphics2D Transform to the point with x, y
-     * coordinates in current coordinate system. The new origin of coordinate 
-     * system is moved to the (x, y) point accordingly. All rendering and 
-     * transform operations are performed relative to this new origin.
+     * Moves the origin Graphics2D Transform to the point with x, y coordinates
+     * in current coordinate system. The new origin of coordinate system is
+     * moved to the (x, y) point accordingly. All rendering and transform
+     * operations are performed relative to this new origin.
      * 
-     * @param x the X coordinate.
-     * @param y the Y coordinate. 
-     * 
+     * @param x
+     *            the X coordinate.
+     * @param y
+     *            the Y coordinate.
      * @see java.awt.Graphics#translate(int, int)
      */
     @Override
     public abstract void translate(int x, int y);
 
     /**
-     * Fills a 3D rectangle with the current color. 
-     * The rectangle is specified by its width, height, and top left corner 
-     * coordinates.
+     * Fills a 3D rectangle with the current color. The rectangle is specified
+     * by its width, height, and top left corner coordinates.
      * 
-     * @param x the X coordinate of the rectangle's top left corner.
-     * @param y the Y coordinate of the rectangle's top left corner.
-     * @param width the width of rectangle.
-     * @param height the height of rectangle.
-     * @param raised a boolean value that determines whether the rectangle 
-     * is drawn as raised or indented.
-     * 
+     * @param x
+     *            the X coordinate of the rectangle's top left corner.
+     * @param y
+     *            the Y coordinate of the rectangle's top left corner.
+     * @param width
+     *            the width of rectangle.
+     * @param height
+     *            the height of rectangle.
+     * @param raised
+     *            a boolean value that determines whether the rectangle is drawn
+     *            as raised or indented.
      * @see java.awt.Graphics#fill3DRect(int, int, int, int, boolean)
      */
     @Override
@@ -433,15 +486,19 @@
     }
 
     /**
-     * Draws the higlighted outline of a rectangle.
+     * Draws the highlighted outline of a rectangle.
      * 
-     * @param x the X coordinate of the rectangle's top left corner.
-     * @param y the Y coordinate of the rectangle's top left corner.
-     * @param width the width of rectangle.
-     * @param height the height of rectangle.
-     * @param raised a boolean value that determines whether the rectangle 
-     * is drawn as raised or indented.
-     *       
+     * @param x
+     *            the X coordinate of the rectangle's top left corner.
+     * @param y
+     *            the Y coordinate of the rectangle's top left corner.
+     * @param width
+     *            the width of rectangle.
+     * @param height
+     *            the height of rectangle.
+     * @param raised
+     *            a boolean value that determines whether the rectangle is drawn
+     *            as raised or indented.
      * @see java.awt.Graphics#draw3DRect(int, int, int, int, boolean)
      */
     @Override
diff --git a/awt/java/awt/GraphicsConfiguration.java b/awt/java/awt/GraphicsConfiguration.java
index 8bec253..d59e896 100644
--- a/awt/java/awt/GraphicsConfiguration.java
+++ b/awt/java/awt/GraphicsConfiguration.java
@@ -18,6 +18,7 @@
  * @author Alexey A. Petrenko
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.awt.geom.AffineTransform;
@@ -30,70 +31,76 @@
 /**
  * The GraphicsConfiguration class contains the characteristics of graphics
  * devices such as a printer or monitor, and represents device's capabilities
- * and modes. Many GraphicsConfiguration objects can be associated with
- * single graphics device.
+ * and modes. Many GraphicsConfiguration objects can be associated with single
+ * graphics device.
+ * 
+ * @since Android 1.0
  */
 public abstract class GraphicsConfiguration {
-   
-   /**
-     * Constructor could not be used directly and should be obtained in 
-     * extended classes. 
-    */
 
+    /**
+     * Constructor could not be used directly and should be obtained in extended
+     * classes.
+     */
     protected GraphicsConfiguration() {
     }
 
-
-   /**
-    * Creates BufferedImage image object with a data layout and color model 
-    * compatible with this GraphicsConfiguration with specified width 
-    * and height parameters.
-    * 
-    * @param width the width of BufferedImage.
-    * @param height the height of BufferedImage.
-    * 
-    * @return the BufferedImage object with specified width and height 
-    * parameters.
-    */
+    /**
+     * Creates BufferedImage image object with a data layout and color model
+     * compatible with this GraphicsConfiguration with specified width and
+     * height parameters.
+     * 
+     * @param width
+     *            the width of BufferedImage.
+     * @param height
+     *            the height of BufferedImage.
+     * @return the BufferedImage object with specified width and height
+     *         parameters.
+     */
     public abstract BufferedImage createCompatibleImage(int width, int height);
 
     /**
      * Creates a BufferedImage that has the specified width, height,
-     * transparency and has a data layout and color model compatible with this 
-     * GraphicsConfiguration. 
+     * transparency and has a data layout and color model compatible with this
+     * GraphicsConfiguration.
      * 
-     * @param width the width of image.
-     * @param height the height  of image.
-     * @param transparency the transparency mode.
-     * 
+     * @param width
+     *            the width of image.
+     * @param height
+     *            the height of image.
+     * @param transparency
+     *            the transparency mode.
      * @return the BufferedImage object.
      */
     public abstract BufferedImage createCompatibleImage(int width, int height, int transparency);
 
     /**
-     * Creates a VolatileImage that has the specified width and height 
-     * and has a data layout and color model compatible with this 
-     * GraphicsConfiguration. 
+     * Creates a VolatileImage that has the specified width and height and has a
+     * data layout and color model compatible with this GraphicsConfiguration.
      * 
-     * @param width the width of image.
-     * @param height the height of image.
-     * 
+     * @param width
+     *            the width of image.
+     * @param height
+     *            the height of image.
      * @return the VolatileImage object.
      */
     public abstract VolatileImage createCompatibleVolatileImage(int width, int height);
 
     /**
      * Creates a VolatileImage that supports the specified width, height,
-     * transparency and has a data layout and color model compatible with this 
-     * GraphicsConfiguration. 
+     * transparency and has a data layout and color model compatible with this
+     * GraphicsConfiguration.
      * 
-     * @param width the width of image.
-     * @param height the height of image.
-     * @param transparency the transparency mode.
-     * 
+     * @param width
+     *            the width of image.
+     * @param height
+     *            the height of image.
+     * @param transparency
+     *            the transparency mode.
      * @return the VolatileImage object.
      */
-    public abstract VolatileImage createCompatibleVolatileImage(int width, int height, int transparency);
+    public abstract VolatileImage createCompatibleVolatileImage(int width, int height,
+            int transparency);
 
     /**
      * Gets the bounds of area covered by the GraphicsConfiguration in the
@@ -111,20 +118,19 @@
     public abstract ColorModel getColorModel();
 
     /**
-     * Gets the ColorModel of the GraphicsConfiguration which 
-     * supports specified Transparency.
+     * Gets the ColorModel of the GraphicsConfiguration which supports specified
+     * Transparency.
      * 
-     * @param transparency the Transparency mode: OPAQUE, BITMASK, or
-     * TRANSLUCENT.
-     * 
-     * @return the ColorModel of the GraphicsConfiguration which 
-     * supports specified Transparency.
+     * @param transparency
+     *            the Transparency mode: OPAQUE, BITMASK, or TRANSLUCENT.
+     * @return the ColorModel of the GraphicsConfiguration which supports
+     *         specified Transparency.
      */
     public abstract ColorModel getColorModel(int transparency);
 
     /**
-     * Gets the default AffineTransform of the GraphicsConfiguration.
-     * This method translates user coordinates to device coordinates.
+     * Gets the default AffineTransform of the GraphicsConfiguration. This
+     * method translates user coordinates to device coordinates.
      * 
      * @return the default AffineTransform of the GraphicsConfiguration.
      */
@@ -144,23 +150,24 @@
      */
     public abstract AffineTransform getNormalizingTransform();
 
-
     /**
-     * Creates VolatileImage with specified width, height, ImageCapabilities;
-     * a data layout and color model compatible with this GraphicsConfiguration. 
-     *  
-     * @param width the width of image.
-     * @param height the height of image.
-     * @param caps the ImageCapabilities object.
+     * Creates VolatileImage with specified width, height, ImageCapabilities; a
+     * data layout and color model compatible with this GraphicsConfiguration.
      * 
-     * @return the VolatileImage which data layout and color model compatible 
-     * with this GraphicsConfiguration. 
-     * 
-     * @throws AWTException if ImageCapabilities is not supported by the
-     * GraphicsConfiguration.
+     * @param width
+     *            the width of image.
+     * @param height
+     *            the height of image.
+     * @param caps
+     *            the ImageCapabilities object.
+     * @return the VolatileImage which data layout and color model compatible
+     *         with this GraphicsConfiguration.
+     * @throws AWTException
+     *             if ImageCapabilities is not supported by the
+     *             GraphicsConfiguration.
      */
-    public VolatileImage createCompatibleVolatileImage(int width, int height,
-            ImageCapabilities caps) throws AWTException {
+    public VolatileImage createCompatibleVolatileImage(int width, int height, ImageCapabilities caps)
+            throws AWTException {
         VolatileImage res = createCompatibleVolatileImage(width, height);
         if (!res.getCapabilities().equals(caps)) {
             // awt.14A=Can not create VolatileImage with specified capabilities
@@ -170,21 +177,23 @@
     }
 
     /**
-     * Creates a VolatileImage with specified width, height, transparency 
-     * and ImageCapabilities; a data layout and color model compatible with 
-     * this GraphicsConfiguration.
-     * 
-     * @param width the width of image.
-     * @param height the height of image.
-     * @param caps the ImageCapabilities object.
-     * @param transparency the Transparency mode: OPAQUE, BITMASK, or
-     * TRANSLUCENT.
-     * 
-     * @return the VolatileImage which data layout and color model compatible 
-     * with this GraphicsConfiguration. 
-     * 
-     * @throws AWTException if ImageCapabilities is not supported by the
+     * Creates a VolatileImage with specified width, height, transparency and
+     * ImageCapabilities; a data layout and color model compatible with this
      * GraphicsConfiguration.
+     * 
+     * @param width
+     *            the width of image.
+     * @param height
+     *            the height of image.
+     * @param caps
+     *            the ImageCapabilities object.
+     * @param transparency
+     *            the Transparency mode: OPAQUE, BITMASK, or TRANSLUCENT.
+     * @return the VolatileImage which data layout and color model compatible
+     *         with this GraphicsConfiguration.
+     * @throws AWTException
+     *             if ImageCapabilities is not supported by the
+     *             GraphicsConfiguration.
      */
     public VolatileImage createCompatibleVolatileImage(int width, int height,
             ImageCapabilities caps, int transparency) throws AWTException {
@@ -199,7 +208,7 @@
     /**
      * Gets the buffering capabilities of the GraphicsConfiguration.
      * 
-     * @return the BufferCapabilities object. 
+     * @return the BufferCapabilities object.
      */
     public BufferCapabilities getBufferCapabilities() {
         return new BufferCapabilities(new ImageCapabilities(false), new ImageCapabilities(false),
diff --git a/awt/java/awt/GraphicsDevice.java b/awt/java/awt/GraphicsDevice.java
index 8cf700a..9eda4e0 100644
--- a/awt/java/awt/GraphicsDevice.java
+++ b/awt/java/awt/GraphicsDevice.java
@@ -18,50 +18,61 @@
  * @author Alexey A. Petrenko
  * @version $Revision$
  */
+
 package java.awt;
 
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The GraphicsDevice class describes the graphics devices (such as screens 
- * or printers) which are available in a particular graphics environment. 
- * Many GraphicsDevice instances can be associated with a single
- * GraphicsEnvironment. Each GraphicsDevice has one or more GraphicsConfiguration
- * objects which specify the different configurations and modes of GraphicsDevice.
+ * The GraphicsDevice class describes the graphics devices (such as screens or
+ * printers) which are available in a particular graphics environment. Many
+ * GraphicsDevice instances can be associated with a single GraphicsEnvironment.
+ * Each GraphicsDevice has one or more GraphicsConfiguration objects which
+ * specify the different configurations and modes of GraphicsDevice.
+ * 
+ * @since Android 1.0
  */
 public abstract class GraphicsDevice {
-    
-    /** The display mode. */
+
+    /**
+     * The display mode.
+     */
     private DisplayMode displayMode;
 
-    //???AWT
-//    private Window fullScreenWindow = null;
+    // ???AWT
+    // private Window fullScreenWindow = null;
 
-   /** The Constant TYPE_IMAGE_BUFFER indicates a image buffer device. */
+    /**
+     * The Constant TYPE_IMAGE_BUFFER indicates a image buffer device.
+     */
 
     public static final int TYPE_IMAGE_BUFFER = 2;
 
-    /** The Constant TYPE_PRINTER indicates a printer device. */
+    /**
+     * The Constant TYPE_PRINTER indicates a printer device.
+     */
     public static final int TYPE_PRINTER = 1;
 
-    /** The Constant TYPE_RASTER_SCREEN indicates a raster screen device. */
+    /**
+     * The Constant TYPE_RASTER_SCREEN indicates a raster screen device.
+     */
     public static final int TYPE_RASTER_SCREEN = 0;
 
-   /**
-    * Constructor is not to be used directly as this class is abstract. 
-    */
+    /**
+     * Constructor is not to be used directly as this class is abstract.
+     */
     protected GraphicsDevice() {
-        displayMode = new DisplayMode(0, 0, DisplayMode.BIT_DEPTH_MULTI, DisplayMode.REFRESH_RATE_UNKNOWN);
+        displayMode = new DisplayMode(0, 0, DisplayMode.BIT_DEPTH_MULTI,
+                DisplayMode.REFRESH_RATE_UNKNOWN);
     }
 
-
-   /**
-    * Returns an array of GraphicsConfiguration objects associated
-    * with the GraphicsDevice.  
-    * 
-    * @return an array of GraphicsConfiguration objects associated
-    * with the GraphicsDevice.
-    */
+    /**
+     * Returns an array of GraphicsConfiguration objects associated with the
+     * GraphicsDevice.
+     * 
+     * @return an array of GraphicsConfiguration objects associated with the
+     *         GraphicsDevice.
+     */
     public abstract GraphicsConfiguration[] getConfigurations();
 
     /**
@@ -72,41 +83,39 @@
     public abstract GraphicsConfiguration getDefaultConfiguration();
 
     /**
-     * Gets the String identifier which associated with the GraphicsDevice in 
+     * Gets the String identifier which associated with the GraphicsDevice in
      * the GraphicsEnvironment.
      * 
-     * @return the String identifier of the GraphicsDevice in 
-     * the GraphicsEnvironment.
+     * @return the String identifier of the GraphicsDevice in the
+     *         GraphicsEnvironment.
      */
     public abstract String getIDstring();
 
     /**
-     * Gets the type of this GraphicsDevice: 
-     * TYPE_IMAGE_BUFFER, TYPE_PRINTER or TYPE_RASTER_SCREEN.
+     * Gets the type of this GraphicsDevice: TYPE_IMAGE_BUFFER, TYPE_PRINTER or
+     * TYPE_RASTER_SCREEN.
      * 
-     * @return the type of this GraphicsDevice: TYPE_IMAGE_BUFFER, 
-     * TYPE_PRINTER or TYPE_RASTER_SCREEN.
+     * @return the type of this GraphicsDevice: TYPE_IMAGE_BUFFER, TYPE_PRINTER
+     *         or TYPE_RASTER_SCREEN.
      */
     public abstract int getType();
 
-
-
-   /**
-	* Returns the number of bytes available in accelerated 
-	* memory on this device. 
-    * 
-    * @return the number of bytes available accelerated memory.
-    */
+    /**
+     * Returns the number of bytes available in accelerated memory on this
+     * device.
+     * 
+     * @return the number of bytes available accelerated memory.
+     */
     public int getAvailableAcceleratedMemory() {
         return 0;
     }
 
-    /* ???AWT
-    public GraphicsConfiguration getBestConfiguration(GraphicsConfigTemplate gct) {
-        return gct.getBestConfiguration(getConfigurations());
-    }
-    */
-    
+    /*
+     * ???AWT public GraphicsConfiguration
+     * getBestConfiguration(GraphicsConfigTemplate gct) { return
+     * gct.getBestConfiguration(getConfigurations()); }
+     */
+
     /**
      * Gets the current display mode of the GraphicsDevice.
      * 
@@ -122,43 +131,43 @@
      * @return an array of display modes available in this GraphicsDevice.
      */
     public DisplayMode[] getDisplayModes() {
-        DisplayMode []dms = {displayMode};
-        return  dms;
+        DisplayMode[] dms = {
+            displayMode
+        };
+        return dms;
     }
 
-    /* ???AWT
-    public Window getFullScreenWindow() {
-        return fullScreenWindow;
-    }
-    */
-    
+    /*
+     * ???AWT public Window getFullScreenWindow() { return fullScreenWindow; }
+     */
+
     /**
-     * Returns true if this GraphicsDevice supports low-level 
-     * display changes.
+     * Returns true if this GraphicsDevice supports low-level display changes.
      * 
-     * @return true, if this GraphicsDevice supports low-level 
-     * display changes; false otherwise.
+     * @return true, if this GraphicsDevice supports low-level display changes;
+     *         false otherwise.
      */
     public boolean isDisplayChangeSupported() {
         return false;
     }
 
     /**
-     * Returns true if this GraphicsDevice supports full screen
-     * mode.
+     * Returns true if this GraphicsDevice supports full screen mode.
      * 
-     * @return true, if this GraphicsDevice supports full screen
-     * mode; otherwise false.
+     * @return true, if this GraphicsDevice supports full screen mode, false
+     *         otherwise.
      */
     public boolean isFullScreenSupported() {
         return false;
     }
-    //an array of display modes available in this GraphicsDevice.
-    
+
+    // an array of display modes available in this GraphicsDevice.
+
     /**
      * Sets the display mode of this GraphicsDevice.
      * 
-     * @param dm the new display mode of this GraphicsDevice. 
+     * @param dm
+     *            the new display mode of this GraphicsDevice.
      */
     public void setDisplayMode(DisplayMode dm) {
         if (!isDisplayChangeSupported()) {
@@ -166,7 +175,7 @@
             throw new UnsupportedOperationException(Messages.getString("awt.122")); //$NON-NLS-1$
         }
 
-        DisplayMode []dms = getDisplayModes();
+        DisplayMode[] dms = getDisplayModes();
         for (DisplayMode element : dms) {
             if (element.equals(dm)) {
                 displayMode = dm;
@@ -177,23 +186,11 @@
         throw new IllegalArgumentException(Messages.getString("awt.123", dm)); //$NON-NLS-1$
     }
 
-    /* ???AWT
-    public void setFullScreenWindow(Window w) {
-        if (w == null) {
-            fullScreenWindow = null;
-            return;
-        }
-
-        fullScreenWindow = w;
-
-        if (isFullScreenSupported()) {
-            w.enableInputMethods(false);
-        } else {
-            w.setSize(displayMode.getWidth(), displayMode.getHeight());
-            w.setLocation(0, 0);
-        }
-        w.setVisible(true);
-        w.setAlwaysOnTop(true);
-    }
-    */
+    /*
+     * ???AWT public void setFullScreenWindow(Window w) { if (w == null) {
+     * fullScreenWindow = null; return; } fullScreenWindow = w; if
+     * (isFullScreenSupported()) { w.enableInputMethods(false); } else {
+     * w.setSize(displayMode.getWidth(), displayMode.getHeight());
+     * w.setLocation(0, 0); } w.setVisible(true); w.setAlwaysOnTop(true); }
+     */
 }
diff --git a/awt/java/awt/GraphicsEnvironment.java b/awt/java/awt/GraphicsEnvironment.java
index 3b14f55..d527417 100644
--- a/awt/java/awt/GraphicsEnvironment.java
+++ b/awt/java/awt/GraphicsEnvironment.java
@@ -28,17 +28,20 @@
 import org.apache.harmony.awt.gl.CommonGraphics2DFactory;
 
 /**
- * The GraphicsEnvironment class defines a collection of GraphicsDevice 
- * objects and Font objects which are available for Java application on
- * current platform.
+ * The GraphicsEnvironment class defines a collection of GraphicsDevice objects
+ * and Font objects which are available for Java application on current
+ * platform.
+ * 
+ * @since Android 1.0
  */
 public abstract class GraphicsEnvironment {
-    
+
     /**
-     * Constructor could not be used directly and should be obtained in 
-     * extended classes. 
+     * Constructor could not be used directly and should be obtained in extended
+     * classes.
      */
-    protected GraphicsEnvironment() {}
+    protected GraphicsEnvironment() {
+    }
 
     /**
      * Gets the local GraphicsEnvironment.
@@ -46,17 +49,16 @@
      * @return the local GraphicsEnvironment.
      */
     public static GraphicsEnvironment getLocalGraphicsEnvironment() {
-        synchronized(ContextStorage.getContextLock()) {
+        synchronized (ContextStorage.getContextLock()) {
             if (ContextStorage.getGraphicsEnvironment() == null) {
-                if (isHeadless()) {                    
-                    ContextStorage.setGraphicsEnvironment(new HeadlessGraphicsEnvironment());                    
+                if (isHeadless()) {
+                    ContextStorage.setGraphicsEnvironment(new HeadlessGraphicsEnvironment());
                 } else {
-                    CommonGraphics2DFactory g2df =
-                            (CommonGraphics2DFactory) Toolkit.getDefaultToolkit().getGraphicsFactory();
-                    
-                    ContextStorage.setGraphicsEnvironment( 
-                            g2df.createGraphicsEnvironment(ContextStorage.getWindowFactory())
-                    );
+                    CommonGraphics2DFactory g2df = (CommonGraphics2DFactory)Toolkit
+                            .getDefaultToolkit().getGraphicsFactory();
+
+                    ContextStorage.setGraphicsEnvironment(g2df
+                            .createGraphicsEnvironment(ContextStorage.getWindowFactory()));
                 }
             }
 
@@ -65,24 +67,24 @@
     }
 
     /**
-     * Returns whether or not a display, keyboard, and mouse are supported 
-     * in this graphics environment.
+     * Returns whether or not a display, keyboard, and mouse are supported in
+     * this graphics environment.
      * 
-     * @return true, if HeadlessException will be thrown from areas of 
-     * the graphics environment that are dependent on a display, keyboard, 
-     * or mouse; false otherwise.
+     * @return true, if HeadlessException will be thrown from areas of the
+     *         graphics environment that are dependent on a display, keyboard,
+     *         or mouse, false otherwise.
      */
     public boolean isHeadlessInstance() {
         return false;
     }
 
     /**
-     * Checks whether or not a display, keyboard, and mouse are supported 
-     * in this environment. 
+     * Checks whether or not a display, keyboard, and mouse are supported in
+     * this environment.
      * 
-     * @return true, if a HeadlessException is thrown from areas of 
-     * the Toolkit and GraphicsEnvironment that are dependent on 
-     * a display, keyboard, or mouse; false otherwise.
+     * @return true, if a HeadlessException is thrown from areas of the Toolkit
+     *         and GraphicsEnvironment that are dependent on a display,
+     *         keyboard, or mouse, false otherwise.
      */
     public static boolean isHeadless() {
         return "true".equals(System.getProperty("java.awt.headless"));
@@ -92,8 +94,8 @@
      * Gets the maximum bounds of system centered windows.
      * 
      * @return the maximum bounds of system centered windows.
-     * 
-     * @throws HeadlessException if isHeadless() method returns true.
+     * @throws HeadlessException
+     *             if isHeadless() method returns true.
      */
     public Rectangle getMaximumWindowBounds() throws HeadlessException {
         return getDefaultScreenDevice().getDefaultConfiguration().getBounds();
@@ -103,8 +105,8 @@
      * Gets the Point which should defines the center of system window.
      * 
      * @return the Point where the system window should be centered.
-     * 
-     * @throws HeadlessException if isHeadless() method returns true.
+     * @throws HeadlessException
+     *             if isHeadless() method returns true.
      */
     public Point getCenterPoint() throws HeadlessException {
         Rectangle mwb = getMaximumWindowBounds();
@@ -112,9 +114,8 @@
     }
 
     /**
-     * Indicates that the primary font should be used. 
-     * Primary font is specified by initial system locale or default encoding).
-     * 
+     * Indicates that the primary font should be used. Primary font is specified
+     * by initial system locale or default encoding).
      */
     public void preferLocaleFonts() {
         // Note: API specification says following:
@@ -123,7 +124,8 @@
         // it may have no effect at all." So, doing nothing is an
         // acceptable behavior for this method.
 
-        // For now FontManager uses 1.4 font.properties scheme for font mapping, so
+        // For now FontManager uses 1.4 font.properties scheme for font mapping,
+        // so
         // this method doesn't make any sense. The implementation of this method
         // which will influence font mapping is postponed until
         // 1.5 mapping scheme not implemented.
@@ -141,7 +143,8 @@
         // it may have no effect at all." So, doing nothing is an
         // acceptable behavior for this method.
 
-        // For now FontManager uses 1.4 font.properties scheme for font mapping, so
+        // For now FontManager uses 1.4 font.properties scheme for font mapping,
+        // so
         // this method doesn't make any sense. The implementation of this method
         // which will influence font mapping is postponed until
         // 1.5 mapping scheme not implemented.
@@ -153,19 +156,19 @@
      * Creates the Graphics2D object for rendering to the specified
      * BufferedImage.
      * 
-     * @param bufferedImage the BufferedImage object.
-     * 
-     * @return the Graphics2D object which allows to render to the specified 
-     * BufferedImage.
+     * @param bufferedImage
+     *            the BufferedImage object.
+     * @return the Graphics2D object which allows to render to the specified
+     *         BufferedImage.
      */
     public abstract Graphics2D createGraphics(BufferedImage bufferedImage);
 
     /**
-     * Gets the array of all available fonts instances in this 
+     * Gets the array of all available fonts instances in this
      * GraphicsEnviroments.
      * 
-     * @return the array of all available fonts instances in this 
-     * GraphicsEnviroments.
+     * @return the array of all available fonts instances in this
+     *         GraphicsEnviroments.
      */
     public abstract Font[] getAllFonts();
 
@@ -180,11 +183,11 @@
      * Gets the array of all available font family names for the specified
      * locale.
      * 
-     * @param locale the Locale object which represents geographical
-     * region. The default locale is used if locale is null.
-     * 
-     * @return the array of available font family names for the specified 
-     * locale.
+     * @param locale
+     *            the Locale object which represents geographical region. The
+     *            default locale is used if locale is null.
+     * @return the array of available font family names for the specified
+     *         locale.
      */
     public abstract String[] getAvailableFontFamilyNames(Locale locale);
 
@@ -192,18 +195,18 @@
      * Gets the default screen device as GraphicDevice object.
      * 
      * @return the GraphicDevice object which represents default screen device.
-     * 
-     * @throws HeadlessException if isHeadless() returns true.
+     * @throws HeadlessException
+     *             if isHeadless() returns true.
      */
     public abstract GraphicsDevice getDefaultScreenDevice() throws HeadlessException;
 
     /**
      * Gets an array of all available screen devices.
      * 
-     * @return the array of GraphicsDevice obgects which represents 
-     * all available screen devices.
-     * 
-     * @throws HeadlessException if isHeadless() returns true.
+     * @return the array of GraphicsDevice objects which represents all
+     *         available screen devices.
+     * @throws HeadlessException
+     *             if isHeadless() returns true.
      */
     public abstract GraphicsDevice[] getScreenDevices() throws HeadlessException;
 }
diff --git a/awt/java/awt/HeadlessException.java b/awt/java/awt/HeadlessException.java
index 28e463b..ec111f1 100644
--- a/awt/java/awt/HeadlessException.java
+++ b/awt/java/awt/HeadlessException.java
@@ -18,16 +18,21 @@
  * @author Alexey A. Petrenko
  * @version $Revision$
  */
+
 package java.awt;
 
 /**
- * The HeadlessException class provides notifications and error messages 
- * when code that is dependent on a keyboard, display, or mouse is called 
- * in an environment that does not support a keyboard, display, or mouse.
+ * The HeadlessException class provides notifications and error messages when
+ * code that is dependent on a keyboard, display, or mouse is called in an
+ * environment that does not support a keyboard, display, or mouse.
+ * 
+ * @since Android 1.0
  */
 public class HeadlessException extends UnsupportedOperationException {
-    
-    /** The Constant serialVersionUID. */
+
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = 167183644944358563L;
 
     /**
@@ -40,7 +45,8 @@
     /**
      * Instantiates a new headless exception with the specified message.
      * 
-     * @param msg the String which represents error message. 
+     * @param msg
+     *            the String which represents error message.
      */
     public HeadlessException(String msg) {
         super(msg);
diff --git a/awt/java/awt/HeadlessGraphicsEnvironment.java b/awt/java/awt/HeadlessGraphicsEnvironment.java
index 97f88d1..306393f 100644
--- a/awt/java/awt/HeadlessGraphicsEnvironment.java
+++ b/awt/java/awt/HeadlessGraphicsEnvironment.java
@@ -14,6 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
+
 package java.awt;
 
 import java.awt.GraphicsDevice;
@@ -23,30 +24,32 @@
 
 /**
  * The HeadlessGraphicsEnvironment class is the CommonGraphicsEnvironment
- * implementation to use in the case where the environment lacks display, 
+ * implementation to use in the case where the environment lacks display,
  * keyboard, and mouse support.
+ * 
+ * @since Android 1.0
  */
 public class HeadlessGraphicsEnvironment extends CommonGraphicsEnvironment {
-    
+
     /**
-     * Returns whether or not a display, keyboard, and mouse are supported 
-     * in this graphics environment.
+     * Returns whether or not a display, keyboard, and mouse are supported in
+     * this graphics environment.
      * 
-     * @return true, if HeadlessException will be thrown from areas of 
-     * the graphics environment that are dependent on a display, keyboard, 
-     * or mouse; false otherwise.
+     * @return true, if HeadlessException will be thrown from areas of the
+     *         graphics environment that are dependent on a display, keyboard,
+     *         or mouse, false otherwise.
      */
     @Override
     public boolean isHeadlessInstance() {
         return true;
     }
-    
+
     /**
      * Gets the default screen device as GraphicDevice object.
      * 
      * @return the GraphicDevice object which represents default screen device.
-     * 
-     * @throws HeadlessException if isHeadless() returns true.
+     * @throws HeadlessException
+     *             if isHeadless() returns true.
      */
     @Override
     public GraphicsDevice getDefaultScreenDevice() throws HeadlessException {
@@ -56,10 +59,10 @@
     /**
      * Gets an array of all available screen devices.
      * 
-     * @return the array of GraphicsDevice objects which represents 
-     * all available screen devices.
-     * 
-     * @throws HeadlessException if isHeadless() returns true.
+     * @return the array of GraphicsDevice objects which represents all
+     *         available screen devices.
+     * @throws HeadlessException
+     *             if isHeadless() returns true.
      */
     @Override
     public GraphicsDevice[] getScreenDevices() throws HeadlessException {
diff --git a/awt/java/awt/HeadlessToolkit.java b/awt/java/awt/HeadlessToolkit.java
index a7dd557..c64a85a 100644
--- a/awt/java/awt/HeadlessToolkit.java
+++ b/awt/java/awt/HeadlessToolkit.java
@@ -26,136 +26,75 @@
 //import java.awt.dnd.InvalidDnDOperationException;
 //import java.awt.dnd.peer.DragSourceContextPeer;
 import java.awt.im.InputMethodHighlight;
-import java.awt.image.ColorModel;
-//import java.awt.peer.*;
+import java.awt.image.ColorModel; //import java.awt.peer.*;
 //import java.beans.PropertyChangeSupport;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 
-import org.apache.harmony.awt.ComponentInternals;
-//import org.apache.harmony.awt.datatransfer.DTK;
+import org.apache.harmony.awt.ComponentInternals; //import org.apache.harmony.awt.datatransfer.DTK;
 import org.apache.harmony.awt.wtk.GraphicsFactory;
 import org.apache.harmony.awt.wtk.NativeEventQueue;
 import org.apache.harmony.awt.wtk.WindowFactory;
 
 /**
- * The HeadlessToolkit class is a subclass of ToolkitImpl to 
- * be used for graphical environments that lack keyboard and 
- * mouse capabilities.
+ * The HeadlessToolkit class is a subclass of ToolkitImpl to be used for
+ * graphical environments that lack keyboard and mouse capabilities.
+ * 
+ * @since Android 1.0
  */
 public final class HeadlessToolkit extends ToolkitImpl {
-    
-    //???AWT
+
+    // ???AWT
     /*
-    @Override
-    protected ButtonPeer createButton(Button a0) throws HeadlessException {
-        throw new HeadlessException();
-    }
-    
-    @Override
-    protected CheckboxPeer createCheckbox(Checkbox a0) throws HeadlessException {
-        throw new HeadlessException();
-    }
-
-    @Override
-    protected CheckboxMenuItemPeer createCheckboxMenuItem(CheckboxMenuItem a0) throws HeadlessException {
-        throw new HeadlessException();
-    }
-    
-    @Override
-    protected ChoicePeer createChoice(Choice a0) throws HeadlessException {
-        throw new HeadlessException();
-    }
-
-    public Cursor createCustomCursor(Image img, Point hotSpot, String name)
-    throws HeadlessException {
-        throw new HeadlessException();
-    }
-
-    @Override
-    protected DialogPeer createDialog(Dialog a0) throws HeadlessException {
-        throw new HeadlessException();
-    }
-
-    @Override
-    public <T extends DragGestureRecognizer> T createDragGestureRecognizer(
-            Class<T> recognizerAbstractClass, DragSource ds, Component c, int srcActions,
-            DragGestureListener dgl) {
-        return null;
-    }
-
-    @Override
-    public DragSourceContextPeer createDragSourceContextPeer(DragGestureEvent dge)
-    throws InvalidDnDOperationException {
-        throw new InvalidDnDOperationException();
-    }
-
-    @Override
-    protected FileDialogPeer createFileDialog(FileDialog a0) throws HeadlessException {
-        throw new HeadlessException();
-    }
-
-    @Override
-    protected FramePeer createFrame(Frame a0) throws HeadlessException {
-        throw new HeadlessException();
-    }
-
-    @Override
-    protected LabelPeer createLabel(Label a0) throws HeadlessException {
-        throw new HeadlessException();
-    }
-
-    @Override
-    protected ListPeer createList(List a0) throws HeadlessException {
-        throw new HeadlessException();
-    }
-
-    @Override
-    protected MenuPeer createMenu(Menu a0) throws HeadlessException {
-        throw new HeadlessException();
-    }
-
-    @Override
-    protected MenuBarPeer createMenuBar(MenuBar a0) throws HeadlessException {
-        throw new HeadlessException();
-    }
-
-    @Override
-    protected MenuItemPeer createMenuItem(MenuItem a0) throws HeadlessException {
-        throw new HeadlessException();
-    }
-
-    @Override
-    protected PopupMenuPeer createPopupMenu(PopupMenu a0) throws HeadlessException {
-        throw new HeadlessException();
-    }
-
-    @Override
-    protected ScrollbarPeer createScrollbar(Scrollbar a0) throws HeadlessException {
-        throw new HeadlessException();
-    }
-
-    @Override
-    protected ScrollPanePeer createScrollPane(ScrollPane a0) throws HeadlessException {
-        throw new HeadlessException();
-    }
-
-    @Override
-    protected TextAreaPeer createTextArea(TextArea a0) throws HeadlessException {
-        throw new HeadlessException();
-    }
-
-    @Override
-    protected TextFieldPeer createTextField(TextField a0) throws HeadlessException {
-        throw new HeadlessException();
-    }
-
-    @Override
-    protected WindowPeer createWindow(Window a0) throws HeadlessException {
-        throw new HeadlessException();
-    }
-    */
+     * @Override protected ButtonPeer createButton(Button a0) throws
+     * HeadlessException { throw new HeadlessException(); }
+     * @Override protected CheckboxPeer createCheckbox(Checkbox a0) throws
+     * HeadlessException { throw new HeadlessException(); }
+     * @Override protected CheckboxMenuItemPeer
+     * createCheckboxMenuItem(CheckboxMenuItem a0) throws HeadlessException {
+     * throw new HeadlessException(); }
+     * @Override protected ChoicePeer createChoice(Choice a0) throws
+     * HeadlessException { throw new HeadlessException(); } public Cursor
+     * createCustomCursor(Image img, Point hotSpot, String name) throws
+     * HeadlessException { throw new HeadlessException(); }
+     * @Override protected DialogPeer createDialog(Dialog a0) throws
+     * HeadlessException { throw new HeadlessException(); }
+     * @Override public <T extends DragGestureRecognizer> T
+     * createDragGestureRecognizer( Class<T> recognizerAbstractClass, DragSource
+     * ds, Component c, int srcActions, DragGestureListener dgl) { return null;
+     * }
+     * @Override public DragSourceContextPeer
+     * createDragSourceContextPeer(DragGestureEvent dge) throws
+     * InvalidDnDOperationException { throw new InvalidDnDOperationException();
+     * }
+     * @Override protected FileDialogPeer createFileDialog(FileDialog a0) throws
+     * HeadlessException { throw new HeadlessException(); }
+     * @Override protected FramePeer createFrame(Frame a0) throws
+     * HeadlessException { throw new HeadlessException(); }
+     * @Override protected LabelPeer createLabel(Label a0) throws
+     * HeadlessException { throw new HeadlessException(); }
+     * @Override protected ListPeer createList(List a0) throws HeadlessException
+     * { throw new HeadlessException(); }
+     * @Override protected MenuPeer createMenu(Menu a0) throws HeadlessException
+     * { throw new HeadlessException(); }
+     * @Override protected MenuBarPeer createMenuBar(MenuBar a0) throws
+     * HeadlessException { throw new HeadlessException(); }
+     * @Override protected MenuItemPeer createMenuItem(MenuItem a0) throws
+     * HeadlessException { throw new HeadlessException(); }
+     * @Override protected PopupMenuPeer createPopupMenu(PopupMenu a0) throws
+     * HeadlessException { throw new HeadlessException(); }
+     * @Override protected ScrollbarPeer createScrollbar(Scrollbar a0) throws
+     * HeadlessException { throw new HeadlessException(); }
+     * @Override protected ScrollPanePeer createScrollPane(ScrollPane a0) throws
+     * HeadlessException { throw new HeadlessException(); }
+     * @Override protected TextAreaPeer createTextArea(TextArea a0) throws
+     * HeadlessException { throw new HeadlessException(); }
+     * @Override protected TextFieldPeer createTextField(TextField a0) throws
+     * HeadlessException { throw new HeadlessException(); }
+     * @Override protected WindowPeer createWindow(Window a0) throws
+     * HeadlessException { throw new HeadlessException(); }
+     */
 
     @Override
     public Dimension getBestCursorSize(int prefWidth, int prefHeight) throws HeadlessException {
@@ -186,25 +125,18 @@
     public int getMenuShortcutKeyMask() throws HeadlessException {
         throw new HeadlessException();
     }
-    
-    //???AWT
+
+    // ???AWT
     /*
-    @Override
-    NativeEventQueue getNativeEventQueue() throws HeadlessException {
-        throw new HeadlessException();
-    }
-    
-    @Override
-    public PrintJob getPrintJob(Frame frame, String jobtitle, JobAttributes jobAttributes, 
-            PageAttributes pageAttributes) throws IllegalArgumentException {
-        throw new IllegalArgumentException();        
-    }
-    
-    @Override
-    public PrintJob getPrintJob(Frame frame, String jobtitle, Properties props) throws NullPointerException  {
-        throw new NullPointerException();
-    }
-    */
+     * @Override NativeEventQueue getNativeEventQueue() throws HeadlessException
+     * { throw new HeadlessException(); }
+     * @Override public PrintJob getPrintJob(Frame frame, String jobtitle,
+     * JobAttributes jobAttributes, PageAttributes pageAttributes) throws
+     * IllegalArgumentException { throw new IllegalArgumentException(); }
+     * @Override public PrintJob getPrintJob(Frame frame, String jobtitle,
+     * Properties props) throws NullPointerException { throw new
+     * NullPointerException(); }
+     */
 
     @Override
     public Insets getScreenInsets(GraphicsConfiguration gc) throws HeadlessException {
@@ -214,44 +146,37 @@
     @Override
     public int getScreenResolution() throws HeadlessException {
         throw new HeadlessException();
-    }    
+    }
 
     @Override
     public Dimension getScreenSize() throws HeadlessException {
         throw new HeadlessException();
     }
-    
-    //???AWT
+
+    // ???AWT
     /*
-    @Override
-    public Clipboard getSystemClipboard() throws HeadlessException {
-        throw new HeadlessException();
-    }    
-    
-    @Override
-    public Clipboard getSystemSelection() throws HeadlessException {
-        throw new HeadlessException();
-    }
-    
-    @Override
-    WindowFactory getWindowFactory() throws HeadlessException {
-        throw new HeadlessException();
-    }
-    */
+     * @Override public Clipboard getSystemClipboard() throws HeadlessException
+     * { throw new HeadlessException(); }
+     * @Override public Clipboard getSystemSelection() throws HeadlessException
+     * { throw new HeadlessException(); }
+     * @Override WindowFactory getWindowFactory() throws HeadlessException {
+     * throw new HeadlessException(); }
+     */
 
     @Override
     protected void init() {
         lockAWT();
         try {
             ComponentInternals.setComponentInternals(new ComponentInternalsImpl());
-            //???AWT: new EventQueue(this); // create the system EventQueue
-            //???AWT: dispatcher = new Dispatcher(this);
+            // ???AWT: new EventQueue(this); // create the system EventQueue
+            // ???AWT: dispatcher = new Dispatcher(this);
             desktopProperties = new HashMap<String, Object>();
-            //???AWT: desktopPropsSupport = new PropertyChangeSupport(this);
-//          ???AWT: awtEventsManager = new AWTEventsManager();
-//          ???AWT: dispatchThread = new HeadlessEventDispatchThread(this, dispatcher);            
-//          ???AWT: dtk = DTK.getDTK();
-            dispatchThread.start();            
+            // ???AWT: desktopPropsSupport = new PropertyChangeSupport(this);
+            // ???AWT: awtEventsManager = new AWTEventsManager();
+            // ???AWT: dispatchThread = new HeadlessEventDispatchThread(this,
+            // dispatcher);
+            // ???AWT: dtk = DTK.getDTK();
+            dispatchThread.start();
         } finally {
             unlockAWT();
         }
@@ -284,8 +209,8 @@
     }
 
     @Override
-    Map<java.awt.font.TextAttribute, ?> mapInputMethodHighlightImpl(
-            InputMethodHighlight highlight) throws HeadlessException {
+    Map<java.awt.font.TextAttribute, ?> mapInputMethodHighlightImpl(InputMethodHighlight highlight)
+            throws HeadlessException {
         throw new HeadlessException();
     }
 
diff --git a/awt/java/awt/IllegalComponentStateException.java b/awt/java/awt/IllegalComponentStateException.java
index 21dc35f..bed1729 100644
--- a/awt/java/awt/IllegalComponentStateException.java
+++ b/awt/java/awt/IllegalComponentStateException.java
@@ -18,34 +18,38 @@
  * @author Michael Danilov
  * @version $Revision$
  */
+
 package java.awt;
 
 /**
- * The IllegalComponentStateException class is used to provide 
- * notification that AWT component is not in an appropriate state 
- * for the requested operation.
+ * The IllegalComponentStateException class is used to provide notification that
+ * AWT component is not in an appropriate state for the requested operation.
+ * 
+ * @since Android 1.0
  */
 public class IllegalComponentStateException extends IllegalStateException {
 
-    /** The Constant serialVersionUID. */
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = -1889339587208144238L;
 
     /**
-     * Instantiates a new IllegalComponentStateException with
-     * the specified message.
+     * Instantiates a new IllegalComponentStateException with the specified
+     * message.
      * 
-     * @param s the String message which describes the exception.
+     * @param s
+     *            the String message which describes the exception.
      */
     public IllegalComponentStateException(String s) {
         super(s);
     }
 
     /**
-     * Instantiates a new IllegalComponentStateException without
-     * detailed message.
+     * Instantiates a new IllegalComponentStateException without detailed
+     * message.
      */
     public IllegalComponentStateException() {
     }
 
 }
-
diff --git a/awt/java/awt/Image.java b/awt/java/awt/Image.java
index c217e38..7ae3ed8 100644
--- a/awt/java/awt/Image.java
+++ b/awt/java/awt/Image.java
@@ -18,6 +18,7 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.awt.image.AreaAveragingScaleFilter;
@@ -30,64 +31,67 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Image abstract class represents the graphic images. 
+ * The Image abstract class represents the graphic images.
+ * 
+ * @since Android 1.0
  */
 public abstract class Image {
 
-    /** 
-     * The UndefinedProperty object should be returned if
-     * property is not defined for a particular image. 
+    /**
+     * The UndefinedProperty object should be returned if property is not
+     * defined for a particular image.
      */
-    public static final Object UndefinedProperty = new Object();  //$NON-LOCK-1$
+    public static final Object UndefinedProperty = new Object(); // $NON-LOCK-1$
 
-    /** 
-     * The Constant SCALE_DEFAULT indicates the default image
-     * scaling algorithm. 
+    /**
+     * The Constant SCALE_DEFAULT indicates the default image scaling algorithm.
      */
     public static final int SCALE_DEFAULT = 1;
 
-    /** 
-     * The Constant SCALE_FAST indicates an image scaling algorithm which 
-     * places a higher priority on scaling speed than on the image's smoothness. 
+    /**
+     * The Constant SCALE_FAST indicates an image scaling algorithm which places
+     * a higher priority on scaling speed than on the image's smoothness.
      */
     public static final int SCALE_FAST = 2;
 
-    /** 
-     * The Constant SCALE_SMOOTH indicates an image scaling algorithm which 
-     * places a higher priority on image smoothness than on scaling speed. 
+    /**
+     * The Constant SCALE_SMOOTH indicates an image scaling algorithm which
+     * places a higher priority on image smoothness than on scaling speed.
      */
     public static final int SCALE_SMOOTH = 4;
 
-    /** 
-     * The Constant SCALE_REPLICATE indicates the image scaling 
-     * algorithm in the ReplicateScaleFilter class. 
+    /**
+     * The Constant SCALE_REPLICATE indicates the image scaling algorithm in the
+     * ReplicateScaleFilter class.
      */
     public static final int SCALE_REPLICATE = 8;
 
-    /** 
-     * The Constant SCALE_AREA_AVERAGING indicates  
-     * the area averaging image scaling algorithm. 
+    /**
+     * The Constant SCALE_AREA_AVERAGING indicates the area averaging image
+     * scaling algorithm.
      */
     public static final int SCALE_AREA_AVERAGING = 16;
 
-    /** 
-     * The acceleration priority indicates image acceleration.   
+    /**
+     * The acceleration priority indicates image acceleration.
      */
     protected float accelerationPriority = 0.5f;
 
-    /** The Constant capabilities. */
+    /**
+     * The Constant capabilities.
+     */
     private static final ImageCapabilities capabilities = new ImageCapabilities(false);
 
     /**
-     * Gets the image property with the specified name.
-     * The UndefinedProperty object should be return if the property is 
-     * not specified for this image.  The return value should be null if the
-     * property is currently unknown yet and the specified ImageObserver is
-     * to be notified later. 
+     * Gets the image property with the specified name. The UndefinedProperty
+     * object should be return if the property is not specified for this image.
+     * The return value should be null if the property is currently unknown yet
+     * and the specified ImageObserver is to be notified later.
      * 
-     * @param name the name of image's property.
-     * @param observer the ImageObserver.
-     * 
+     * @param name
+     *            the name of image's property.
+     * @param observer
+     *            the ImageObserver.
      * @return the Object which represents value of the specified property.
      */
     public abstract Object getProperty(String name, ImageObserver observer);
@@ -100,39 +104,40 @@
     public abstract ImageProducer getSource();
 
     /**
-     * Gets the width of this image. The specified ImageObserver object 
-     * is notified when the width of this image is available.
+     * Gets the width of this image. The specified ImageObserver object is
+     * notified when the width of this image is available.
      * 
-     * @param observer the ImageObserver object which is 
-     * is notified when the width of this image is available.
-     * 
-     * @return the width of image, or -1 if the width of this image 
-     * is not available.
+     * @param observer
+     *            the ImageObserver object which is is notified when the width
+     *            of this image is available.
+     * @return the width of image, or -1 if the width of this image is not
+     *         available.
      */
     public abstract int getWidth(ImageObserver observer);
 
     /**
-     * Gets the height of this image. The specified ImageObserver object 
-     * is notified when the height of this image is available.
+     * Gets the height of this image. The specified ImageObserver object is
+     * notified when the height of this image is available.
      * 
-     * @param observer the ImageObserver object which is 
-     * is notified when the height of this image is available.
-     * 
-     * @return the height of image, or -1 if the height of this image 
-     * is not available.
+     * @param observer
+     *            the ImageObserver object which is is notified when the height
+     *            of this image is available.
+     * @return the height of image, or -1 if the height of this image is not
+     *         available.
      */
     public abstract int getHeight(ImageObserver observer);
 
     /**
-     * Gets the scaled instance of this Image. This method returns 
-     * an Image object constructed from the source of this image 
-     * with the specified width, height, and applied scaling
-     * alghorithm.
+     * Gets the scaled instance of this Image. This method returns an Image
+     * object constructed from the source of this image with the specified
+     * width, height, and applied scaling algorithm.
      * 
-     * @param width the width of scaled Image. 
-     * @param height the height of scaled Image.
-     * @param hints the constant which indicates scaling algorithm. 
-     * 
+     * @param width
+     *            the width of scaled Image.
+     * @param height
+     *            the height of scaled Image.
+     * @param hints
+     *            the constant which indicates scaling algorithm.
      * @return the scaled Image.
      */
     public Image getScaledInstance(int width, int height, int hints) {
@@ -147,17 +152,16 @@
     }
 
     /**
-     * Gets a Graphics object for rendering this image. 
-     * This method can be used for off-screen images.
+     * Gets a Graphics object for rendering this image. This method can be used
+     * for off-screen images.
      * 
      * @return a Graphics object for rendering to this image.
      */
     public abstract Graphics getGraphics();
 
     /**
-     * Flushes resources which are used by this Image object. 
-     * This method resets the image to the reconstructered state
-     * from the image's source.
+     * Flushes resources which are used by this Image object. This method resets
+     * the image to the reconstructed state from the image's source.
      */
     public abstract void flush();
 
@@ -171,10 +175,10 @@
     }
 
     /**
-     * Sets the acceleration priority for this image.  
-     *  
-     * @param priority the new acceleration priority (value in the
-     * range 0-1).
+     * Sets the acceleration priority for this image.
+     * 
+     * @param priority
+     *            the new acceleration priority (value in the range 0-1).
      */
     public void setAccelerationPriority(float priority) {
         if (priority < 0 || priority > 1) {
@@ -185,19 +189,17 @@
     }
 
     /**
-     * Gets an ImageCapabilities object of this Image object
-     * for the specified GraphicsConfiguration. 
+     * Gets an ImageCapabilities object of this Image object for the specified
+     * GraphicsConfiguration.
      * 
-     * @param gc the specified GraphicsConfiguration object 
-     * (null value means default GraphicsConfiguration).
-     * 
-     * @return an ImageCapabilities object of this Image object
-     * for the specified GraphicsConfiguration.
+     * @param gc
+     *            the specified GraphicsConfiguration object (null value means
+     *            default GraphicsConfiguration).
+     * @return an ImageCapabilities object of this Image object for the
+     *         specified GraphicsConfiguration.
      */
     public ImageCapabilities getCapabilities(GraphicsConfiguration gc) {
         // Note: common image is not accelerated.
         return capabilities;
     }
 }
-
-
diff --git a/awt/java/awt/ImageCapabilities.java b/awt/java/awt/ImageCapabilities.java
index 6e9ecfc..c6d5946 100644
--- a/awt/java/awt/ImageCapabilities.java
+++ b/awt/java/awt/ImageCapabilities.java
@@ -18,22 +18,27 @@
  * @author Alexey A. Petrenko
  * @version $Revision$
  */
+
 package java.awt;
 
 /**
  * The ImageCapabilities class gives information about an image's capabilities.
+ * 
+ * @since Android 1.0
  */
 public class ImageCapabilities implements Cloneable {
-    
-    /** The accelerated. */
+
+    /**
+     * The accelerated.
+     */
     private final boolean accelerated;
 
     /**
-     * Instantiates a new ImageCapabilities with the specified
-     * acceleration flag which indicates whether acceleration
-     * is desired or not.
+     * Instantiates a new ImageCapabilities with the specified acceleration flag
+     * which indicates whether acceleration is desired or not.
      * 
-     * @param accelerated the accelerated flag.
+     * @param accelerated
+     *            the accelerated flag.
      */
     public ImageCapabilities(boolean accelerated) {
         this.accelerated = accelerated;
@@ -50,23 +55,22 @@
     }
 
     /**
-     * Returne true if the Image of this ImageCapabilities is or can be
+     * Returns true if the Image of this ImageCapabilities is or can be
      * accelerated.
-     *  
+     * 
      * @return true, if the Image of this ImageCapabilities is or can be
-     * accelerated, false otherwise.
+     *         accelerated, false otherwise.
      */
     public boolean isAccelerated() {
         return accelerated;
     }
 
     /**
-     * Returns true if this ImageCapabilities applies to
-     * the VolatileImage which can lose its surfaces.
+     * Returns true if this ImageCapabilities applies to the VolatileImage which
+     * can lose its surfaces.
      * 
-     * @return true if this ImageCapabilities applies to
-     * the VolatileImage which can lose its surfaces, 
-     * false otherwise.
+     * @return true if this ImageCapabilities applies to the VolatileImage which
+     *         can lose its surfaces, false otherwise.
      */
     public boolean isTrueVolatile() {
         return true;
diff --git a/awt/java/awt/Insets.java b/awt/java/awt/Insets.java
index 61f3fd8..04f198c 100644
--- a/awt/java/awt/Insets.java
+++ b/awt/java/awt/Insets.java
@@ -18,44 +18,49 @@
  * @author Dmitry A. Durnev
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.io.Serializable;
 
 import org.apache.harmony.misc.HashCode;
 
-
 /**
- * The Insets class represents the borders of a container. 
- * This class describes the space that a container should leave at each edge:
- * the top, the bottom, the right side, and the left side. 
- * The space can be filled with a border, a blank space, or a title.
+ * The Insets class represents the borders of a container. This class describes
+ * the space that a container should leave at each edge: the top, the bottom,
+ * the right side, and the left side. The space can be filled with a border, a
+ * blank space, or a title.
+ * 
+ * @since Android 1.0
  */
 public class Insets implements Cloneable, Serializable {
 
-    /** The Constant serialVersionUID. */
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = -2272572637695466749L;
 
     /**
-     * The top inset indicates the size of the space added to the 
-     * top of the rectangle.
+     * The top inset indicates the size of the space added to the top of the
+     * rectangle.
      */
     public int top;
 
-    /** 
-     * The left inset indicates the size of the space added to the 
-     * left side of the rectangle.
+    /**
+     * The left inset indicates the size of the space added to the left side of
+     * the rectangle.
      */
     public int left;
 
-    /** 
-     * The bottom inset indicates the size of the space subtracted from 
-     * the bottom of the rectangle.
+    /**
+     * The bottom inset indicates the size of the space subtracted from the
+     * bottom of the rectangle.
      */
     public int bottom;
 
-    /** The right inset indicates the size of the space subtracted from 
-     * the right side of the rectangle. 
+    /**
+     * The right inset indicates the size of the space subtracted from the right
+     * side of the rectangle.
      */
     public int right;
 
@@ -63,10 +68,14 @@
      * Instantiates a new Inset object with the specified top, left, bottom,
      * right parameters.
      * 
-     * @param top the top inset.
-     * @param left the left inset.
-     * @param bottom the bottom inset.
-     * @param right the right inset.
+     * @param top
+     *            the top inset.
+     * @param left
+     *            the left inset.
+     * @param bottom
+     *            the bottom inset.
+     * @param right
+     *            the right inset.
      */
     public Insets(int top, int left, int bottom, int right) {
         setValues(top, left, bottom, right);
@@ -100,10 +109,10 @@
     /**
      * Checks if this Insets object is equal to the specified object.
      * 
-     * @param o the Object to be compared.
-     * 
-     * @return true, if the object is an Insets object whose data values
-     * are equal to those of this object, false otherwise.
+     * @param o
+     *            the Object to be compared.
+     * @return true, if the object is an Insets object whose data values are
+     *         equal to those of this object, false otherwise.
      */
     @Override
     public boolean equals(Object o) {
@@ -111,9 +120,8 @@
             return true;
         }
         if (o instanceof Insets) {
-            Insets i = (Insets) o;
-            return ((i.left == left) && (i.bottom == bottom) &&
-                    (i.right == right) && (i.top == top));
+            Insets i = (Insets)o;
+            return ((i.left == left) && (i.bottom == bottom) && (i.right == right) && (i.top == top));
         }
         return false;
     }
@@ -125,23 +133,26 @@
      */
     @Override
     public String toString() {
-        /* The format is based on 1.5 release behavior 
-         * which can be revealed by the following code:
-         * System.out.println(new Insets(1, 2, 3, 4));
+        /*
+         * The format is based on 1.5 release behavior which can be revealed by
+         * the following code: System.out.println(new Insets(1, 2, 3, 4));
          */
 
-        return (getClass().getName() +
-                "[left=" + left + ",top=" + top + //$NON-NLS-1$ //$NON-NLS-2$
-                ",right=" + right + ",bottom="  + bottom + "]"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+        return (getClass().getName() + "[left=" + left + ",top=" + top + //$NON-NLS-1$ //$NON-NLS-2$
+                ",right=" + right + ",bottom=" + bottom + "]"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
     }
 
     /**
      * Sets top, left, bottom, and right insets to the specified values.
      * 
-     * @param top the top inset.
-     * @param left the left inset.
-     * @param bottom the bottom inset.
-     * @param right the right inset.
+     * @param top
+     *            the top inset.
+     * @param left
+     *            the left inset.
+     * @param bottom
+     *            the bottom inset.
+     * @param right
+     *            the right inset.
      */
     public void set(int top, int left, int bottom, int right) {
         setValues(top, left, bottom, right);
@@ -150,10 +161,14 @@
     /**
      * Sets the values.
      * 
-     * @param top the top
-     * @param left the left
-     * @param bottom the bottom
-     * @param right the right
+     * @param top
+     *            the top.
+     * @param left
+     *            the left.
+     * @param bottom
+     *            the bottom.
+     * @param right
+     *            the right.
      */
     private void setValues(int top, int left, int bottom, int right) {
         this.top = top;
@@ -162,4 +177,3 @@
         this.right = right;
     }
 }
-
diff --git a/awt/java/awt/ItemSelectable.java b/awt/java/awt/ItemSelectable.java
index a46364b..212cf70 100644
--- a/awt/java/awt/ItemSelectable.java
+++ b/awt/java/awt/ItemSelectable.java
@@ -18,35 +18,41 @@
  * @author Michael Danilov
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.awt.event.ItemListener;
 
 /**
  * The ItemSelectable interface represents a set of items which can be selected.
+ * 
+ * @since Android 1.0
  */
 public interface ItemSelectable {
 
     /**
-     * Adds an ItemListener for receiving item events when the state of an item 
-     * is changed by the user. 
+     * Adds an ItemListener for receiving item events when the state of an item
+     * is changed by the user.
      * 
-     * @param l the ItemListener.
+     * @param l
+     *            the ItemListener.
      */
     public void addItemListener(ItemListener l);
 
     /**
-     * Gets an array of the selected objects or null if there is no selected object.
-     * 
-     * @return an array of the selected objects or null if there is no selected 
+     * Gets an array of the selected objects or null if there is no selected
      * object.
+     * 
+     * @return an array of the selected objects or null if there is no selected
+     *         object.
      */
     public Object[] getSelectedObjects();
 
     /**
      * Removes the specified ItemListener.
      * 
-     * @param l the ItemListener which will be removed.
+     * @param l
+     *            the ItemListener which will be removed.
      */
     public void removeItemListener(ItemListener l);
 
diff --git a/awt/java/awt/MenuComponent.java b/awt/java/awt/MenuComponent.java
index 9eb4f3d..9c1b120 100644
--- a/awt/java/awt/MenuComponent.java
+++ b/awt/java/awt/MenuComponent.java
@@ -21,8 +21,7 @@
 import java.awt.event.MouseEvent;
 import java.awt.peer.MenuComponentPeer;
 import java.io.Serializable;
-import java.util.Locale;
-//import javax.accessibility.Accessible;
+import java.util.Locale; //import javax.accessibility.Accessible;
 //import javax.accessibility.AccessibleComponent;
 //import javax.accessibility.AccessibleContext;
 //import javax.accessibility.AccessibleRole;
@@ -31,371 +30,172 @@
 import org.apache.harmony.awt.gl.MultiRectArea;
 import org.apache.harmony.awt.state.MenuItemState;
 import org.apache.harmony.awt.state.MenuState;
+import org.apache.harmony.luni.util.NotImplementedException;
 
 /**
- * The MenuComponent abstract class is the superclass for menu 
- * components. Menu components receive and process AWT events.
+ * The MenuComponent abstract class is the superclass for menu components. Menu
+ * components receive and process AWT events.
+ * 
+ * @since Android 1.0
  */
 public abstract class MenuComponent implements Serializable {
-    
-    /** The Constant serialVersionUID. */
+
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = -4536902356223894379L;
 
-    /** The name. */
+    /**
+     * The name.
+     */
     private String name;
 
-    /** The font. */
+    /**
+     * The font.
+     */
     private Font font;
 
-    /** The parent. */
+    /**
+     * The parent.
+     */
     MenuContainer parent;
 
-    /** The deprecated event handler. */
+    /**
+     * The deprecated event handler.
+     */
     boolean deprecatedEventHandler = true;
 
-    /** The selected item index. */
+    /**
+     * The selected item index.
+     */
     private int selectedItemIndex;
 
-    //???AWT: private AccessibleContext accessibleContext;
+    // ???AWT: private AccessibleContext accessibleContext;
 
-    /** The toolkit. */
+    /**
+     * The toolkit.
+     */
     final Toolkit toolkit = Toolkit.getDefaultToolkit();
 
-    //???AWT
+    // ???AWT
     /*
-    protected abstract class AccessibleAWTMenuComponent extends AccessibleContext implements
-            Serializable, AccessibleComponent, AccessibleSelection {
-        private static final long serialVersionUID = -4269533416223798698L;
-
-        public void addFocusListener(FocusListener listener) {
-        }
-
-        public boolean contains(Point pt) {
-            return false;
-        }
-
-        public Accessible getAccessibleAt(Point pt) {
-            return null;
-        }
-
-        public Color getBackground() {
-            return null;
-        }
-
-        public Rectangle getBounds() {
-            return null;
-        }
-
-        public Cursor getCursor() {
-            return null;
-        }
-
-        public Font getFont() {
-            return MenuComponent.this.getFont();
-        }
-
-        public FontMetrics getFontMetrics(Font font) {
-            return null;
-        }
-
-        public Color getForeground() {
-            return null;
-        }
-
-        public Point getLocation() {
-            return null;
-        }
-
-        public Point getLocationOnScreen() {
-            return null;
-        }
-
-        public Dimension getSize() {
-            return null;
-        }
-
-        public boolean isEnabled() {
-            return true; // always enabled
-        }
-
-        public boolean isFocusTraversable() {
-            return true; // always focus traversable
-        }
-
-        public boolean isShowing() {
-            return true;// always showing
-        }
-
-        public boolean isVisible() {
-            return true; // always visible
-        }
-
-        public void removeFocusListener(FocusListener listener) {
-        }
-
-        public void requestFocus() {
-        }
-
-        public void setBackground(Color color) {
-        }
-
-        public void setBounds(Rectangle rect) {
-        }
-
-        public void setCursor(Cursor cursor) {
-        }
-
-        public void setEnabled(boolean enabled) {
-        }
-
-        public void setFont(Font font) {
-            MenuComponent.this.setFont(font);
-        }
-
-        public void setForeground(Color color) {
-        }
-
-        public void setLocation(Point pt) {
-        }
-
-        public void setSize(Dimension pt) {
-        }
-
-        public void setVisible(boolean visible) {
-        }
-
-        public void addAccessibleSelection(int index) {
-        }
-
-        public void clearAccessibleSelection() {
-        }
-
-        public Accessible getAccessibleSelection(int index) {
-            return null;
-        }
-
-        public int getAccessibleSelectionCount() {
-            return 0;
-        }
-
-        public boolean isAccessibleChildSelected(int index) {
-            return false;
-        }
-
-        public void removeAccessibleSelection(int index) {
-        }
-
-        public void selectAllAccessibleSelection() {
-        }
-
-        @Override
-        public Accessible getAccessibleChild(int index) {
-            return null;
-        }
-
-        @Override
-        public int getAccessibleChildrenCount() {
-            return 0;
-        }
-
-        @Override
-        public AccessibleComponent getAccessibleComponent() {
-            return this;
-        }
-
-        @Override
-        public String getAccessibleDescription() {
-            return super.getAccessibleDescription();
-        }
-
-        @Override
-        public int getAccessibleIndexInParent() {
-            toolkit.lockAWT();
-            try {
-                Accessible aParent = getAccessibleParent();
-                int aIndex = -1;
-                if (aParent instanceof MenuComponent) {
-                    MenuComponent parent = (MenuComponent) aParent;
-                    int count = parent.getItemCount();
-                    for (int i = 0; i < count; i++) {
-                        MenuComponent comp = parent.getItem(i);
-                        if (comp instanceof Accessible) {
-                            aIndex++;
-                            if (comp == MenuComponent.this) {
-                                return aIndex;
-                            }
-                        }
-                    }
-                }
-                return -1;
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        @Override
-        public String getAccessibleName() {
-            return super.getAccessibleName();
-        }
-
-        @Override
-        public Accessible getAccessibleParent() {
-            toolkit.lockAWT();
-            try {
-                Accessible aParent = super.getAccessibleParent();
-                if (aParent != null) {
-                    return aParent;
-                }
-                MenuContainer parent = getParent();
-                if (parent instanceof Accessible) {
-                    aParent = (Accessible) parent;
-                }
-                return aParent;
-            } finally {
-                toolkit.unlockAWT();
-            }
-        }
-
-        @Override
-        public AccessibleRole getAccessibleRole() {
-            return AccessibleRole.AWT_COMPONENT;
-        }
-
-        @Override
-        public AccessibleSelection getAccessibleSelection() {
-            return this;
-        }
-
-        @Override
-        public AccessibleStateSet getAccessibleStateSet() {
-            return new AccessibleStateSet();
-        }
-
-        @Override
-        public Locale getLocale() {
-            return Locale.getDefault();
-        }
-    }
-    */
+     * protected abstract class AccessibleAWTMenuComponent extends
+     * AccessibleContext implements Serializable, AccessibleComponent,
+     * AccessibleSelection { private static final long serialVersionUID =
+     * -4269533416223798698L; public void addFocusListener(FocusListener
+     * listener) { } public boolean contains(Point pt) { return false; } public
+     * Accessible getAccessibleAt(Point pt) { return null; } public Color
+     * getBackground() { return null; } public Rectangle getBounds() { return
+     * null; } public Cursor getCursor() { return null; } public Font getFont()
+     * { return MenuComponent.this.getFont(); } public FontMetrics
+     * getFontMetrics(Font font) { return null; } public Color getForeground() {
+     * return null; } public Point getLocation() { return null; } public Point
+     * getLocationOnScreen() { return null; } public Dimension getSize() {
+     * return null; } public boolean isEnabled() { return true; // always
+     * enabled } public boolean isFocusTraversable() { return true; // always
+     * focus traversable } public boolean isShowing() { return true;// always
+     * showing } public boolean isVisible() { return true; // always visible }
+     * public void removeFocusListener(FocusListener listener) { } public void
+     * requestFocus() { } public void setBackground(Color color) { } public void
+     * setBounds(Rectangle rect) { } public void setCursor(Cursor cursor) { }
+     * public void setEnabled(boolean enabled) { } public void setFont(Font
+     * font) { MenuComponent.this.setFont(font); } public void
+     * setForeground(Color color) { } public void setLocation(Point pt) { }
+     * public void setSize(Dimension pt) { } public void setVisible(boolean
+     * visible) { } public void addAccessibleSelection(int index) { } public
+     * void clearAccessibleSelection() { } public Accessible
+     * getAccessibleSelection(int index) { return null; } public int
+     * getAccessibleSelectionCount() { return 0; } public boolean
+     * isAccessibleChildSelected(int index) { return false; } public void
+     * removeAccessibleSelection(int index) { } public void
+     * selectAllAccessibleSelection() { }
+     * @Override public Accessible getAccessibleChild(int index) { return null;
+     * }
+     * @Override public int getAccessibleChildrenCount() { return 0; }
+     * @Override public AccessibleComponent getAccessibleComponent() { return
+     * this; }
+     * @Override public String getAccessibleDescription() { return
+     * super.getAccessibleDescription(); }
+     * @Override public int getAccessibleIndexInParent() { toolkit.lockAWT();
+     * try { Accessible aParent = getAccessibleParent(); int aIndex = -1; if
+     * (aParent instanceof MenuComponent) { MenuComponent parent =
+     * (MenuComponent) aParent; int count = parent.getItemCount(); for (int i =
+     * 0; i < count; i++) { MenuComponent comp = parent.getItem(i); if (comp
+     * instanceof Accessible) { aIndex++; if (comp == MenuComponent.this) {
+     * return aIndex; } } } } return -1; } finally { toolkit.unlockAWT(); } }
+     * @Override public String getAccessibleName() { return
+     * super.getAccessibleName(); }
+     * @Override public Accessible getAccessibleParent() { toolkit.lockAWT();
+     * try { Accessible aParent = super.getAccessibleParent(); if (aParent !=
+     * null) { return aParent; } MenuContainer parent = getParent(); if (parent
+     * instanceof Accessible) { aParent = (Accessible) parent; } return aParent;
+     * } finally { toolkit.unlockAWT(); } }
+     * @Override public AccessibleRole getAccessibleRole() { return
+     * AccessibleRole.AWT_COMPONENT; }
+     * @Override public AccessibleSelection getAccessibleSelection() { return
+     * this; }
+     * @Override public AccessibleStateSet getAccessibleStateSet() { return new
+     * AccessibleStateSet(); }
+     * @Override public Locale getLocale() { return Locale.getDefault(); } }
+     */
 
     /**
-     * The accessor to MenuComponent internal state,
-     * utilized by the visual theme.
+     * The accessor to MenuComponent internal state, utilized by the visual
+     * theme.
      * 
-     * @throws HeadlessException the headless exception
+     * @throws HeadlessException
+     *             the headless exception.
      */
-    //???AWT
+    // ???AWT
     /*
-    class State implements MenuState {
-        Dimension size;
+     * class State implements MenuState { Dimension size; Dimension getSize() {
+     * if (size == null) { calculate(); } return size; } public int getWidth() {
+     * return getSize().width; } public int getHeight() { return
+     * getSize().height; } public Font getFont() { return
+     * MenuComponent.this.getFont(); } public int getItemCount() { return
+     * MenuComponent.this.getItemCount(); } public int getSelectedItemIndex() {
+     * return MenuComponent.this.getSelectedItemIndex(); } public boolean
+     * isFontSet() { return MenuComponent.this.isFontSet(); }
+     * @SuppressWarnings("deprecation") public FontMetrics getFontMetrics(Font
+     * f) { return MenuComponent.this.toolkit.getFontMetrics(f); } public Point
+     * getLocation() { return MenuComponent.this.getLocation(); } public
+     * MenuItemState getItem(int index) { MenuItem item =
+     * MenuComponent.this.getItem(index); return item.itemState; } public void
+     * setSize(int w, int h) { this.size = new Dimension(w, h); } void
+     * calculate() { size = new Dimension();
+     * size.setSize(toolkit.theme.calculateMenuSize(this)); } void reset() { for
+     * (int i = 0; i < getItemCount(); i++) { ((MenuItem.State)
+     * getItem(i)).reset(); } } }
+     */
 
-        Dimension getSize() {
-            if (size == null) {
-                calculate();
-            }
-            return size;
-        }
-
-        public int getWidth() {
-            return getSize().width;
-        }
-
-        public int getHeight() {
-            return getSize().height;
-        }
-
-        public Font getFont() {
-            return MenuComponent.this.getFont();
-        }
-
-        public int getItemCount() {
-            return MenuComponent.this.getItemCount();
-        }
-
-        public int getSelectedItemIndex() {
-            return MenuComponent.this.getSelectedItemIndex();
-        }
-
-        public boolean isFontSet() {
-            return MenuComponent.this.isFontSet();
-        }
-
-        @SuppressWarnings("deprecation")
-        public FontMetrics getFontMetrics(Font f) {
-            return MenuComponent.this.toolkit.getFontMetrics(f);
-        }
-
-        public Point getLocation() {
-            return MenuComponent.this.getLocation();
-        }
-
-        public MenuItemState getItem(int index) {
-            MenuItem item = MenuComponent.this.getItem(index);
-            return item.itemState;
-        }
-
-        public void setSize(int w, int h) {
-            this.size = new Dimension(w, h);
-        }
-
-        void calculate() {
-            size = new Dimension();
-            size.setSize(toolkit.theme.calculateMenuSize(this));
-        }
-
-        void reset() {
-            for (int i = 0; i < getItemCount(); i++) {
-                ((MenuItem.State) getItem(i)).reset();
-            }
-        }
-
-    }
-    */
-    
     /**
-     * Pop-up box for menu. It transfers the paint events, 
-     * keyboard and mouse events to the menu component itself
+     * Pop-up box for menu. It transfers the paint events, keyboard and mouse
+     * events to the menu component itself.
      */
-    //???AWT
+    // ???AWT
     /*
-    class MenuPopupBox extends PopupBox {
-        private final Point lastMousePos = new Point();
+     * class MenuPopupBox extends PopupBox { private final Point lastMousePos =
+     * new Point();
+     * @Override boolean isMenu() { return true; }
+     * @Override void paint(Graphics gr) { MenuComponent.this.paint(gr); }
+     * @Override void onKeyEvent(int eventId, int vKey, long when, int
+     * modifiers) { MenuComponent.this.onKeyEvent(eventId, vKey, when,
+     * modifiers); }
+     * @Override void onMouseEvent(int eventId, Point where, int mouseButton,
+     * long when, int modifiers, int wheelRotation) { // prevent conflict of
+     * mouse and keyboard // when sub-menu drops down due to keyboard navigation
+     * if (lastMousePos.equals(where) && (eventId == MouseEvent.MOUSE_MOVED ||
+     * eventId == MouseEvent.MOUSE_ENTERED)) { return; }
+     * lastMousePos.setLocation(where); MenuComponent.this.onMouseEvent(eventId,
+     * where, mouseButton, when, modifiers); } }
+     */
 
-        @Override
-        boolean isMenu() {
-            return true;
-        }
-
-        @Override
-        void paint(Graphics gr) {
-            MenuComponent.this.paint(gr);
-        }
-
-        @Override
-        void onKeyEvent(int eventId, int vKey, long when, int modifiers) {
-            MenuComponent.this.onKeyEvent(eventId, vKey, when, modifiers);
-        }
-
-        @Override
-        void onMouseEvent(int eventId, Point where, int mouseButton, long when, int modifiers,
-                int wheelRotation) {
-            // prevent conflict of mouse and keyboard
-            // when sub-menu drops down due to keyboard navigation
-            if (lastMousePos.equals(where)
-                    && (eventId == MouseEvent.MOUSE_MOVED || eventId == MouseEvent.MOUSE_ENTERED)) {
-                return;
-            }
-            lastMousePos.setLocation(where);
-            MenuComponent.this.onMouseEvent(eventId, where, mouseButton, when, modifiers);
-        }
-    }
-    */
-    
     /**
      * Instantiates a new MenuComponent object.
      * 
-     * @throws HeadlessException if the graphical interface
-     * environment can't support MenuComponents
+     * @throws HeadlessException
+     *             if the graphical interface environment can't support
+     *             MenuComponents.
      */
     public MenuComponent() throws HeadlessException {
         toolkit.lockAWT();
@@ -438,9 +238,9 @@
     }
 
     /**
-     * Gets the Parent menu Container .
+     * Gets the parent menu container.
      * 
-     * @return the parent
+     * @return the parent.
      */
     public MenuContainer getParent() {
         toolkit.lockAWT();
@@ -454,7 +254,8 @@
     /**
      * Sets the name of the MenuComponent to the specified string.
      * 
-     * @param name the new name of the MenuComponent object. 
+     * @param name
+     *            the new name of the MenuComponent object.
      */
     public void setName(String name) {
         toolkit.lockAWT();
@@ -468,7 +269,8 @@
     /**
      * Dispatches AWT event.
      * 
-     * @param event the AWTEvent.
+     * @param event
+     *            the AWTEvent.
      */
     public final void dispatchEvent(AWTEvent event) {
         toolkit.lockAWT();
@@ -485,7 +287,8 @@
     /**
      * Post deprecated event.
      * 
-     * @param event the event
+     * @param event
+     *            the event.
      */
     void postDeprecatedEvent(AWTEvent event) {
         Event evt = event.getEvent();
@@ -495,11 +298,12 @@
     }
 
     /**
-     * Gets the peer of the MenuComponent; an application must not
-     * use this method directly.
+     * Gets the peer of the MenuComponent; an application must not use this
+     * method directly.
      * 
      * @return the MenuComponentPeer object.
-     *
+     * @throws NotImplementedException
+     *             if this method is not implemented by a subclass.
      * @deprecated an application must not use this method directly.
      */
     @Deprecated
@@ -527,11 +331,9 @@
     /**
      * Posts the Event to the MenuComponent.
      * 
-     * @param e the Event.
-     * 
-     * @return true, if the event is posted successfully; 
-     * false otherwise.
-     * 
+     * @param e
+     *            the Event.
+     * @return true, if the event is posted successfully, false otherwise.
      * @deprecated Replaced dispatchEvent method.
      */
     @SuppressWarnings("deprecation")
@@ -551,8 +353,7 @@
     /**
      * Returns the string representation of the MenuComponent state.
      * 
-     * @return returns the string representation of the MenuComponent
-     * state.
+     * @return returns the string representation of the MenuComponent state.
      */
     protected String paramString() {
         toolkit.lockAWT();
@@ -563,20 +364,13 @@
         }
     }
 
-    //???AWT
+    // ???AWT
     /*
-    public AccessibleContext getAccessibleContext() {
-        toolkit.lockAWT();
-        try {
-            if (accessibleContext == null) {
-                accessibleContext = createAccessibleContext();
-            }
-            return accessibleContext;
-        } finally {
-            toolkit.unlockAWT();
-        }
-    }
-    */
+     * public AccessibleContext getAccessibleContext() { toolkit.lockAWT(); try
+     * { if (accessibleContext == null) { accessibleContext =
+     * createAccessibleContext(); } return accessibleContext; } finally {
+     * toolkit.unlockAWT(); } }
+     */
 
     /**
      * Gets the font of the MenuComponent object.
@@ -605,13 +399,13 @@
      */
     boolean isFontSet() {
         return font != null
-                || ((parent instanceof MenuComponent) && ((MenuComponent) parent).isFontSet());
+                || ((parent instanceof MenuComponent) && ((MenuComponent)parent).isFontSet());
     }
 
     /**
      * Checks for default font.
      * 
-     * @return true, if successful
+     * @return true, if successful.
      */
     boolean hasDefaultFont() {
         return false;
@@ -620,7 +414,8 @@
     /**
      * Processes an AWTEevent on this menu component.
      * 
-     * @param event the AWTEvent.
+     * @param event
+     *            the AWTEvent.
      */
     protected void processEvent(AWTEvent event) {
         toolkit.lockAWT();
@@ -645,7 +440,8 @@
     /**
      * Sets the Font for this MenuComponent object.
      * 
-     * @param font the new Font to be used for this MenuComponent.
+     * @param font
+     *            the new Font to be used for this MenuComponent.
      */
     public void setFont(Font font) {
         toolkit.lockAWT();
@@ -659,7 +455,8 @@
     /**
      * Sets the parent.
      * 
-     * @param parent the new parent
+     * @param parent
+     *            the new parent.
      */
     void setParent(MenuContainer parent) {
         this.parent = parent;
@@ -668,7 +465,7 @@
     /**
      * Gets the location.
      * 
-     * @return the location
+     * @return the location.
      */
     Point getLocation() {
         // to be overridden
@@ -678,7 +475,7 @@
     /**
      * Gets the width.
      * 
-     * @return the width
+     * @return the width.
      */
     int getWidth() {
         // to be overridden
@@ -688,7 +485,7 @@
     /**
      * Gets the height.
      * 
-     * @return the height
+     * @return the height.
      */
     int getHeight() {
         // to be overridden
@@ -698,31 +495,19 @@
     /**
      * Recursively find the menu item for a menu shortcut.
      * 
-     * @param gr the gr
-     * 
-     * @return the menu item;
-     * or null if the item is not available for this shortcut
+     * @param gr
+     *            the gr.
+     * @return the menu item; or null if the item is not available for this
+     *         shortcut.
      */
-    //???AWT
+    // ???AWT
     /*
-    MenuItem getShortcutMenuItemImpl(MenuShortcut ms) {
-        if (ms == null) {
-            return null;
-        }
-        for (int i = 0; i < getItemCount(); i++) {
-            MenuItem mi = getItem(i);
-            if (mi instanceof Menu) {
-                mi = ((Menu) mi).getShortcutMenuItemImpl(ms);
-                if (mi != null) {
-                    return mi;
-                }
-            } else if (ms.equals(mi.getShortcut())) {
-                return mi;
-            }
-        }
-        return null;
-    }
-    */
+     * MenuItem getShortcutMenuItemImpl(MenuShortcut ms) { if (ms == null) {
+     * return null; } for (int i = 0; i < getItemCount(); i++) { MenuItem mi =
+     * getItem(i); if (mi instanceof Menu) { mi = ((Menu)
+     * mi).getShortcutMenuItemImpl(ms); if (mi != null) { return mi; } } else if
+     * (ms.equals(mi.getShortcut())) { return mi; } } return null; }
+     */
 
     void paint(Graphics gr) {
         gr.setColor(Color.LIGHT_GRAY);
@@ -733,11 +518,16 @@
     /**
      * Mouse events handler.
      * 
-     * @param eventId - one of the MouseEvent.MOUSE_* constants
-     * @param where - mouse location
-     * @param mouseButton - mouse button that was pressed or released
-     * @param when - event time
-     * @param modifiers - input event modifiers
+     * @param eventId
+     *            one of the MouseEvent.MOUSE_* constants.
+     * @param where
+     *            mouse location.
+     * @param mouseButton
+     *            mouse button that was pressed or released.
+     * @param when
+     *            event time.
+     * @param modifiers
+     *            input event modifiers.
      */
     void onMouseEvent(int eventId, Point where, int mouseButton, long when, int modifiers) {
         // to be overridden
@@ -746,159 +536,109 @@
     /**
      * Keyboard event handler.
      * 
-     * @param eventId - one of the KeyEvent.KEY_* constants
-     * @param vKey - the key code
-     * @param when - event time
-     * @param modifiers - input event modifiers
+     * @param eventId
+     *            one of the KeyEvent.KEY_* constants.
+     * @param vKey
+     *            the key code.
+     * @param when
+     *            event time.
+     * @param modifiers
+     *            input event modifiers.
      */
     void onKeyEvent(int eventId, int vKey, long when, int modifiers) {
         // to be overridden
     }
 
     /**
-     * Post the ActionEvent or ItemEvent,
-     * depending on type of the menu item.
+     * Post the ActionEvent or ItemEvent, depending on type of the menu item.
      * 
-     * @param index the index
+     * @param index
+     *            the index.
+     * @return the item rect.
+     */
+    // ???AWT
+    /*
+     * void fireItemAction(int item, long when, int modifiers) { MenuItem mi =
+     * getItem(item); mi.itemSelected(when, modifiers); } MenuItem getItem(int
+     * index) { // to be overridden return null; } int getItemCount() { return
+     * 0; }
+     */
+
+    /**
+     * @return The sub-menu of currently selecetd item, or null if such a
+     *         sub-menu is not available.
+     */
+    // ???AWT
+    /*
+     * Menu getSelectedSubmenu() { if (selectedItemIndex < 0) { return null; }
+     * MenuItem item = getItem(selectedItemIndex); return (item instanceof Menu)
+     * ? (Menu) item : null; }
+     */
+
+    /**
+     * Convenience method for selectItem(index, true).
+     */
+    // ???AWT
+    /*
+     * void selectItem(int index) { selectItem(index, true); }
+     */
+
+    /**
+     * Change the selection in the menu.
      * 
-     * @return the item rect
+     * @param index
+     *            new selecetd item's index.
+     * @param showSubMenu
+     *            if new selected item has a sub-menu, should that sub-menu be
+     *            displayed.
      */
-    //???AWT
+    // ???AWT
     /*
-    void fireItemAction(int item, long when, int modifiers) {
-        MenuItem mi = getItem(item);
-        mi.itemSelected(when, modifiers);
-    }
-
-    MenuItem getItem(int index) {
-        // to be overridden
-        return null;
-    }
-
-    int getItemCount() {
-        return 0;
-    }
-    */
-
-    /**
-     * @return The sub-menu of currently selecetd item, 
-     * or null if such a sub-menu is not available 
+     * void selectItem(int index, boolean showSubMenu) { if (selectedItemIndex
+     * == index) { return; } if (selectedItemIndex >= 0 &&
+     * getItem(selectedItemIndex) instanceof Menu) { ((Menu)
+     * getItem(selectedItemIndex)).hide(); } MultiRectArea clip =
+     * getUpdateClip(index, selectedItemIndex); selectedItemIndex = index;
+     * Graphics gr = getGraphics(clip); if (gr != null) { paint(gr); } if
+     * (showSubMenu) { showSubMenu(selectedItemIndex); } }
      */
-    //???AWT
-    /*
-    Menu getSelectedSubmenu() {
-        if (selectedItemIndex < 0) {
-            return null;
-        }
-        MenuItem item = getItem(selectedItemIndex);
-        return (item instanceof Menu) ? (Menu) item : null;
-    }
-    */
-
-    /**
-     * Convenience method for selectItem(index, true)
-     */
-    //???AWT
-    /*
-    void selectItem(int index) {
-        selectItem(index, true);
-    }
-    */
-
-    /**
-     * Change the selection in the menu 
-     * @param index - new selecetd item's index
-     * @param showSubMenu - if new selected item has a sub-menu,
-     * should that sub-menu be displayed 
-     */
-    //???AWT
-    /*
-    void selectItem(int index, boolean showSubMenu) {
-        if (selectedItemIndex == index) {
-            return;
-        }
-        if (selectedItemIndex >= 0 && getItem(selectedItemIndex) instanceof Menu) {
-            ((Menu) getItem(selectedItemIndex)).hide();
-        }
-        MultiRectArea clip = getUpdateClip(index, selectedItemIndex);
-        selectedItemIndex = index;
-        Graphics gr = getGraphics(clip);
-        if (gr != null) {
-            paint(gr);
-        }
-        if (showSubMenu) {
-            showSubMenu(selectedItemIndex);
-        }
-    }
-    */
 
     /**
      * Change the selected item to the next one in the requested direction
      * moving cyclically, skipping separators
-     * @param forward - the direction to move the selection
-     * @param showSubMenu - if new selected item has a sub-menu,
-     * should that sub-menu be displayed 
+     * 
+     * @param forward
+     *            the direction to move the selection.
+     * @param showSubMenu
+     *            if new selected item has a sub-menu, should that sub-menu be
+     *            displayed.
      */
-    //???AWT
+    // ???AWT
     /*
-    void selectNextItem(boolean forward, boolean showSubMenu) {
-        int selected = getSelectedItemIndex();
-        int count = getItemCount();
-        if (count == 0) {
-            return;
-        }
-        if (selected < 0) {
-            selected = (forward ? count - 1 : 0);
-        }
-        int i = selected;
-        do {
-            i = (forward ? (i + 1) : (i + count - 1)) % count;
-            i %= count;
-            MenuItem item = getItem(i);
-            if (!"-".equals(item.getLabel())) { //$NON-NLS-1$
-                selectItem(i, showSubMenu);
-                return;
-            }
-        } while (i != selected);
-    }
-
-    
-    void showSubMenu(int index) {
-        if ((index < 0) || !isActive()) {
-            return;
-        }
-        MenuItem item = getItem(index);
-        if (item instanceof Menu) {
-            Menu menu = ((Menu) getItem(index));
-            if (menu.getItemCount() == 0) {
-                return;
-            }
-            Point location = getSubmenuLocation(index);
-            menu.show(location.x, location.y, false);
-        }
-    }
-    */
+     * void selectNextItem(boolean forward, boolean showSubMenu) { int selected
+     * = getSelectedItemIndex(); int count = getItemCount(); if (count == 0) {
+     * return; } if (selected < 0) { selected = (forward ? count - 1 : 0); } int
+     * i = selected; do { i = (forward ? (i + 1) : (i + count - 1)) % count; i
+     * %= count; MenuItem item = getItem(i); if (!"-".equals(item.getLabel())) {
+     * //$NON-NLS-1$ selectItem(i, showSubMenu); return; } } while (i !=
+     * selected); } void showSubMenu(int index) { if ((index < 0) ||
+     * !isActive()) { return; } MenuItem item = getItem(index); if (item
+     * instanceof Menu) { Menu menu = ((Menu) getItem(index)); if
+     * (menu.getItemCount() == 0) { return; } Point location =
+     * getSubmenuLocation(index); menu.show(location.x, location.y, false); } }
+     */
 
     /**
-     * @return - the menu bar which is the root of crrent menu's hierarchy;
-     * or null if the hierarchy root is not a menu bar 
+     * @return the menu bar which is the root of current menu's hierarchy; or
+     *         null if the hierarchy root is not a menu bar.
      */
-    //???AWT
+    // ???AWT
     /*
-    MenuBar getMenuBar() {
-        if (parent instanceof MenuBar) {
-            return (MenuBar) parent;
-        }
-        if (parent instanceof MenuComponent) {
-            return ((MenuComponent) parent).getMenuBar();
-        }
-        return null;
-    }
-
-    PopupBox getPopupBox() {
-        return null;
-    }
-    */
+     * MenuBar getMenuBar() { if (parent instanceof MenuBar) { return (MenuBar)
+     * parent; } if (parent instanceof MenuComponent) { return ((MenuComponent)
+     * parent).getMenuBar(); } return null; } PopupBox getPopupBox() { return
+     * null; }
+     */
 
     Rectangle getItemRect(int index) {
         // to be overridden
@@ -906,13 +646,14 @@
     }
 
     /**
-     * Determine the clip region when menu selection is changed
-     * from index1 to index2.
+     * Determine the clip region when menu selection is changed from index1 to
+     * index2.
      * 
-     * @param index1 - old selected intem
-     * @param index2 - new selected item
-     * 
-     * @return - the region to repaint
+     * @param index1
+     *            old selected item.
+     * @param index2
+     *            new selected item.
+     * @return the region to repaint.
      */
     final MultiRectArea getUpdateClip(int index1, int index2) {
         MultiRectArea clip = new MultiRectArea();
@@ -928,9 +669,9 @@
     /**
      * Gets the submenu location.
      * 
-     * @param index the index
-     * 
-     * @return the submenu location
+     * @param index
+     *            the index.
+     * @return the submenu location.
      */
     Point getSubmenuLocation(int index) {
         // to be overridden
@@ -940,7 +681,7 @@
     /**
      * Gets the selected item index.
      * 
-     * @return the selected item index
+     * @return the selected item index.
      */
     int getSelectedItemIndex() {
         return selectedItemIndex;
@@ -952,14 +693,15 @@
     void hide() {
         selectedItemIndex = -1;
         if (parent instanceof MenuComponent) {
-            ((MenuComponent) parent).itemHidden(this);
+            ((MenuComponent)parent).itemHidden(this);
         }
     }
 
     /**
      * Item hidden.
      * 
-     * @param mc the mc
+     * @param mc
+     *            the mc.
      */
     void itemHidden(MenuComponent mc) {
         // to be overridden
@@ -968,7 +710,7 @@
     /**
      * Checks if is visible.
      * 
-     * @return true, if is visible
+     * @return true, if is visible.
      */
     boolean isVisible() {
         return true;
@@ -977,7 +719,7 @@
     /**
      * Checks if is active.
      * 
-     * @return true, if is active
+     * @return true, if is active.
      */
     boolean isActive() {
         return true;
@@ -987,14 +729,16 @@
      * Hide all menu hierarchy.
      */
     void endMenu() {
-        //???AWT: toolkit.dispatcher.popupDispatcher.deactivateAll();
+        // ???AWT: toolkit.dispatcher.popupDispatcher.deactivateAll();
     }
 
     /**
      * Handle the mouse click or Enter key event on a menu's item.
      * 
-     * @param when - the event time
-     * @param modifiers - input event modifiers
+     * @param when
+     *            the event time.
+     * @param modifiers
+     *            input event modifiers.
      */
     void itemSelected(long when, int modifiers) {
         endMenu();
@@ -1003,14 +747,14 @@
     /**
      * Auto name.
      * 
-     * @return the string
+     * @return the string.
      */
     String autoName() {
         String name = getClass().getName();
         if (name.indexOf("$") != -1) { //$NON-NLS-1$
             return null;
         }
-        //???AWT: int number = toolkit.autoNumber.nextMenuComponent++;
+        // ???AWT: int number = toolkit.autoNumber.nextMenuComponent++;
         int number = 0;
         name = name.substring(name.lastIndexOf(".") + 1) + Integer.toString(number); //$NON-NLS-1$
         return name;
@@ -1019,10 +763,10 @@
     /**
      * Creates the Graphics object for the pop-up box of this menu component.
      * 
-     * @param clip - the clip to set on this Graphics
-     * 
-     * @return - the created Graphics object,
-     * or null if such object is not available.
+     * @param clip
+     *            the clip to set on this Graphics.
+     * @return the created Graphics object, or null if such object is not
+     *         available.
      */
     Graphics getGraphics(MultiRectArea clip) {
         // to be overridden
@@ -1030,12 +774,10 @@
     }
 
     /**
-     * @return accessible context specific for particular menu component
+     * @return accessible context specific for particular menu component.
      */
-    //???AWT
+    // ???AWT
     /*
-    AccessibleContext createAccessibleContext() {
-        return null;
-    }
-    */
+     * AccessibleContext createAccessibleContext() { return null; }
+     */
 }
diff --git a/awt/java/awt/MenuContainer.java b/awt/java/awt/MenuContainer.java
index 7a48f13..e509a1b 100644
--- a/awt/java/awt/MenuContainer.java
+++ b/awt/java/awt/MenuContainer.java
@@ -18,17 +18,21 @@
  * @author Pavel Dolgov
  * @version $Revision$
  */
+
 package java.awt;
 
 /**
  * The MenuContainer interface represents all menu containers.
+ * 
+ * @since Android 1.0
  */
 public interface MenuContainer {
 
     /**
      * Removes the specified MenuComponent from the MenuContainer.
      * 
-     * @param c the MenuComponent.
+     * @param c
+     *            the MenuComponent.
      */
     public void remove(MenuComponent c);
 
@@ -42,15 +46,12 @@
     /**
      * Posts an Event.
      * 
-     * @param e the Event.
-     * 
-     * @return true if the event is posted successfully; 
-     * false otherwise.
-     * 
+     * @param e
+     *            the Event.
+     * @return true if the event is posted successfully, false otherwise.
      * @deprecated Replaced by dispatchEvent method.
      */
     @Deprecated
     public boolean postEvent(Event e);
 
 }
-
diff --git a/awt/java/awt/Paint.java b/awt/java/awt/Paint.java
index f8732c8..dfea3a7 100644
--- a/awt/java/awt/Paint.java
+++ b/awt/java/awt/Paint.java
@@ -18,6 +18,7 @@
  * @author Alexey A. Petrenko
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.awt.geom.AffineTransform;
@@ -25,28 +26,32 @@
 import java.awt.image.ColorModel;
 
 /**
- * The Paint interface provides possibility of generating 
- * color patterns in device space for fill, draw, or stroke operations 
- * in a Graphics2D.
+ * The Paint interface provides possibility of generating color patterns in
+ * device space for fill, draw, or stroke operations in a Graphics2D.
+ * 
+ * @since Android 1.0
  */
 public interface Paint extends Transparency {
-    
+
     /**
-     * Creates the PaintContext which is used to generate color 
-     * patterns for rendering operations of Graphics2D.
+     * Creates the PaintContext which is used to generate color patterns for
+     * rendering operations of Graphics2D.
      * 
-     * @param cm the ColorModel object, or null.
-     * @param deviceBounds the Rectangle represents the bounding box of
-     * device space for the graphics rendering operations.
-     * @param userBounds the Rectangle represents bounding box of
-     * user space for the graphics rendering operations.
-     * @param xform the AffineTransform for translation from user space 
-     * to device space.
-     * @param hints the RenderingHints preferences.
-     * 
+     * @param cm
+     *            the ColorModel object, or null.
+     * @param deviceBounds
+     *            the Rectangle represents the bounding box of device space for
+     *            the graphics rendering operations.
+     * @param userBounds
+     *            the Rectangle represents bounding box of user space for the
+     *            graphics rendering operations.
+     * @param xform
+     *            the AffineTransform for translation from user space to device
+     *            space.
+     * @param hints
+     *            the RenderingHints preferences.
      * @return the PaintContext for generating color patterns.
      */
-    PaintContext createContext(ColorModel cm, Rectangle deviceBounds,
-            Rectangle2D userBounds, AffineTransform xform,
-            RenderingHints hints);
+    PaintContext createContext(ColorModel cm, Rectangle deviceBounds, Rectangle2D userBounds,
+            AffineTransform xform, RenderingHints hints);
 }
diff --git a/awt/java/awt/PaintContext.java b/awt/java/awt/PaintContext.java
index 647de8b..966b6ca 100644
--- a/awt/java/awt/PaintContext.java
+++ b/awt/java/awt/PaintContext.java
@@ -18,20 +18,22 @@
  * @author Alexey A. Petrenko
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.awt.image.ColorModel;
 import java.awt.image.Raster;
 
 /**
- * The PaintContext interface determines the specific environment for
- * generating color patterns in device space for fill, draw, or stroke 
- * rendering operations using Graphics2D. This interface provides colors
- * through the Raster object associated with the specific ColorModel 
- * for Graphics2D rendering operations.
+ * The PaintContext interface determines the specific environment for generating
+ * color patterns in device space for fill, draw, or stroke rendering operations
+ * using Graphics2D. This interface provides colors through the Raster object
+ * associated with the specific ColorModel for Graphics2D rendering operations.
+ * 
+ * @since Android 1.0
  */
 public interface PaintContext {
-    
+
     /**
      * Releases the resources allocated for the operation.
      */
@@ -45,20 +47,23 @@
     ColorModel getColorModel();
 
     /**
-     * Gets the Raster which defines the colors of the specified rectangular 
+     * Gets the Raster which defines the colors of the specified rectangular
      * area for Graphics2D rendering operations.
      * 
-     * @param x the X coordinate of the device space area for which 
-     * colors are generated.
-     * @param y the Y coordinate of the device space area for which 
-     * colors are generated.
-     * @param w the width of the device space area for which 
-     * colors are generated.
-     * @param h the height of the device space area for which 
-     * colors are generated.
-     * 
-     * @return the Raster object which contains the colors of the specified 
-     * rectangular area for Graphics2D rendering operations.
+     * @param x
+     *            the X coordinate of the device space area for which colors are
+     *            generated.
+     * @param y
+     *            the Y coordinate of the device space area for which colors are
+     *            generated.
+     * @param w
+     *            the width of the device space area for which colors are
+     *            generated.
+     * @param h
+     *            the height of the device space area for which colors are
+     *            generated.
+     * @return the Raster object which contains the colors of the specified
+     *         rectangular area for Graphics2D rendering operations.
      */
     Raster getRaster(int x, int y, int w, int h);
 }
diff --git a/awt/java/awt/Point.java b/awt/java/awt/Point.java
index 99418ed..8ec4241 100644
--- a/awt/java/awt/Point.java
+++ b/awt/java/awt/Point.java
@@ -18,28 +18,37 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.awt.geom.Point2D;
 import java.io.Serializable;
 
 /**
- * The Point class represents a point location with coordinates X, Y in 
- * current coordinate system.
+ * The Point class represents a point location with coordinates X, Y in current
+ * coordinate system.
+ * 
+ * @since Android 1.0
  */
 public class Point extends Point2D implements Serializable {
 
-    /** The Constant serialVersionUID. */
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = -5276940640259749850L;
 
-    /** The X coordinate of Point. */
+    /**
+     * The X coordinate of Point.
+     */
     public int x;
-    
-    /** The Y coordinate of Point. */
+
+    /**
+     * The Y coordinate of Point.
+     */
     public int y;
 
     /**
-     * Instantiates a new point with (0, O) coordinates, the origin of 
+     * Instantiates a new point with (0, O) coordinates, the origin of
      * coordinate system.
      */
     public Point() {
@@ -49,18 +58,20 @@
     /**
      * Instantiates a new point with (x, y) coordinates.
      * 
-     * @param x the X coordinate of Point.
-     * @param y the Y coordinate of Point.
+     * @param x
+     *            the X coordinate of Point.
+     * @param y
+     *            the Y coordinate of Point.
      */
     public Point(int x, int y) {
         setLocation(x, y);
     }
 
     /**
-     * Instantiates a new point, giving it the same locaion as
-     * the parameter p.
+     * Instantiates a new point, giving it the same location as the parameter p.
      * 
-     * @param p the Point object giving the coordinates of the new point.
+     * @param p
+     *            the Point object giving the coordinates of the new point.
      */
     public Point(Point p) {
         setLocation(p.x, p.y);
@@ -69,12 +80,10 @@
     /**
      * Compares current Point with the specified object.
      * 
-     * @param obj the Object to be compared.
-     * 
-     * @return true, if the Object being compared is a Point 
-     * whose coordinates are equal to the coordinates of this 
-     * Point, otherwise false.
-     * 
+     * @param obj
+     *            the Object to be compared.
+     * @return true, if the Object being compared is a Point whose coordinates
+     *         are equal to the coordinates of this Point, false otherwise.
      * @see java.awt.geom.Point2D#equals(Object)
      */
     @Override
@@ -103,7 +112,6 @@
      * Gets X coordinate of Point as a double.
      * 
      * @return X coordinate of the point as a double.
-     * 
      * @see java.awt.geom.Point2D#getX()
      */
     @Override
@@ -115,7 +123,6 @@
      * Gets Y coordinate of Point as a double.
      * 
      * @return Y coordinate of the point as a double.
-     * 
      * @see java.awt.geom.Point2D#getY()
      */
     @Override
@@ -135,7 +142,8 @@
     /**
      * Sets the location of the Point to the same coordinates as p.
      * 
-     * @param p the Point that gives the new location.
+     * @param p
+     *            the Point that gives the new location.
      */
     public void setLocation(Point p) {
         setLocation(p.x, p.y);
@@ -144,8 +152,10 @@
     /**
      * Sets the location of the Point to the coordinates X, Y.
      * 
-     * @param x the X coordinate of the Point's new location.
-     * @param y the Y coordinate of the Point's new location.
+     * @param x
+     *            the X coordinate of the Point's new location.
+     * @param y
+     *            the Y coordinate of the Point's new location.
      */
     public void setLocation(int x, int y) {
         this.x = x;
@@ -155,36 +165,43 @@
     /**
      * Sets the location of Point to the specified double coordinates.
      * 
-     * @param x the X the Point's new location.
-     * @param y the Y the Point's new location.
-     *  
+     * @param x
+     *            the X the Point's new location.
+     * @param y
+     *            the Y the Point's new location.
      * @see java.awt.geom.Point2D#setLocation(double, double)
      */
     @Override
     public void setLocation(double x, double y) {
-        x = x < Integer.MIN_VALUE ? Integer.MIN_VALUE : x > Integer.MAX_VALUE ? Integer.MAX_VALUE : x;
-        y = y < Integer.MIN_VALUE ? Integer.MIN_VALUE : y > Integer.MAX_VALUE ? Integer.MAX_VALUE : y;
+        x = x < Integer.MIN_VALUE ? Integer.MIN_VALUE : x > Integer.MAX_VALUE ? Integer.MAX_VALUE
+                : x;
+        y = y < Integer.MIN_VALUE ? Integer.MIN_VALUE : y > Integer.MAX_VALUE ? Integer.MAX_VALUE
+                : y;
         setLocation((int)Math.round(x), (int)Math.round(y));
     }
 
     /**
      * Moves the Point to the specified (x, y) location.
      * 
-     * @param x the X coordinate of the new location.
-     * @param y the Y coordinate of the new location. 
+     * @param x
+     *            the X coordinate of the new location.
+     * @param y
+     *            the Y coordinate of the new location.
      */
     public void move(int x, int y) {
         setLocation(x, y);
     }
 
     /**
-     * Translates current Point moving it from the position (x, y) 
-     * to the new position given by (x+dx, x+dy) coordinates.
+     * Translates current Point moving it from the position (x, y) to the new
+     * position given by (x+dx, x+dy) coordinates.
      * 
-     * @param dx the horizontal delta - the Point is moved to this distance along
-     * X axis.
-     * @param dy the vertical delta - the Point is moved to this distance along
-     * Y axis.
+     * @param dx
+     *            the horizontal delta - the Point is moved to this distance
+     *            along X axis.
+     * @param dy
+     *            the vertical delta - the Point is moved to this distance along
+     *            Y axis.
      */
     public void translate(int dx, int dy) {
         x += dx;
@@ -192,4 +209,3 @@
     }
 
 }
-
diff --git a/awt/java/awt/Polygon.java b/awt/java/awt/Polygon.java
index 6f3fc97..de31eb9 100644
--- a/awt/java/awt/Polygon.java
+++ b/awt/java/awt/Polygon.java
@@ -18,6 +18,7 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.awt.Point;
@@ -34,57 +35,78 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Polygon class defines an closed area specified by n vertices and 
- * n edges. The coordinates of the vertices are specified by x, y arrays.
- * The edges are the line segments from the point (x[i], y[i]) to the point 
- * (x[i+1], y[i+1]), for -1 < i < (n-1) plus the line segment from 
- * the point (x[n-1], y[n-1]) to the point (x[0], y[0]) point. 
- * The Polygon is empty if the number of vertices is zero.   
+ * The Polygon class defines an closed area specified by n vertices and n edges.
+ * The coordinates of the vertices are specified by x, y arrays. The edges are
+ * the line segments from the point (x[i], y[i]) to the point (x[i+1], y[i+1]),
+ * for -1 < i < (n-1) plus the line segment from the point (x[n-1], y[n-1]) to
+ * the point (x[0], y[0]) point. The Polygon is empty if the number of vertices
+ * is zero.
+ * 
+ * @since Android 1.0
  */
 public class Polygon implements Shape, Serializable {
 
-    /** The Constant serialVersionUID. */
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = -6460061437900069969L;
 
-    /** The points buffer capacity. */
+    /**
+     * The points buffer capacity.
+     */
     private static final int BUFFER_CAPACITY = 4;
-    
-    /** The number of Polygon vertices.*/
+
+    /**
+     * The number of Polygon vertices.
+     */
     public int npoints;
-    
-    /** The array of X coordinates of the vertices. */
+
+    /**
+     * The array of X coordinates of the vertices.
+     */
     public int[] xpoints;
-    
-    /** The array of Y coordinates of the vertices. */
+
+    /**
+     * The array of Y coordinates of the vertices.
+     */
     public int[] ypoints;
-    
-    /**  
-     * The smallest Rectangle that completely contains this Polygon. 
+
+    /**
+     * The smallest Rectangle that completely contains this Polygon.
      */
     protected Rectangle bounds;
 
     /*
-     * Polygon path iterator  
+     * Polygon path iterator
      */
     /**
      * The internal Class Iterator.
      */
     class Iterator implements PathIterator {
 
-        /** The source Polygon object. */
+        /**
+         * The source Polygon object.
+         */
         public Polygon p;
-        
-        /** The path iterator transformation. */
+
+        /**
+         * The path iterator transformation.
+         */
         public AffineTransform t;
-        
-        /** The current segmenet index. */
+
+        /**
+         * The current segment index.
+         */
         public int index;
 
         /**
-         * Constructs a new Polygon.Iterator for the given polygon and transformation
+         * Constructs a new Polygon.Iterator for the given polygon and
+         * transformation
          * 
-         * @param at - the AffineTransform object to apply rectangle path
-         * @param p the p
+         * @param at
+         *            the AffineTransform object to apply rectangle path.
+         * @param p
+         *            the p.
          */
         public Iterator(AffineTransform at, Polygon p) {
             this.p = p;
@@ -148,18 +170,21 @@
     }
 
     /**
-     * Instantiates a new polygon with the specified number of vertices,
-     * and the given arrays of x, y vertex coordinates. The length of 
-     * each coordinate array may not be less than the specified number of 
-     * vertices but may be greater. Only the first n elements are used from 
-     * each coordinate array.
+     * Instantiates a new polygon with the specified number of vertices, and the
+     * given arrays of x, y vertex coordinates. The length of each coordinate
+     * array may not be less than the specified number of vertices but may be
+     * greater. Only the first n elements are used from each coordinate array.
      * 
-     * @param xpoints the array of X vertex coordinates. 
-     * @param ypoints the array of Y vertex coordinates.
-     * @param npoints the number vertices of the polygon.
-     * @throws IndexOutOfBoundsException if the length of xpoints or ypoints
-     * is less than n.
-     * @throws NegativeArraySizeException if n is negative.
+     * @param xpoints
+     *            the array of X vertex coordinates.
+     * @param ypoints
+     *            the array of Y vertex coordinates.
+     * @param npoints
+     *            the number vertices of the polygon.
+     * @throws IndexOutOfBoundsException
+     *             if the length of xpoints or ypoints is less than n.
+     * @throws NegativeArraySizeException
+     *             if n is negative.
      */
     public Polygon(int[] xpoints, int[] ypoints, int npoints) {
         if (npoints > xpoints.length || npoints > ypoints.length) {
@@ -178,9 +203,9 @@
     }
 
     /**
-     * Resets the current Polygon to an empty Polygon. More precisely, 
-     * the number of Polygon vertices is set to zero, but x, y coordinates 
-     * arrays are not affected.  
+     * Resets the current Polygon to an empty Polygon. More precisely, the
+     * number of Polygon vertices is set to zero, but x, y coordinates arrays
+     * are not affected.
      */
     public void reset() {
         npoints = 0;
@@ -188,21 +213,22 @@
     }
 
     /**
-     * Invalidates the data that depends on the vertex coordinates. 
-     * This method should be called after direct manipulations  
-     * of the x, y vertex coordinates arrays to avoid unpredictable 
-     * results of methods which rely on the bounding box.
+     * Invalidates the data that depends on the vertex coordinates. This method
+     * should be called after direct manipulations of the x, y vertex
+     * coordinates arrays to avoid unpredictable results of methods which rely
+     * on the bounding box.
      */
     public void invalidate() {
         bounds = null;
     }
 
     /**
-     * Adds the point to the Polygon and updates the bounding box 
-     * accordingly.
+     * Adds the point to the Polygon and updates the bounding box accordingly.
      * 
-     * @param px the X coordinate of the added vertex.
-     * @param py the Y coordinate of the added vertex.
+     * @param px
+     *            the X coordinate of the added vertex.
+     * @param py
+     *            the Y coordinate of the added vertex.
      */
     public void addPoint(int px, int py) {
         if (npoints == xpoints.length) {
@@ -222,20 +248,16 @@
         npoints++;
 
         if (bounds != null) {
-            bounds.setFrameFromDiagonal(
-                    Math.min(bounds.getMinX(), px),
-                    Math.min(bounds.getMinY(), py),
-                    Math.max(bounds.getMaxX(), px),
-                    Math.max(bounds.getMaxY(), py));
+            bounds.setFrameFromDiagonal(Math.min(bounds.getMinX(), px), Math.min(bounds.getMinY(),
+                    py), Math.max(bounds.getMaxX(), px), Math.max(bounds.getMaxY(), py));
         }
     }
 
     /**
-     * Gets the bounding rectangle of the Polygon. The bounding rectangle
-     * is the smallest rectangle which contains the Polygon.
+     * Gets the bounding rectangle of the Polygon. The bounding rectangle is the
+     * smallest rectangle which contains the Polygon.
      * 
      * @return the bounding rectangle of the Polygon.
-     * 
      * @see java.awt.Shape#getBounds()
      */
     public Rectangle getBounds() {
@@ -270,11 +292,10 @@
     }
 
     /**
-     * Gets the bounding rectangle of the Polygon. The bounding rectangle
-     * is the smallest rectangle which contains the Polygon.
+     * Gets the bounding rectangle of the Polygon. The bounding rectangle is the
+     * smallest rectangle which contains the Polygon.
      * 
      * @return the bounding rectangle of the Polygon.
-     * 
      * @deprecated Use getBounds() method.
      */
     @Deprecated
@@ -283,12 +304,10 @@
     }
 
     /**
-     * Gets the Rectangle2D which represents Polygon bounds.
-     * The bounding rectangle is the smallest rectangle which contains 
-     * the Polygon.
+     * Gets the Rectangle2D which represents Polygon bounds. The bounding
+     * rectangle is the smallest rectangle which contains the Polygon.
      * 
      * @return the bounding rectangle of the Polygon.
-     * 
      * @see java.awt.Shape#getBounds2D()
      */
     public Rectangle2D getBounds2D() {
@@ -296,11 +315,13 @@
     }
 
     /**
-     * Translates all vertices of Polygon the specified distances
-     * along X, Y axis.
+     * Translates all vertices of Polygon the specified distances along X, Y
+     * axis.
      * 
-     * @param mx the distance to translate horizontally.
-     * @param my the distance to translate vertically.
+     * @param mx
+     *            the distance to translate horizontally.
+     * @param my
+     *            the distance to translate vertically.
      */
     public void translate(int mx, int my) {
         for (int i = 0; i < npoints; i++) {
@@ -313,46 +334,47 @@
     }
 
     /**
-     * Checks whether or not the point given by the coordinates x, y lies inside 
+     * Checks whether or not the point given by the coordinates x, y lies inside
      * the Polygon.
      * 
-     * @param x the X coordinate of the point to check.
-     * @param y the Y coordinate of the point to check.
-     * 
-     * @return true, if the specified point lies inside the Polygon,
-     * otherwise false.
-     * 
+     * @param x
+     *            the X coordinate of the point to check.
+     * @param y
+     *            the Y coordinate of the point to check.
+     * @return true, if the specified point lies inside the Polygon, false
+     *         otherwise.
      * @deprecated Use contains(int, int) method.
      */
     @Deprecated
     public boolean inside(int x, int y) {
-        return contains((double) x, (double) y);
+        return contains((double)x, (double)y);
     }
 
     /**
-     * Checks whether or not the point given by the coordinates x, y lies inside 
+     * Checks whether or not the point given by the coordinates x, y lies inside
      * the Polygon.
      * 
-     * @param x the X coordinate of the point to check.
-     * @param y the Y coordinate of the point to check.
-     * 
-     * @return true, if the specified point lies inside the Polygon,
-     * otherwise false.
+     * @param x
+     *            the X coordinate of the point to check.
+     * @param y
+     *            the Y coordinate of the point to check.
+     * @return true, if the specified point lies inside the Polygon, false
+     *         otherwise.
      */
     public boolean contains(int x, int y) {
-        return contains((double) x, (double) y);
+        return contains((double)x, (double)y);
     }
 
     /**
-     * Checks whether or not the point with specified double coordinates 
-     * lies inside the Polygon.
+     * Checks whether or not the point with specified double coordinates lies
+     * inside the Polygon.
      * 
-     * @param x the X coordinate of the point to check.
-     * @param y the Y coordinate of the point to check.
-     * 
-     * @return true, if the point given by the double coordinates 
-     * lies inside the Polygon, otherwise false.
-     * 
+     * @param x
+     *            the X coordinate of the point to check.
+     * @param y
+     *            the Y coordinate of the point to check.
+     * @return true, if the point given by the double coordinates lies inside
+     *         the Polygon, false otherwise.
      * @see java.awt.Shape#contains(double, double)
      */
     public boolean contains(double x, double y) {
@@ -360,19 +382,21 @@
     }
 
     /**
-     * Checks whether or not the rectangle determined by the parameters  
-     * [x, y, width, height] lies inside the Polygon.
+     * Checks whether or not the rectangle determined by the parameters [x, y,
+     * width, height] lies inside the Polygon.
      * 
-     * @param x the X coordinate of the rectangles's left upper 
-     * corner as a double.
-     * @param y the Y coordinate of the rectangles's left upper 
-     * corner as a double.
-     * @param width the width of rectangle as a double.
-     * @param width the height of rectangle as a double.
-     * 
-     * @return true, if the specified rectangle lies inside the Polygon,
-     * otherwise false.
-     * 
+     * @param x
+     *            the X coordinate of the rectangles's left upper corner as a
+     *            double.
+     * @param y
+     *            the Y coordinate of the rectangles's left upper corner as a
+     *            double.
+     * @param width
+     *            the width of rectangle as a double.
+     * @param height
+     *            the height of rectangle as a double.
+     * @return true, if the specified rectangle lies inside the Polygon, false
+     *         otherwise.
      * @see java.awt.Shape#contains(double, double, double, double)
      */
     public boolean contains(double x, double y, double width, double height) {
@@ -381,20 +405,21 @@
     }
 
     /**
-     * Checks whether or not the rectangle determined by the parameters  
-     * [x, y, width, height] intersects the interior of
-     * the Polygon.
+     * Checks whether or not the rectangle determined by the parameters [x, y,
+     * width, height] intersects the interior of the Polygon.
      * 
-     * @param x the X coordinate of the rectangles's left upper 
-     * corner as a double.
-     * @param y the Y coordinate of the rectangles's left upper 
-     * corner as a double.
-     * @param width the width of rectangle as a double.
-     * @param width the height of rectangle as a double.
-     * 
-     * @return true, if the specified rectangle intersects the interior of
-     * the Polygon, otherwise false.
-     * 
+     * @param x
+     *            the X coordinate of the rectangles's left upper corner as a
+     *            double.
+     * @param y
+     *            the Y coordinate of the rectangles's left upper corner as a
+     *            double.
+     * @param width
+     *            the width of rectangle as a double.
+     * @param height
+     *            the height of rectangle as a double.
+     * @return true, if the specified rectangle intersects the interior of the
+     *         Polygon, false otherwise.
      * @see java.awt.Shape#intersects(double, double, double, double)
      */
     public boolean intersects(double x, double y, double width, double height) {
@@ -405,11 +430,10 @@
     /**
      * Checks whether or not the specified rectangle lies inside the Polygon.
      * 
-     * @param rect the Rectangle2D object.
-     * 
-     * @return true, if the specified rectangle lies inside the Polygon,
-     * otherwise false.
-     * 
+     * @param rect
+     *            the Rectangle2D object.
+     * @return true, if the specified rectangle lies inside the Polygon, false
+     *         otherwise.
      * @see java.awt.Shape#contains(java.awt.geom.Rectangle2D)
      */
     public boolean contains(Rectangle2D rect) {
@@ -419,10 +443,10 @@
     /**
      * Checks whether or not the specified Point lies inside the Polygon.
      * 
-     * @param point the Point object.
-     * 
-     * @return true, if the specified Point lies inside the Polygon,
-     * otherwise false.
+     * @param point
+     *            the Point object.
+     * @return true, if the specified Point lies inside the Polygon, false
+     *         otherwise.
      */
     public boolean contains(Point point) {
         return contains(point.getX(), point.getY());
@@ -431,11 +455,10 @@
     /**
      * Checks whether or not the specified Point2D lies inside the Polygon.
      * 
-     * @param point the Point2D object.
-     * 
-     * @return true, if the specified Point2D lies inside the Polygon,
-     * otherwise false.
-     * 
+     * @param point
+     *            the Point2D object.
+     * @return true, if the specified Point2D lies inside the Polygon, false
+     *         otherwise.
      * @see java.awt.Shape#contains(java.awt.geom.Point2D)
      */
     public boolean contains(Point2D point) {
@@ -443,14 +466,13 @@
     }
 
     /**
-     * Checks whether or not the interior of rectangle specified by 
-     * the Rectangle2D object intersects the interior of the Polygon.
+     * Checks whether or not the interior of rectangle specified by the
+     * Rectangle2D object intersects the interior of the Polygon.
      * 
-     * @param rect the Rectangle2D object.
-     * 
-     * @return true, if the Rectangle2D intersects the interior of
-     * the Polygon, otherwise false.
-     * 
+     * @param rect
+     *            the Rectangle2D object.
+     * @return true, if the Rectangle2D intersects the interior of the Polygon,
+     *         false otherwise.
      * @see java.awt.Shape#intersects(java.awt.geom.Rectangle2D)
      */
     public boolean intersects(Rectangle2D rect) {
@@ -458,13 +480,12 @@
     }
 
     /**
-     * Gets the PathIterator object which gives the coordinates of 
-     * the polygon, transformed according to the specified AffineTransform.
+     * Gets the PathIterator object which gives the coordinates of the polygon,
+     * transformed according to the specified AffineTransform.
      * 
-     * @param t the specified AffineTransform object, or null.
-     * 
+     * @param t
+     *            the specified AffineTransform object or null.
      * @return PathIterator object for the Polygon.
-     * 
      * @see java.awt.Shape#getPathIterator(java.awt.geom.AffineTransform)
      */
     public PathIterator getPathIterator(AffineTransform t) {
@@ -472,23 +493,23 @@
     }
 
     /**
-     * Gets the PathIterator object which gives the coordinates of 
-     * the polygon, transformed according to the specified AffineTransform.
-     * The flatness parameter is ignored.
+     * Gets the PathIterator object which gives the coordinates of the polygon,
+     * transformed according to the specified AffineTransform. The flatness
+     * parameter is ignored.
      * 
-     * @param t the specified AffineTransform object, or null.
-     * @param flatness the maximum number of the control points for 
-     * a given curve which varies from colinear before a subdivided curve 
-     * is replaced by a straight line connecting the endpoints. 
-     * This parameter is ignored for the Polygon class.
-     * 
+     * @param t
+     *            the specified AffineTransform object or null.
+     * @param flatness
+     *            the maximum number of the control points for a given curve
+     *            which varies from colinear before a subdivided curve is
+     *            replaced by a straight line connecting the endpoints. This
+     *            parameter is ignored for the Polygon class.
      * @return PathIterator object for the Polygon.
-     *  
-     * @see java.awt.Shape#getPathIterator(java.awt.geom.AffineTransform, double)
+     * @see java.awt.Shape#getPathIterator(java.awt.geom.AffineTransform,
+     *      double)
      */
     public PathIterator getPathIterator(AffineTransform t, double flatness) {
         return new Iterator(t, this);
     }
 
 }
-
diff --git a/awt/java/awt/Rectangle.java b/awt/java/awt/Rectangle.java
index 86c4dfc..d8ebb3a 100644
--- a/awt/java/awt/Rectangle.java
+++ b/awt/java/awt/Rectangle.java
@@ -18,36 +18,48 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.awt.geom.Rectangle2D;
 import java.io.Serializable;
 
 /**
- * The Rectangle class defines the rectangular area in terms of its
- * upper left corner coordinates [x,y], its width, and its height.  
- * A Rectangle specified by [x, y, width, height] parameters has an 
- * outline path with corners at [x, y], [x + width,y], [x + width,y + height], 
- * and [x, y + height]. 
- * <br><br>
- * The rectangle is empty if the width or height is negative or zero. 
- * In this case the isEmpty method returns true.
+ * The Rectangle class defines the rectangular area in terms of its upper left
+ * corner coordinates [x,y], its width, and its height. A Rectangle specified by
+ * [x, y, width, height] parameters has an outline path with corners at [x, y],
+ * [x + width,y], [x + width,y + height], and [x, y + height]. <br>
+ * <br>
+ * The rectangle is empty if the width or height is negative or zero. In this
+ * case the isEmpty method returns true.
+ * 
+ * @since Android 1.0
  */
 public class Rectangle extends Rectangle2D implements Shape, Serializable {
 
-    /** The Constant serialVersionUID. */
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = -4345857070255674764L;
 
-    /** The X coordinate of the rectangle's left upper corner. */
+    /**
+     * The X coordinate of the rectangle's left upper corner.
+     */
     public int x;
-    
-    /** The Y coordinate of the rectangle's left upper corner. */
+
+    /**
+     * The Y coordinate of the rectangle's left upper corner.
+     */
     public int y;
-    
-    /** The width of rectangle. */
+
+    /**
+     * The width of rectangle.
+     */
     public int width;
-    
-    /** The height of rectangle. */
+
+    /**
+     * The height of rectangle.
+     */
     public int height;
 
     /**
@@ -60,73 +72,82 @@
 
     /**
      * Instantiates a new rectangle whose upper left corner coordinates are
-     * given by the Point object (p.X and p.Y), and the width and 
-     * the height are zero. 
+     * given by the Point object (p.X and p.Y), and the width and the height are
+     * zero.
      * 
-     * @param p the Point specifies the upper left corner coordinates of 
-     * the rectangle.
+     * @param p
+     *            the Point specifies the upper left corner coordinates of the
+     *            rectangle.
      */
     public Rectangle(Point p) {
         setBounds(p.x, p.y, 0, 0);
     }
 
     /**
-      * Instantiates a new rectangle whose upper left corner coordinates are
-     * given by the Point object (p.X and p.Y), and the width and the height
-     * are given by Dimension object (d.width and d.height). 
+     * Instantiates a new rectangle whose upper left corner coordinates are
+     * given by the Point object (p.X and p.Y), and the width and the height are
+     * given by Dimension object (d.width and d.height).
      * 
-     * @param p the Point specifies the upper left corner coordinates of 
-     * the rectangle.
-     * @param d the Dimention specifies the width and the height of the rectangle. 
+     * @param p
+     *            the point specifies the upper left corner coordinates of the
+     *            rectangle.
+     * @param d
+     *            the dimension specifies the width and the height of the
+     *            rectangle.
      */
     public Rectangle(Point p, Dimension d) {
         setBounds(p.x, p.y, d.width, d.height);
     }
 
     /**
-     * Instantiates a new rectangle determined by the upper left corner 
+     * Instantiates a new rectangle determined by the upper left corner
      * coordinates (x, y), width and height.
      * 
-     * @param x the X upper left corner coordinate of the rectangle.
-     * @param y the Y upper left corner coordinate of the rectangle.
-     * @param width the width of rectangle.
-     * @param height the height of rectangle. 
+     * @param x
+     *            the X upper left corner coordinate of the rectangle.
+     * @param y
+     *            the Y upper left corner coordinate of the rectangle.
+     * @param width
+     *            the width of rectangle.
+     * @param height
+     *            the height of rectangle.
      */
     public Rectangle(int x, int y, int width, int height) {
         setBounds(x, y, width, height);
     }
 
     /**
-     * Instantiates a new rectangle with [0, 0] as its upper left 
-     * corner coordinates and the specified width and height.
+     * Instantiates a new rectangle with [0, 0] as its upper left corner
+     * coordinates and the specified width and height.
      * 
-     * @param width the width of rectangle.
-     * @param height the height of rectangle. 
+     * @param width
+     *            the width of rectangle.
+     * @param height
+     *            the height of rectangle.
      */
     public Rectangle(int width, int height) {
         setBounds(0, 0, width, height);
     }
 
     /**
-     * Instantiates a new rectangle with the same coordinates 
-     * as the given source rectangle.
+     * Instantiates a new rectangle with the same coordinates as the given
+     * source rectangle.
      * 
-     * @param r the Rectangle object which parameters will be used for 
-     * instantiating a new Rectangle.
+     * @param r
+     *            the Rectangle object which parameters will be used for
+     *            instantiating a new Rectangle.
      */
     public Rectangle(Rectangle r) {
         setBounds(r.x, r.y, r.width, r.height);
     }
-/*
-    public Rectangle(Dimension d) {
-        setBounds(0, 0, d.width, d.height);
-    }
-*/
+
+    /*
+     * public Rectangle(Dimension d) { setBounds(0, 0, d.width, d.height); }
+     */
     /**
      * Gets the X coordinate of bound as a double.
      * 
      * @return the X coordinate of bound as a double.
-     *   
      * @see java.awt.geom.RectangularShape#getX()
      */
     @Override
@@ -138,7 +159,6 @@
      * Gets the Y coordinate of bound as a double.
      * 
      * @return the Y coordinate of bound as a double.
-     * 
      * @see java.awt.geom.RectangularShape#getY()
      */
     @Override
@@ -149,8 +169,7 @@
     /**
      * Gets the height of the rectangle as a double.
      * 
-     * @return the height of the rectangle as a double. 
-     * 
+     * @return the height of the rectangle as a double.
      * @see java.awt.geom.RectangularShape#getHeight()
      */
     @Override
@@ -162,7 +181,6 @@
      * Gets the width of the rectangle as a double.
      * 
      * @return the width of the rectangle as a double.
-     *  
      * @see java.awt.geom.RectangularShape#getWidth()
      */
     @Override
@@ -171,11 +189,10 @@
     }
 
     /**
-     * Determines whether or not the rectangle is empty. The rectangle is empty if 
-     * its width or height is negative or zero.
+     * Determines whether or not the rectangle is empty. The rectangle is empty
+     * if its width or height is negative or zero.
      * 
      * @return true, if the rectangle is empty, otherwise false.
-     * 
      * @see java.awt.geom.RectangularShape#isEmpty()
      */
     @Override
@@ -184,9 +201,9 @@
     }
 
     /**
-     * Gets the size of a Rectangle as Dimention object.
+     * Gets the size of a Rectangle as Dimension object.
      * 
-     * @return a Dimention object which represents size of the rectangle.
+     * @return a Dimension object which represents size of the rectangle.
      */
     public Dimension getSize() {
         return new Dimension(width, height);
@@ -195,8 +212,10 @@
     /**
      * Sets the size of the Rectangle.
      * 
-     * @param width the new width of the rectangle. 
-     * @param height the new height of the rectangle.
+     * @param width
+     *            the new width of the rectangle.
+     * @param height
+     *            the new height of the rectangle.
      */
     public void setSize(int width, int height) {
         this.width = width;
@@ -206,7 +225,8 @@
     /**
      * Sets the size of a Rectangle specified as Dimension object.
      * 
-     * @param d a Dimension object which represents new size of a rectangle.
+     * @param d
+     *            a Dimension object which represents new size of a rectangle.
      */
     public void setSize(Dimension d) {
         setSize(d.width, d.height);
@@ -215,19 +235,21 @@
     /**
      * Gets the location of a rectangle's upper left corner as a Point object.
      * 
-     * @return the Point object with coordinates equal to the upper left corner 
-     * of the rectangle.
+     * @return the Point object with coordinates equal to the upper left corner
+     *         of the rectangle.
      */
     public Point getLocation() {
         return new Point(x, y);
     }
 
     /**
-     * Sets the location of the rectangle in terms of its upper left 
-     * corner coordinates X and Y.
+     * Sets the location of the rectangle in terms of its upper left corner
+     * coordinates X and Y.
      * 
-     * @param x the X coordinate of the rectangle's upper left corner.
-     * @param y the Y coordinate of the rectangle's upper left corner.
+     * @param x
+     *            the X coordinate of the rectangle's upper left corner.
+     * @param y
+     *            the Y coordinate of the rectangle's upper left corner.
      */
     public void setLocation(int x, int y) {
         this.x = x;
@@ -235,23 +257,25 @@
     }
 
     /**
-     * Sets the location of a rectangle using a Point object to give the 
+     * Sets the location of a rectangle using a Point object to give the
      * coordinates of the upper left corner.
      * 
-     * @param p the Point object which represents the new upper left corner 
-     * coordinates of rectangle.  
+     * @param p
+     *            the Point object which represents the new upper left corner
+     *            coordinates of rectangle.
      */
     public void setLocation(Point p) {
         setLocation(p.x, p.y);
     }
 
     /**
-     * Moves a rectangle to the new location by moving its upper left corner
-     * to the point with coordinates X and Y.
+     * Moves a rectangle to the new location by moving its upper left corner to
+     * the point with coordinates X and Y.
      * 
-     * @param x the new X coordinate of the rectangle's upper left corner.
-     * @param y the new Y coordinate of the rectangle's upper left corner.
-     * 
+     * @param x
+     *            the new X coordinate of the rectangle's upper left corner.
+     * @param y
+     *            the new Y coordinate of the rectangle's upper left corner.
      * @deprecated Use setLocation(int, int) method.
      */
     @Deprecated
@@ -260,16 +284,19 @@
     }
 
     /**
-     * Sets the rectangle to be the nearest rectangle with integer coordinates 
+     * Sets the rectangle to be the nearest rectangle with integer coordinates
      * bounding the rectangle defined by the double-valued parameters.
      * 
-     * @param x the X coordinate of the upper left corner of the double-valued
-     * rectangle to be bounded.
-     * @param y the Y coordinate of the upper left corner of the double-valued
-     * rectangle to be bounded.
-     * @param width the width of the rectangle to be bounded.
-     * @param height the height of the rectangle to be bounded.      
-     * 
+     * @param x
+     *            the X coordinate of the upper left corner of the double-valued
+     *            rectangle to be bounded.
+     * @param y
+     *            the Y coordinate of the upper left corner of the double-valued
+     *            rectangle to be bounded.
+     * @param width
+     *            the width of the rectangle to be bounded.
+     * @param height
+     *            the height of the rectangle to be bounded.
      * @see java.awt.geom.Rectangle2D#setRect(double, double, double, double)
      */
     @Override
@@ -284,9 +311,10 @@
     /**
      * Sets a new size for the rectangle.
      * 
-     * @param width the rectangle's new width.
-     * @param height the rectangle's new height.
-     * 
+     * @param width
+     *            the rectangle's new width.
+     * @param height
+     *            the rectangle's new height.
      * @deprecated use the setSize(int, int) method.
      */
     @Deprecated
@@ -295,14 +323,17 @@
     }
 
     /**
-     * Resets the bounds of a rectangle to the specified x, y, width and height 
+     * Resets the bounds of a rectangle to the specified x, y, width and height
      * parameters.
      * 
-     * @param x the new X coordinate of the upper left corner.
-     * @param y the new Y coordinate of the upper left corner.
-     * @param width the new width of rectangle.
-     * @param height the new height of rectangle. 
-     * 
+     * @param x
+     *            the new X coordinate of the upper left corner.
+     * @param y
+     *            the new Y coordinate of the upper left corner.
+     * @param width
+     *            the new width of rectangle.
+     * @param height
+     *            the new height of rectangle.
      * @deprecated use setBounds(int, int, int, int) method
      */
     @Deprecated
@@ -312,10 +343,9 @@
 
     /**
      * Gets bounds of the rectangle as a new Rectangle object.
-     *  
-     * @return the Rectangle object with the same bounds as 
-     * the original rectangle. 
      * 
+     * @return the Rectangle object with the same bounds as the original
+     *         rectangle.
      * @see java.awt.geom.RectangularShape#getBounds()
      */
     @Override
@@ -325,10 +355,9 @@
 
     /**
      * Gets the bounds of the original rectangle as a Rectangle2D object.
-     *  
-     * @return the Rectangle2D object which represents the bounds of 
-     * the original rectangle. 
      * 
+     * @return the Rectangle2D object which represents the bounds of the
+     *         original rectangle.
      * @see java.awt.geom.Rectangle2D#getBounds2D()
      */
     @Override
@@ -337,13 +366,17 @@
     }
 
     /**
-     * Sets the bounds of a rectangle to the specified x, y, width, and height 
+     * Sets the bounds of a rectangle to the specified x, y, width, and height
      * parameters.
      * 
-     * @param x the X coordinate of the upper left corner.
-     * @param y the Y coordinate of the upper left corner.
-     * @param width the width of rectangle.
-     * @param height the height of rectangle. 
+     * @param x
+     *            the X coordinate of the upper left corner.
+     * @param y
+     *            the Y coordinate of the upper left corner.
+     * @param width
+     *            the width of rectangle.
+     * @param height
+     *            the height of rectangle.
      */
     public void setBounds(int x, int y, int width, int height) {
         this.x = x;
@@ -353,25 +386,26 @@
     }
 
     /**
-     * Sets the bounds of the rectangle to match the bounds of the
-     * Rectangle object sent as a parameter.
+     * Sets the bounds of the rectangle to match the bounds of the Rectangle
+     * object sent as a parameter.
      * 
-     * @param r the Rectangle object which specifies the new bounds. 
+     * @param r
+     *            the Rectangle object which specifies the new bounds.
      */
     public void setBounds(Rectangle r) {
         setBounds(r.x, r.y, r.width, r.height);
     }
 
     /**
-     * Enlarges the rectangle by moving each corner outward from the 
-     * center by a distance of dx horizonally and a distance of dy 
-     * vertically. Specifically, changes a rectangle with 
-     * [x, y, width, height] parameters to 
-     * a rectangle with [x-dx, y-dy, width+2*dx, height+2*dy]
-     * parameters. 
-     *   
-     * @param dx the horizontal distance to move each corner coordinate.
-     * @param dy the vertical distance to move each corner coordinate.
+     * Enlarges the rectangle by moving each corner outward from the center by a
+     * distance of dx horizonally and a distance of dy vertically. Specifically,
+     * changes a rectangle with [x, y, width, height] parameters to a rectangle
+     * with [x-dx, y-dy, width+2*dx, height+2*dy] parameters.
+     * 
+     * @param dx
+     *            the horizontal distance to move each corner coordinate.
+     * @param dy
+     *            the vertical distance to move each corner coordinate.
      */
     public void grow(int dx, int dy) {
         x -= dx;
@@ -381,11 +415,13 @@
     }
 
     /**
-     * Moves a rectangle a distance of mx along the x coordinate axis 
-     * and a distance of my along y coordinate axis.
+     * Moves a rectangle a distance of mx along the x coordinate axis and a
+     * distance of my along y coordinate axis.
      * 
-     * @param mx the horizontal translation increment.
-     * @param my the vertical translation increment.
+     * @param mx
+     *            the horizontal translation increment.
+     * @param my
+     *            the vertical translation increment.
      */
     public void translate(int mx, int my) {
         x += mx;
@@ -395,8 +431,12 @@
     /**
      * Enlarges the rectangle to cover the specified point.
      * 
-     * @param px the X coordinate of the new point to be covered by the rectangle.
-     * @param py the Y coordinate of the new point to be covered by the rectangle.
+     * @param px
+     *            the X coordinate of the new point to be covered by the
+     *            rectangle.
+     * @param py
+     *            the Y coordinate of the new point to be covered by the
+     *            rectangle.
      */
     public void add(int px, int py) {
         int x1 = Math.min(x, px);
@@ -407,11 +447,12 @@
     }
 
     /**
-     * Enlarges the rectangle to cover the specified point with the
-     * new point given as a Point object.
+     * Enlarges the rectangle to cover the specified point with the new point
+     * given as a Point object.
      * 
-     * @param p the Point object that specifies the new point to 
-     * be covered by the rectangle.
+     * @param p
+     *            the Point object that specifies the new point to be covered by
+     *            the rectangle.
      */
     public void add(Point p) {
         add(p.x, p.y);
@@ -421,7 +462,8 @@
      * Adds a new rectangle to the original rectangle, the result is an union of
      * the specified specified rectangle and original rectangle.
      * 
-     * @param r the Rectangle which is added to the original rectangle. 
+     * @param r
+     *            the Rectangle which is added to the original rectangle.
      */
     public void add(Rectangle r) {
         int x1 = Math.min(x, r.x);
@@ -432,14 +474,15 @@
     }
 
     /**
-     * Determines whether or not the point with specified coordinates [px, py] 
+     * Determines whether or not the point with specified coordinates [px, py]
      * is within the bounds of the rectangle.
      * 
-     * @param px the X coordinate of point.
-     * @param py the Y coordinate of point.
-     * 
-     * @return true, if the point with specified coordinates [px, py] is 
-     * within the bounds of the rectangle, otherwise false.
+     * @param px
+     *            the X coordinate of point.
+     * @param py
+     *            the Y coordinate of point.
+     * @return true, if the point with specified coordinates [px, py] is within
+     *         the bounds of the rectangle, false otherwise.
      */
     public boolean contains(int px, int py) {
         if (isEmpty()) {
@@ -454,29 +497,32 @@
     }
 
     /**
-     * Determines whether or not the point given as a Point object 
-     * is within the bounds of the rectangle.
+     * Determines whether or not the point given as a Point object is within the
+     * bounds of the rectangle.
      * 
-     * @param p the Point object
-     * 
-     * @return true, if the point p is within the bounds of the 
-     * rectangle, otherwise false.
+     * @param p
+     *            the Point object
+     * @return true, if the point p is within the bounds of the rectangle,
+     *         otherwise false.
      */
     public boolean contains(Point p) {
         return contains(p.x, p.y);
     }
 
     /**
-     * Determines whether or not the rectangle specified by [rx, ry, rw, rh] 
+     * Determines whether or not the rectangle specified by [rx, ry, rw, rh]
      * parameters is located inside the original rectangle.
      * 
-     * @param rx the X coordinate of the rectangle to compare.
-     * @param ry the Y coordinate of the rectangle to compare.
-     * @param rw the width of the rectangle to compare.
-     * @param rh the height of the rectangle to compare.
-     * 
+     * @param rx
+     *            the X coordinate of the rectangle to compare.
+     * @param ry
+     *            the Y coordinate of the rectangle to compare.
+     * @param rw
+     *            the width of the rectangle to compare.
+     * @param rh
+     *            the height of the rectangle to compare.
      * @return true, if a rectangle with [rx, ry, rw, rh] parameters is entirely
-     * contained in the original rectangle, otherwise false.
+     *         contained in the original rectangle, false otherwise.
      */
     public boolean contains(int rx, int ry, int rw, int rh) {
         return contains(rx, ry) && contains(rx + rw - 1, ry + rh - 1);
@@ -486,25 +532,25 @@
      * Compares whether or not the rectangle specified by the Rectangle object
      * is located inside the original rectangle.
      * 
-     * @param r the Rectangle object.
-     * 
+     * @param r
+     *            the Rectangle object.
      * @return true, if the rectangle specified by Rectangle object is entirely
-     * contained in the original rectangle, otherwise false.
+     *         contained in the original rectangle, false otherwise.
      */
     public boolean contains(Rectangle r) {
         return contains(r.x, r.y, r.width, r.height);
     }
 
     /**
-     * Compares whether or not a point with specified coordinates [px, py] belongs 
-     * to a rectangle.
+     * Compares whether or not a point with specified coordinates [px, py]
+     * belongs to a rectangle.
      * 
-     * @param px the X coordinate of a point.
-     * @param py the Y coordinate of a point.
-     * 
-     * @return true, if a point with specified coordinates [px, py] belongs 
-     * to a rectangle, otherwise false.
-     * 
+     * @param px
+     *            the X coordinate of a point.
+     * @param py
+     *            the Y coordinate of a point.
+     * @return true, if a point with specified coordinates [px, py] belongs to a
+     *         rectangle, otherwise false.
      * @deprecated use contains(int, int) method.
      */
     @Deprecated
@@ -513,20 +559,19 @@
     }
 
     /**
-     * Returns the intersection of the original rectangle with the 
-     * specified Rectangle2D.
+     * Returns the intersection of the original rectangle with the specified
+     * Rectangle2D.
      * 
-     * @param r the Rectangle2D object.
-     * 
-     * @return the Rectangle2D object that is the result of intersecting 
-     * the original rectangle with the specified Rectangle2D.
-     * 
+     * @param r
+     *            the Rectangle2D object.
+     * @return the Rectangle2D object that is the result of intersecting the
+     *         original rectangle with the specified Rectangle2D.
      * @see java.awt.geom.Rectangle2D#createIntersection(java.awt.geom.Rectangle2D)
      */
     @Override
     public Rectangle2D createIntersection(Rectangle2D r) {
         if (r instanceof Rectangle) {
-            return intersection((Rectangle) r);
+            return intersection((Rectangle)r);
         }
         Rectangle2D dst = new Rectangle2D.Double();
         Rectangle2D.intersect(this, r, dst);
@@ -534,14 +579,13 @@
     }
 
     /**
-     * Returns the intersection of the original rectangle with the 
-     * specified rectangle. An empty rectangle is returned if there is no
-     * intersection.
+     * Returns the intersection of the original rectangle with the specified
+     * rectangle. An empty rectangle is returned if there is no intersection.
      * 
-     * @param r the Rectangle object.
-     * 
-     * @return the Rectangle object is result of the original rectangle with the 
-     * specified rectangle. 
+     * @param r
+     *            the Rectangle object.
+     * @return the Rectangle object is result of the original rectangle with the
+     *         specified rectangle.
      */
     public Rectangle intersection(Rectangle r) {
         int x1 = Math.max(x, r.x);
@@ -552,39 +596,38 @@
     }
 
     /**
-     * Determines whether or not the original rectangle intersects 
-     * the specified rectangle.
+     * Determines whether or not the original rectangle intersects the specified
+     * rectangle.
      * 
-     * @param r the Rectangle object.
-     * 
-     * @return true, if the two rectangles overlap; otherwise false.
+     * @param r
+     *            the Rectangle object.
+     * @return true, if the two rectangles overlap, false otherwise.
      */
     public boolean intersects(Rectangle r) {
         return !intersection(r).isEmpty();
     }
 
     /**
-     * Determines where the specified Point is located with respect to 
-     * the rectangle. This method computes whether the point is to the 
-     * right or to the left of the rectangle and whether it is above 
-     * or below the rectangle, and packs the result into an int by 
-     * using a binary OR operation with the following masks:
+     * Determines where the specified Point is located with respect to the
+     * rectangle. This method computes whether the point is to the right or to
+     * the left of the rectangle and whether it is above or below the rectangle,
+     * and packs the result into an integer by using a binary OR operation with
+     * the following masks:
      * <ul>
      *<li>Rectangle2D.OUT_LEFT</li>
      *<li>Rectangle2D.OUT_TOP</li>
      *<li>Rectangle2D.OUT_RIGHT</li>
      *<li>Rectangle2D.OUT_BOTTOM</li>
      *</ul>
-     *
-     * If the rectangle is empty, all masks are set, and if the 
-     * point is inside the rectangle, none are set.
+     * If the rectangle is empty, all masks are set, and if the point is inside
+     * the rectangle, none are set.
      * 
-     * @param px the X coordinate of the specified point.
-     * @param py the Y coordinate of the specified point.
-     * 
-     * @return the location of the Point relative to the rectangle 
-     * as the result of logical OR operation with all out masks.
-     * 
+     * @param px
+     *            the X coordinate of the specified point.
+     * @param py
+     *            the Y coordinate of the specified point.
+     * @return the location of the Point relative to the rectangle as the result
+     *         of logical OR operation with all out masks.
      * @see java.awt.geom.Rectangle2D#outcode(double, double)
      */
     @Override
@@ -593,23 +636,19 @@
 
         if (width <= 0) {
             code |= OUT_LEFT | OUT_RIGHT;
-        } else
-            if (px < x) {
-                code |= OUT_LEFT;
-            } else
-                if (px > x + width) {
-                    code |= OUT_RIGHT;
-                }
+        } else if (px < x) {
+            code |= OUT_LEFT;
+        } else if (px > x + width) {
+            code |= OUT_RIGHT;
+        }
 
         if (height <= 0) {
             code |= OUT_TOP | OUT_BOTTOM;
-        } else
-            if (py < y) {
-                code |= OUT_TOP;
-            } else
-                if (py > y + height) {
-                    code |= OUT_BOTTOM;
-                }
+        } else if (py < y) {
+            code |= OUT_TOP;
+        } else if (py > y + height) {
+            code |= OUT_BOTTOM;
+        }
 
         return code;
     }
@@ -617,10 +656,9 @@
     /**
      * Enlarges the rectangle to cover the specified Rectangle2D.
      * 
-     * @param r the Rectangle2D object.
-     * 
+     * @param r
+     *            the Rectangle2D object.
      * @return the union of the original and the specified Rectangle2D.
-     * 
      * @see java.awt.geom.Rectangle2D#createUnion(java.awt.geom.Rectangle2D)
      */
     @Override
@@ -636,8 +674,8 @@
     /**
      * Enlarges the rectangle to cover the specified rectangle.
      * 
-     * @param r the Rectangle.
-     * 
+     * @param r
+     *            the Rectangle.
      * @return the union of the original and the specified rectangle.
      */
     public Rectangle union(Rectangle r) {
@@ -649,11 +687,10 @@
     /**
      * Compares the original Rectangle with the specified object.
      * 
-     * @param obj the specified Object for comparison.
-     * 
-     * @return true, if the specified Object is a rectangle with the 
-     * same dimensions as the original rectangle, otherwise false.
-     * 
+     * @param obj
+     *            the specified Object for comparison.
+     * @return true, if the specified Object is a rectangle with the same
+     *         dimensions as the original rectangle, false otherwise.
      * @see java.awt.geom.Rectangle2D#equals(Object)
      */
     @Override
@@ -669,18 +706,18 @@
     }
 
     /**
-     * Returns a string representation of the rectangle; the string contains 
-     * [x, y, width, height] parameters of the rectangle.
+     * Returns a string representation of the rectangle; the string contains [x,
+     * y, width, height] parameters of the rectangle.
      * 
      * @return the string representation of the rectangle.
      */
     @Override
     public String toString() {
-        // The output format based on 1.5 release behaviour. It could be obtained in the following way
+        // The output format based on 1.5 release behaviour. It could be
+        // obtained in the following way
         // System.out.println(new Rectangle().toString())
         return getClass().getName() + "[x=" + x + ",y=" + y + //$NON-NLS-1$ //$NON-NLS-2$
-            ",width=" + width + ",height=" + height + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+                ",width=" + width + ",height=" + height + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
     }
 
 }
-
diff --git a/awt/java/awt/RenderingHints.java b/awt/java/awt/RenderingHints.java
index 4957884..acf6fa1 100644
--- a/awt/java/awt/RenderingHints.java
+++ b/awt/java/awt/RenderingHints.java
@@ -18,6 +18,7 @@
  * @author Alexey A. Petrenko
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.util.Collection;
@@ -27,224 +28,219 @@
 import java.util.Set;
 
 /**
- * The RenderingHints class represents preferences for the rendering algorithms. 
- * The preferences are arbitrary and can be specified by Map objects or by 
- * key-value pairs. 
+ * The RenderingHints class represents preferences for the rendering algorithms.
+ * The preferences are arbitrary and can be specified by Map objects or by
+ * key-value pairs.
+ * 
+ * @since Android 1.0
  */
 public class RenderingHints implements Map<Object, Object>, Cloneable {
-    
+
     /**
-     * The Constant KEY_ALPHA_INTERPOLATION - alpha interpolation rendering 
-     * hint key. 
+     * The Constant KEY_ALPHA_INTERPOLATION - alpha interpolation rendering hint
+     * key.
      */
     public static final Key KEY_ALPHA_INTERPOLATION = new KeyImpl(1);
-    
-    /** 
+
+    /**
      * The Constant VALUE_ALPHA_INTERPOLATION_DEFAULT - alpha interpolation
      * rendering hint value.
      */
-    public static final Object VALUE_ALPHA_INTERPOLATION_DEFAULT = new KeyValue(KEY_ALPHA_INTERPOLATION);
-    
-    /** 
+    public static final Object VALUE_ALPHA_INTERPOLATION_DEFAULT = new KeyValue(
+            KEY_ALPHA_INTERPOLATION);
+
+    /**
      * The Constant VALUE_ALPHA_INTERPOLATION_SPEED - alpha interpolation
      * rendering hint value.
      */
-    public static final Object VALUE_ALPHA_INTERPOLATION_SPEED = new KeyValue(KEY_ALPHA_INTERPOLATION);
-    
-    /** 
+    public static final Object VALUE_ALPHA_INTERPOLATION_SPEED = new KeyValue(
+            KEY_ALPHA_INTERPOLATION);
+
+    /**
      * The Constant VALUE_ALPHA_INTERPOLATION_QUALITY - alpha interpolation
      * rendering hint value.
      */
-    public static final Object VALUE_ALPHA_INTERPOLATION_QUALITY = new KeyValue(KEY_ALPHA_INTERPOLATION);
+    public static final Object VALUE_ALPHA_INTERPOLATION_QUALITY = new KeyValue(
+            KEY_ALPHA_INTERPOLATION);
 
-    /** 
-     * The Constant KEY_ANTIALIASING - antialiasing rendering 
-     * hint key. 
+    /**
+     * The Constant KEY_ANTIALIASING - antialiasing rendering hint key.
      */
     public static final Key KEY_ANTIALIASING = new KeyImpl(2);
-    
+
     /**
-     * The Constant VALUE_ANTIALIAS_DEFAULT - antialiasing
-     * rendering hint value. 
+     * The Constant VALUE_ANTIALIAS_DEFAULT - antialiasing rendering hint value.
      */
     public static final Object VALUE_ANTIALIAS_DEFAULT = new KeyValue(KEY_ANTIALIASING);
-    
-    /** 
-     * The Constant VALUE_ANTIALIAS_ON - antialiasing
-     * rendering hint value.
+
+    /**
+     * The Constant VALUE_ANTIALIAS_ON - antialiasing rendering hint value.
      */
     public static final Object VALUE_ANTIALIAS_ON = new KeyValue(KEY_ANTIALIASING);
-    
+
     /**
-     * The Constant VALUE_ANTIALIAS_OFF - antialiasing
-     * rendering hint value.
+     * The Constant VALUE_ANTIALIAS_OFF - antialiasing rendering hint value.
      */
     public static final Object VALUE_ANTIALIAS_OFF = new KeyValue(KEY_ANTIALIASING);
 
-    /** 
-     * The Constant KEY_COLOR_RENDERING  - color rendering 
-     * hint key.
+    /**
+     * The Constant KEY_COLOR_RENDERING - color rendering hint key.
      */
     public static final Key KEY_COLOR_RENDERING = new KeyImpl(3);
-    
+
     /**
-     * The Constant VALUE_COLOR_RENDER_DEFAULT - color
-     * rendering hint value. 
+     * The Constant VALUE_COLOR_RENDER_DEFAULT - color rendering hint value.
      */
     public static final Object VALUE_COLOR_RENDER_DEFAULT = new KeyValue(KEY_COLOR_RENDERING);
-    
-    /** 
-     * The Constant VALUE_COLOR_RENDER_SPEED  - color
-     * rendering hint value. 
+
+    /**
+     * The Constant VALUE_COLOR_RENDER_SPEED - color rendering hint value.
      */
     public static final Object VALUE_COLOR_RENDER_SPEED = new KeyValue(KEY_COLOR_RENDERING);
-    
-    /** 
-     * The Constant VALUE_COLOR_RENDER_QUALITY - color
-     * rendering hint value.
+
+    /**
+     * The Constant VALUE_COLOR_RENDER_QUALITY - color rendering hint value.
      */
     public static final Object VALUE_COLOR_RENDER_QUALITY = new KeyValue(KEY_COLOR_RENDERING);
 
     /**
-     *  The Constant KEY_DITHERING  - dithering
-     * rendering hint key.
+     * The Constant KEY_DITHERING - dithering rendering hint key.
      */
     public static final Key KEY_DITHERING = new KeyImpl(4);
-    
+
     /**
-     * The Constant VALUE_DITHER_DEFAULT - dithering
-     * rendering hint value.
+     * The Constant VALUE_DITHER_DEFAULT - dithering rendering hint value.
      */
     public static final Object VALUE_DITHER_DEFAULT = new KeyValue(KEY_DITHERING);
-    
-    /** 
-     * The Constant VALUE_DITHER_DISABLE - dithering
-     * rendering hint value.
+
+    /**
+     * The Constant VALUE_DITHER_DISABLE - dithering rendering hint value.
      */
     public static final Object VALUE_DITHER_DISABLE = new KeyValue(KEY_DITHERING);
-    
-    /** 
-     * The Constant VALUE_DITHER_DISABLE - dithering
-     * rendering hint value.
+
+    /**
+     * The Constant VALUE_DITHER_DISABLE - dithering rendering hint value.
      */
     public static final Object VALUE_DITHER_ENABLE = new KeyValue(KEY_DITHERING);
 
-    /** 
-     * The Constant KEY_FRACTIONALMETRICS - fractional metrics
-     * rendering hint key.
+    /**
+     * The Constant KEY_FRACTIONALMETRICS - fractional metrics rendering hint
+     * key.
      */
     public static final Key KEY_FRACTIONALMETRICS = new KeyImpl(5);
-    
+
     /**
      * The Constant VALUE_FRACTIONALMETRICS_DEFAULT - fractional metrics
      * rendering hint value.
      */
     public static final Object VALUE_FRACTIONALMETRICS_DEFAULT = new KeyValue(KEY_FRACTIONALMETRICS);
-    
+
     /**
-     * The Constant VALUE_FRACTIONALMETRICS_ON - fractional metrics
-     * rendering hint value.
+     * The Constant VALUE_FRACTIONALMETRICS_ON - fractional metrics rendering
+     * hint value.
      */
     public static final Object VALUE_FRACTIONALMETRICS_ON = new KeyValue(KEY_FRACTIONALMETRICS);
-    
+
     /**
-     *  The Constant VALUE_FRACTIONALMETRICS_OFF - fractional metrics
-     * rendering hint value.
+     * The Constant VALUE_FRACTIONALMETRICS_OFF - fractional metrics rendering
+     * hint value.
      */
     public static final Object VALUE_FRACTIONALMETRICS_OFF = new KeyValue(KEY_FRACTIONALMETRICS);
 
-    /** 
-     * The Constant KEY_INTERPOLATION - interpolation
-     * rendering hint key.
+    /**
+     * The Constant KEY_INTERPOLATION - interpolation rendering hint key.
      */
     public static final Key KEY_INTERPOLATION = new KeyImpl(6);
-    
-    /** 
-     * The Constant VALUE_INTERPOLATION_BICUBIC - interpolation
-     * rendering hint value. 
+
+    /**
+     * The Constant VALUE_INTERPOLATION_BICUBIC - interpolation rendering hint
+     * value.
      */
     public static final Object VALUE_INTERPOLATION_BICUBIC = new KeyValue(KEY_INTERPOLATION);
-    
+
     /**
-     * The Constant VALUE_INTERPOLATION_BILINEAR - interpolation
-     * rendering hint value.
+     * The Constant VALUE_INTERPOLATION_BILINEAR - interpolation rendering hint
+     * value.
      */
     public static final Object VALUE_INTERPOLATION_BILINEAR = new KeyValue(KEY_INTERPOLATION);
-    
-    /** The Constant VALUE_INTERPOLATION_NEAREST_NEIGHBOR - interpolation
+
+    /**
+     * The Constant VALUE_INTERPOLATION_NEAREST_NEIGHBOR - interpolation
      * rendering hint value.
      */
-    public static final Object VALUE_INTERPOLATION_NEAREST_NEIGHBOR = new KeyValue(KEY_INTERPOLATION);
+    public static final Object VALUE_INTERPOLATION_NEAREST_NEIGHBOR = new KeyValue(
+            KEY_INTERPOLATION);
 
     /**
      * The Constant KEY_RENDERING - rendering hint key.
      */
     public static final Key KEY_RENDERING = new KeyImpl(7);
-    
-    /** 
-     * The Constant VALUE_RENDER_DEFAULT - rendering hint value. 
+
+    /**
+     * The Constant VALUE_RENDER_DEFAULT - rendering hint value.
      */
     public static final Object VALUE_RENDER_DEFAULT = new KeyValue(KEY_RENDERING);
-    
-    /** 
-     * The Constant VALUE_RENDER_SPEED - rendering hint value. 
+
+    /**
+     * The Constant VALUE_RENDER_SPEED - rendering hint value.
      */
     public static final Object VALUE_RENDER_SPEED = new KeyValue(KEY_RENDERING);
-    
-    /** 
-     * The Constant VALUE_RENDER_QUALITY - rendering hint value. 
+
+    /**
+     * The Constant VALUE_RENDER_QUALITY - rendering hint value.
      */
     public static final Object VALUE_RENDER_QUALITY = new KeyValue(KEY_RENDERING);
 
-    /** 
-     * The Constant KEY_STROKE_CONTROL - stroke control hint key. 
+    /**
+     * The Constant KEY_STROKE_CONTROL - stroke control hint key.
      */
     public static final Key KEY_STROKE_CONTROL = new KeyImpl(8);
-    
-    /** 
-     * The Constant VALUE_STROKE_DEFAULT - stroke hint value. 
+
+    /**
+     * The Constant VALUE_STROKE_DEFAULT - stroke hint value.
      */
     public static final Object VALUE_STROKE_DEFAULT = new KeyValue(KEY_STROKE_CONTROL);
-    
-    /** 
-     * The Constant VALUE_STROKE_NORMALIZE - stroke hint value. 
+
+    /**
+     * The Constant VALUE_STROKE_NORMALIZE - stroke hint value.
      */
     public static final Object VALUE_STROKE_NORMALIZE = new KeyValue(KEY_STROKE_CONTROL);
-    
-    /** 
-     * The Constant VALUE_STROKE_PURE - stroke hint value. 
+
+    /**
+     * The Constant VALUE_STROKE_PURE - stroke hint value.
      */
     public static final Object VALUE_STROKE_PURE = new KeyValue(KEY_STROKE_CONTROL);
 
-    /** 
-     * The Constant KEY_TEXT_ANTIALIASING - text antialiasing hint key. 
+    /**
+     * The Constant KEY_TEXT_ANTIALIASING - text antialiasing hint key.
      */
     public static final Key KEY_TEXT_ANTIALIASING = new KeyImpl(9);
-    
+
     /**
-     *  The Constant VALUE_TEXT_ANTIALIAS_DEFAULT - text antialiasing hint key. 
+     * The Constant VALUE_TEXT_ANTIALIAS_DEFAULT - text antialiasing hint key.
      */
     public static final Object VALUE_TEXT_ANTIALIAS_DEFAULT = new KeyValue(KEY_TEXT_ANTIALIASING);
-    
+
     /**
      * The Constant VALUE_TEXT_ANTIALIAS_ON - text antialiasing hint key.
      */
     public static final Object VALUE_TEXT_ANTIALIAS_ON = new KeyValue(KEY_TEXT_ANTIALIASING);
-    
+
     /**
-     * The Constant VALUE_TEXT_ANTIALIAS_OFF - text antialiasing hint key. 
+     * The Constant VALUE_TEXT_ANTIALIAS_OFF - text antialiasing hint key.
      */
     public static final Object VALUE_TEXT_ANTIALIAS_OFF = new KeyValue(KEY_TEXT_ANTIALIASING);
 
     /** The map. */
     private HashMap<Object, Object> map = new HashMap<Object, Object>();
-    
+
     /**
-     * Instantiates a new rendering hints object from specified Map object with defined
-     * key/value pairs or null for empty RenderingHints. 
+     * Instantiates a new rendering hints object from specified Map object with
+     * defined key/value pairs or null for empty RenderingHints.
      * 
-     * @param map the Map object with defined key/value pairs or null for
-     * empty RenderingHints. 
+     * @param map
+     *            the Map object with defined key/value pairs or null for empty
+     *            RenderingHints.
      */
     public RenderingHints(Map<Key, ?> map) {
         super();
@@ -254,10 +250,13 @@
     }
 
     /**
-     * Instantiates a new rendering hints object with the specified key/value pair.
+     * Instantiates a new rendering hints object with the specified key/value
+     * pair.
      * 
-     * @param key the key of hint property.
-     * @param value the value of hint property.
+     * @param key
+     *            the key of hint property.
+     * @param value
+     *            the value of hint property.
      */
     public RenderingHints(Key key, Object value) {
         super();
@@ -268,21 +267,22 @@
      * Adds the properties represented by key/value pairs from the specified
      * RenderingHints object to current object.
      * 
-     * @param hints the RenderingHints to be added.
+     * @param hints
+     *            the RenderingHints to be added.
      */
     public void add(RenderingHints hints) {
         map.putAll(hints.map);
     }
 
     /**
-     * Puts the specified value to the specified key. Neither the key nor 
-     * the value can be null.
+     * Puts the specified value to the specified key. Neither the key nor the
+     * value can be null.
      * 
-     * @param key the rendering hint key.
-     * @param value the rendering hint value. 
-     * 
+     * @param key
+     *            the rendering hint key.
+     * @param value
+     *            the rendering hint value.
      * @return the previous rendering hint value assigned to the key or null.
-     * 
      */
     public Object put(Object key, Object value) {
         if (!((Key)key).isCompatibleValue(value)) {
@@ -293,13 +293,13 @@
     }
 
     /**
-     * Removes the specified key and corresponding value from 
-     * the RenderingHints object.
+     * Removes the specified key and corresponding value from the RenderingHints
+     * object.
      * 
-     * @param key the specified hint key to be removed.
-     * 
-     * @return the object of previous rendering hint value which is 
-     * assigned to the specified key, or null.
+     * @param key
+     *            the specified hint key to be removed.
+     * @return the object of previous rendering hint value which is assigned to
+     *         the specified key, or null.
      */
     public Object remove(Object key) {
         return map.remove(key);
@@ -308,8 +308,8 @@
     /**
      * Gets the value assigned to the specified key.
      * 
-     * @param key the rendering hint key.
-     * 
+     * @param key
+     *            the rendering hint key.
      * @return the object assigned to the specified key.
      */
     public Object get(Object key) {
@@ -319,7 +319,7 @@
     /**
      * Returns a set of rendering hints keys for current RenderingHints object.
      * 
-     * @return the set of rendering hints keys. 
+     * @return the set of rendering hints keys.
      */
     public Set<Object> keySet() {
         return map.keySet();
@@ -336,23 +336,23 @@
     }
 
     /**
-     * Puts all of the preferences from the specified Map into 
-     * the current RenderingHints object. These mappings replace 
-     * all existing preferences.
+     * Puts all of the preferences from the specified Map into the current
+     * RenderingHints object. These mappings replace all existing preferences.
      * 
-     * @param m the specified Map of preferences.
+     * @param m
+     *            the specified Map of preferences.
      */
     public void putAll(Map<?, ?> m) {
         if (m instanceof RenderingHints) {
-            map.putAll(((RenderingHints) m).map);
+            map.putAll(((RenderingHints)m).map);
         } else {
             Set<?> entries = m.entrySet();
 
-            if (entries != null){
+            if (entries != null) {
                 Iterator<?> it = entries.iterator();
                 while (it.hasNext()) {
-                    Map.Entry<?, ?> entry = (Map.Entry<?, ?>) it.next();
-                    Key key = (Key) entry.getKey();
+                    Map.Entry<?, ?> entry = (Map.Entry<?, ?>)it.next();
+                    Key key = (Key)entry.getKey();
                     Object val = entry.getValue();
                     put(key, val);
                 }
@@ -361,7 +361,8 @@
     }
 
     /**
-     * Returns a Collection of values contained in current RenderingHints object.
+     * Returns a Collection of values contained in current RenderingHints
+     * object.
      * 
      * @return the Collection of RenderingHints's values.
      */
@@ -373,10 +374,10 @@
      * Checks whether or not current RenderingHints object contains at least one
      * the value which is equal to the specified Object.
      * 
-     * @param value the specified Object.
-     * 
+     * @param value
+     *            the specified Object.
      * @return true, if the specified object is assigned to at least one
-     * RenderingHint's key, false otherwise.
+     *         RenderingHint's key, false otherwise.
      */
     public boolean containsValue(Object value) {
         return map.containsValue(value);
@@ -386,11 +387,10 @@
      * Checks whether or not current RenderingHints object contains the key
      * which is equal to the specified Object.
      * 
-     * @param key the specified Object.
-     * 
+     * @param key
+     *            the specified Object.
      * @return true, if the RenderingHints object contains the specified Object
-     * as a key, false otherwise.
-     * 
+     *         as a key, false otherwise.
      */
     public boolean containsKey(Object key) {
         if (key == null) {
@@ -401,8 +401,8 @@
     }
 
     /**
-     * Checks whether or not the RenderingHints object contains any 
-     * key/value pairs.
+     * Checks whether or not the RenderingHints object contains any key/value
+     * pairs.
      * 
      * @return true, if the RenderingHints object is empty, false otherwise.
      */
@@ -429,11 +429,10 @@
     /**
      * Compares the RenderingHints object with the specified object.
      * 
-     * @param o the specified Object to be compaired.
-     * 
-     * @return true, if the Object is a Map whose key/value pairs 
-     * match this RenderingHints' key/value pairs, 
-     * false otherwise.
+     * @param o
+     *            the specified Object to be compared.
+     * @return true, if the Object is a Map whose key/value pairs match this
+     *         RenderingHints' key/value pairs, false otherwise.
      */
     @Override
     public boolean equals(Object o) {
@@ -452,7 +451,7 @@
             Key key = (Key)it.next();
             Object v1 = get(key);
             Object v2 = m.get(key);
-            if (!(v1==null?v2==null:v1.equals(v2))) {
+            if (!(v1 == null ? v2 == null : v1.equals(v2))) {
                 return false;
             }
         }
@@ -485,28 +484,30 @@
     /**
      * Returns the string representation of the RenderingHints object.
      * 
-     * @return the String object which represents RenderingHints object. 
+     * @return the String object which represents RenderingHints object.
      */
     @Override
     public String toString() {
-        return "RenderingHints["+map.toString()+"]"; //$NON-NLS-1$ //$NON-NLS-2$
+        return "RenderingHints[" + map.toString() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
     }
 
     /**
-     * The RenderingHints.Key class is abstract and defines a base type for 
-     * all RenderingHints keys.
+     * The RenderingHints.Key class is abstract and defines a base type for all
+     * RenderingHints keys.
+     * 
+     * @since Android 1.0
      */
     public abstract static class Key {
-        
+
         /** The key. */
         private final int key;
 
         /**
-         * Instantiates a new key with unique int identifier. 
-         * No two objects of the same subclass with the same integer key
-         * can be instantiated. 
+         * Instantiates a new key with unique integer identifier. No two objects
+         * of the same subclass with the same integer key can be instantiated.
          * 
-         * @param key the unique key.
+         * @param key
+         *            the unique key.
          */
         protected Key(int key) {
             this.key = key;
@@ -515,10 +516,10 @@
         /**
          * Compares the Key object with the specified object.
          * 
-         * @param o the specified Object to be compaired.
-         * 
-         * @return true, if the Key is equal to the specified object, 
-         * false otherwise.
+         * @param o
+         *            the specified Object to be compared.
+         * @return true, if the Key is equal to the specified object, false
+         *         otherwise.
          */
         @Override
         public final boolean equals(Object o) {
@@ -536,11 +537,11 @@
         }
 
         /**
-         * Returns int unique key with which this Key object has been 
+         * Returns integer unique key with which this Key object has been
          * instantiated.
          * 
-         * @return the int unique key with which this Key object has been 
-         * instantiated.
+         * @return the integer unique key with which this Key object has been
+         *         instantiated.
          */
         protected final int intKey() {
             return key;
@@ -549,10 +550,10 @@
         /**
          * Checks whether or not specified value is compatible with the Key.
          * 
-         * @param val the Object.
-         * 
+         * @param val
+         *            the Object.
          * @return true, if the specified value is compatible with the Key,
-         * false otherwise.
+         *         false otherwise.
          */
         public abstract boolean isCompatibleValue(Object val);
     }
@@ -563,9 +564,10 @@
     private static class KeyImpl extends Key {
 
         /**
-         * Instantiates a new key impl.
+         * Instantiates a new key implementation.
          * 
-         * @param key the key
+         * @param key
+         *            the key.
          */
         protected KeyImpl(int key) {
             super(key);
@@ -585,14 +587,17 @@
      * Private class KeyValue is used as value for Key class instance.
      */
     private static class KeyValue {
-        
-        /** The key. */
+
+        /**
+         * The key.
+         */
         private final Key key;
 
         /**
          * Instantiates a new key value.
          * 
-         * @param key the key
+         * @param key
+         *            the key.
          */
         protected KeyValue(Key key) {
             this.key = key;
diff --git a/awt/java/awt/Shape.java b/awt/java/awt/Shape.java
index 3dbad25..59bc623 100644
--- a/awt/java/awt/Shape.java
+++ b/awt/java/awt/Shape.java
@@ -18,6 +18,7 @@
  * @author Alexey A. Petrenko
  * @version $Revision$
  */
+
 package java.awt;
 
 import java.awt.geom.AffineTransform;
@@ -26,137 +27,136 @@
 import java.awt.geom.Rectangle2D;
 
 /**
- * The Shape interface defines a geometric shape defined by a boundary 
- * (outline) path. The path outline can be accessed through a 
- * PathIterator object. The Shape 
- * interface provides methods for obtaining the bounding box (which is 
- * the smallest rectangle containing the shape and for obtaining a PathIterator 
- * object for current Shape, as well as utility methods which 
- * determine if the Shape contains or intersects a Rectangle or contains a Point.
+ * The Shape interface defines a geometric shape defined by a boundary (outline)
+ * path. The path outline can be accessed through a PathIterator object. The
+ * Shape interface provides methods for obtaining the bounding box (which is the
+ * smallest rectangle containing the shape and for obtaining a PathIterator
+ * object for current Shape, as well as utility methods which determine if the
+ * Shape contains or intersects a Rectangle or contains a Point.
+ * 
+ * @since Android 1.0
  */
 public interface Shape {
-    
+
     /**
-     * Checks whether or not the point with specified coordinates lies inside 
+     * Checks whether or not the point with specified coordinates lies inside
      * the Shape.
      * 
-     * @param x the X coordinate.
-     * @param y the Y coordinate.
-     * 
-     * @return true, if the specified coordinates lie inside the Shape,
-     * otherwise false.
+     * @param x
+     *            the X coordinate.
+     * @param y
+     *            the Y coordinate.
+     * @return true, if the specified coordinates lie inside the Shape, false
+     *         otherwise.
      */
     public boolean contains(double x, double y);
 
     /**
-     * Checks whether or not the rectangle with specified 
-     * [x, y, width, height] parameters lies inside the Shape.
+     * Checks whether or not the rectangle with specified [x, y, width, height]
+     * parameters lies inside the Shape.
      * 
-     * @param x the X double coordinate of the rectangle's upper left 
-     * corner.
-     * @param y the Y double coordinate of the rectangle's upper left 
-     * corner.
-     * @param w the width of rectangle.
-     * @param h the height of rectangle.
-     * 
-     * @return true, if the specified rectangle lies inside the Shape,
-     * otherwise false.
+     * @param x
+     *            the X double coordinate of the rectangle's upper left corner.
+     * @param y
+     *            the Y double coordinate of the rectangle's upper left corner.
+     * @param w
+     *            the width of rectangle.
+     * @param h
+     *            the height of rectangle.
+     * @return true, if the specified rectangle lies inside the Shape, false
+     *         otherwise.
      */
     public boolean contains(double x, double y, double w, double h);
 
     /**
      * Checks whether or not the specified Point2D lies inside the Shape.
      * 
-     * @param point the Point2D object.
-     * 
-     * @return true, if the specified Point2D lies inside the Shape,
-     * otherwise false.
+     * @param point
+     *            the Point2D object.
+     * @return true, if the specified Point2D lies inside the Shape, false
+     *         otherwise.
      */
     public boolean contains(Point2D point);
 
     /**
      * Checks whether or not the specified rectangle lies inside the Shape.
      * 
-     * @param r the Rectangle2D object.
-     * 
-     * @return true, if the specified rectangle lies inside the Shape,
-     * otherwise false.
+     * @param r
+     *            the Rectangle2D object.
+     * @return true, if the specified rectangle lies inside the Shape, false
+     *         otherwise.
      */
     public boolean contains(Rectangle2D r);
 
     /**
-     * Gets the bounding rectangle of the Shape. The bounding rectangle
-     * is the smallest rectangle which contains the Shape.
+     * Gets the bounding rectangle of the Shape. The bounding rectangle is the
+     * smallest rectangle which contains the Shape.
      * 
      * @return the bounding rectangle of the Shape.
      */
     public Rectangle getBounds();
 
     /**
-     * Gets the Rectangle2D which represents Shape bounds.
-     * The bounding rectangle is the smallest rectangle which contains 
-     * the Shape.
+     * Gets the Rectangle2D which represents Shape bounds. The bounding
+     * rectangle is the smallest rectangle which contains the Shape.
      * 
      * @return the bounding rectangle of the Shape.
      */
     public Rectangle2D getBounds2D();
 
     /**
-     * Gets the PathIterator object of the Shape which provides 
-     * access to the shape's boundary modified 
-     * by the specified AffineTransform.
+     * Gets the PathIterator object of the Shape which provides access to the
+     * shape's boundary modified by the specified AffineTransform.
      * 
-     * @param at the specified AffineTransform object, or null.
-     * 
+     * @param at
+     *            the specified AffineTransform object or null.
      * @return PathIterator object for the Shape.
      */
     public PathIterator getPathIterator(AffineTransform at);
 
     /**
-     * Gets the PathIterator object of the Shape which provides 
-     * access to the coordinates of the shapes boundary modified 
-     * by the specified AffineTransform. The flatness parameter
-     * defines the amount of subdivision of the curved segments and
-     * specifies the maximum distance which every point on the 
-     * unflattened transformed curve can deviate from the returned 
-     * flattened path segments.  
+     * Gets the PathIterator object of the Shape which provides access to the
+     * coordinates of the shapes boundary modified by the specified
+     * AffineTransform. The flatness parameter defines the amount of subdivision
+     * of the curved segments and specifies the maximum distance which every
+     * point on the unflattened transformed curve can deviate from the returned
+     * flattened path segments.
      * 
-     * @param at the specified AffineTransform object, or null.
-     * @param flatness the maximum number of the control points for 
-     * a given curve which varies from colinear before a subdivided 
-     * curve is replaced by a straight line connecting the endpoints. 
-     * 
+     * @param at
+     *            the specified AffineTransform object or null.
+     * @param flatness
+     *            the maximum number of the control points for a given curve
+     *            which varies from colinear before a subdivided curve is
+     *            replaced by a straight line connecting the endpoints.
      * @return PathIterator object for the Shape.
      */
     public PathIterator getPathIterator(AffineTransform at, double flatness);
 
     /**
-     * Checks whether or not the interior of rectangular specified by 
-     * [x, y, width, height] parameters intersects the interior of
-     * the Shape.
+     * Checks whether or not the interior of rectangular specified by [x, y,
+     * width, height] parameters intersects the interior of the Shape.
      * 
-     * @param x the X double coordinate of the rectangle's upper left
-     * corner.
-     * @param y the Y double coordinate of the rectangle's upper left 
-     * corner.
-     * @param w the width of rectangle.
-     * @param h the height of rectangle.
-     * 
-     * @return true, if the rectangle specified by 
-     * [x, y, width, height] parameters intersects the interior of
-     * the Shape, otherwise false.
-     * 
+     * @param x
+     *            the X double coordinate of the rectangle's upper left corner.
+     * @param y
+     *            the Y double coordinate of the rectangle's upper left corner.
+     * @param w
+     *            the width of rectangle.
+     * @param h
+     *            the height of rectangle.
+     * @return true, if the rectangle specified by [x, y, width, height]
+     *         parameters intersects the interior of the Shape, false otherwise.
      */
     public boolean intersects(double x, double y, double w, double h);
 
     /**
-     * Checks whether or not the interior of rectangl specified by 
-     * Rectangle2D object intersects the interior of the Shape.
+     * Checks whether or not the interior of rectangle specified by Rectangle2D
+     * object intersects the interior of the Shape.
      * 
-     * @param r the Rectangle2D object.
-     * 
-     * @return true, if the Rectangle2D intersects the interior of
-     * the Shape, otherwise false.
+     * @param r
+     *            the Rectangle2D object.
+     * @return true, if the Rectangle2D intersects the interior of the Shape,
+     *         otherwise false.
      */
     public boolean intersects(Rectangle2D r);
 }
diff --git a/awt/java/awt/Stroke.java b/awt/java/awt/Stroke.java
index e6d683d..6d17a23 100644
--- a/awt/java/awt/Stroke.java
+++ b/awt/java/awt/Stroke.java
@@ -18,29 +18,32 @@
  * @author Alexey A. Petrenko
  * @version $Revision$
  */
+
 package java.awt;
 
 /**
- * The Stroke interface gives a pen style to be used by the 
- * Graphics2D interface. It provides a means for getting a stroked version 
- * of a shape, which is the version that is suitable for drawing via 
- * the Graphics2D interface. Stroking a shape gives the shape's outline
- * a width or drawing style. 
+ * The Stroke interface gives a pen style to be used by the Graphics2D
+ * interface. It provides a means for getting a stroked version of a shape,
+ * which is the version that is suitable for drawing via the Graphics2D
+ * interface. Stroking a shape gives the shape's outline a width or drawing
+ * style.
  * <p>
- * The Draw methods from Graphics2D interface should use the Stroke object for 
- * rendering the shape's outline. The stroke should be set by 
- * setStroke(java.awt.Stroke) method of the Graphics2D interface. 
+ * The Draw methods from Graphics2D interface should use the Stroke object for
+ * rendering the shape's outline. The stroke should be set by
+ * setStroke(java.awt.Stroke) method of the Graphics2D interface.
+ * 
  * @see java.awt.Graphics2D#setStroke(java.awt.Stroke)
+ * @since Android 1.0
  */
 public interface Stroke {
-    
+
     /**
-     * Creates the stroked shape, which is the version that is suitable for drawing via 
-     * the Graphics2D interface. Stroking a shape gives the shape's outline
-     * a width or drawing style.
+     * Creates the stroked shape, which is the version that is suitable for
+     * drawing via the Graphics2D interface. Stroking a shape gives the shape's
+     * outline a width or drawing style.
      * 
-     * @param p the original shape.
-     * 
+     * @param p
+     *            the original shape.
      * @return the stroked shape.
      */
     public Shape createStrokedShape(Shape p);
diff --git a/awt/java/awt/Toolkit.java b/awt/java/awt/Toolkit.java
index 0c066b2..e38d524 100644
--- a/awt/java/awt/Toolkit.java
+++ b/awt/java/awt/Toolkit.java
@@ -56,34 +56,50 @@
 import org.apache.harmony.awt.wtk.ShutdownWatchdog;
 import org.apache.harmony.awt.wtk.Synchronizer;
 import org.apache.harmony.awt.wtk.WTK;
+import org.apache.harmony.luni.util.NotImplementedException;
 
 /**
- * The Toolkit class is the representation of the platform-specific 
- * Abstract Window Toolkit implementation. Toolkit's subclasses 
- * are used to bind the various components to particular native 
- * toolkit implementations.
+ * The Toolkit class is the representation of the platform-specific Abstract
+ * Window Toolkit implementation. Toolkit's subclasses are used to bind the
+ * various components to particular native toolkit implementations.
+ * 
+ * @since Android 1.0
  */
 public abstract class Toolkit {
-    
-    /** The Constant RECOURCE_PATH. */
+
+    /**
+     * The Constant RECOURCE_PATH.
+     */
     private static final String RECOURCE_PATH = "org.apache.harmony.awt.resources.AWTProperties"; //$NON-NLS-1$
-    
-    /** The Constant properties. */
+
+    /**
+     * The Constant properties.
+     */
     private static final ResourceBundle properties = loadResources(RECOURCE_PATH);
-    
-    /** The dispatcher. */
+
+    /**
+     * The dispatcher.
+     */
     Dispatcher dispatcher;
 
-    /** The system event queue core. */
+    /**
+     * The system event queue core.
+     */
     private EventQueueCore systemEventQueueCore;
 
-    /** The dispatch thread. */
+    /**
+     * The dispatch thread.
+     */
     EventDispatchThread dispatchThread;
 
-    /** The native thread. */
+    /**
+     * The native thread.
+     */
     NativeEventThread nativeThread;
 
-    /** The awt events manager. */
+    /**
+     * The AWT events manager.
+     */
     protected AWTEventsManager awtEventsManager;
 
     /**
@@ -92,47 +108,68 @@
     private class AWTTreeLock {
     }
 
-    /** The awt tree lock. */
+    /**
+     * The AWT tree lock.
+     */
     final Object awtTreeLock = new AWTTreeLock();
 
-    /** The synchronizer. */
+    /**
+     * The synchronizer.
+     */
     private final Synchronizer synchronizer = ContextStorage.getSynchronizer();
 
-    /** The shutdown watchdog. */
+    /**
+     * The shutdown watchdog.
+     */
     final ShutdownWatchdog shutdownWatchdog = new ShutdownWatchdog();
 
-    /** The auto number. */
+    /**
+     * The auto number.
+     */
     final AutoNumber autoNumber = new AutoNumber();
 
-    /** The event type lookup. */
+    /**
+     * The event type lookup.
+     */
     final AWTEvent.EventTypeLookup eventTypeLookup = new AWTEvent.EventTypeLookup();
 
-    /** The b dynamic layout set. */    
+    /**
+     * The b dynamic layout set.
+     */
     private boolean bDynamicLayoutSet = true;
 
-    /** The set of desktop properties that user set directly. */
+    /**
+     * The set of desktop properties that user set directly.
+     */
     private final HashSet<String> userPropSet = new HashSet<String>();
 
-    /** The desktop properties. */
+    /**
+     * The desktop properties.
+     */
     protected Map<String, Object> desktopProperties;
 
-    /** The desktop props support. */
+    /**
+     * The desktop props support.
+     */
     protected PropertyChangeSupport desktopPropsSupport;
 
     /**
-     * For this component the native window is being created
-     * It is used in the callback-driven window creation
-     * (e.g. on Windows in the handler of WM_CREATE event)
-     * to establish the connection between this component
-     * and its native window.
+     * For this component the native window is being created It is used in the
+     * callback-driven window creation (e.g. on Windows in the handler of
+     * WM_CREATE event) to establish the connection between this component and
+     * its native window.
      */
     private Object recentNativeWindowComponent;
 
-    /** The wtk. */
+    /**
+     * The wtk.
+     */
     private WTK wtk;
 
     /**
      * The Class ComponentInternalsImpl.
+     * 
+     * @since Android 1.0
      */
     protected final class ComponentInternalsImpl extends ComponentInternals {
 
@@ -143,13 +180,15 @@
         public void shutdown() {
             dispatchThread.shutdown();
         }
-       
+
         /**
-         * Sets the desktop property to the specified value and fires a property 
-         * change event.  
+         * Sets the desktop property to the specified value and fires a property
+         * change event.
          * 
-         * @param name the name of property.
-         * @param value the new value of property.
+         * @param name
+         *            the name of property.
+         * @param value
+         *            the new value of property.
          */
         @Override
         public void setDesktopProperty(String name, Object value) {
@@ -157,12 +196,12 @@
         }
     }
 
-
     /**
-     * A lot of methods must throw HeadlessException
-     * if <code>GraphicsEnvironment.isHeadless()</code> returns <code>true</code>.
+     * A lot of methods must throw HeadlessException if
+     * <code>GraphicsEnvironment.isHeadless()</code> returns <code>true</code>.
      * 
-     * @throws HeadlessException the headless exception
+     * @throws HeadlessException
+     *             the headless exception.
      */
     static void checkHeadless() throws HeadlessException {
         if (GraphicsEnvironment.getLocalGraphicsEnvironment().isHeadlessInstance())
@@ -170,51 +209,49 @@
     }
 
     /**
-     * Lock awt.
+     * Lock AWT.
      */
     final void lockAWT() {
         synchronizer.lock();
     }
 
     /**
-     * Static lock awt.
+     * Static lock AWT.
      */
     static final void staticLockAWT() {
         ContextStorage.getSynchronizer().lock();
     }
 
     /**
-     * Unlock awt.
+     * Unlock AWT.
      */
     final void unlockAWT() {
         synchronizer.unlock();
     }
 
     /**
-     * Static unlock awt.
+     * Static unlock AWT.
      */
     static final void staticUnlockAWT() {
         ContextStorage.getSynchronizer().unlock();
-    }    
+    }
 
     /**
-     * InvokeAndWait under AWT lock. W/o this method system can hang up.
-     * Added to support modality (Dialog.show() & PopupMenu.show()) from
-     * not event dispatch thread. Use in other cases is not recommended.
-     *
-     * Still can be called only for whole API methods that
-     * cannot be called from other classes API methods.
-     * Examples:
-     *      show() for modal dialogs    - correct, only user can call it,
-     *                                      directly or through setVisible(true)
-     *      setBounds() for components  - incorrect, setBounds()
-     *                                      can be called from layoutContainer()
-     *                                      for layout managers
+     * InvokeAndWait under AWT lock. W/o this method system can hang up. Added
+     * to support modality (Dialog.show() & PopupMenu.show()) from not event
+     * dispatch thread. Use in other cases is not recommended. Still can be
+     * called only for whole API methods that cannot be called from other
+     * classes API methods. Examples: show() for modal dialogs - correct, only
+     * user can call it, directly or through setVisible(true) setBounds() for
+     * components - incorrect, setBounds() can be called from layoutContainer()
+     * for layout managers
      * 
-     * @param runnable the runnable
-     * 
-     * @throws InterruptedException the interrupted exception
-     * @throws InvocationTargetException the invocation target exception
+     * @param runnable
+     *            the runnable.
+     * @throws InterruptedException
+     *             the interrupted exception.
+     * @throws InvocationTargetException
+     *             the invocation target exception.
      */
     final void unsafeInvokeAndWait(Runnable runnable) throws InterruptedException,
             InvocationTargetException {
@@ -229,7 +266,7 @@
     /**
      * Gets the synchronizer.
      * 
-     * @return the synchronizer
+     * @return the synchronizer.
      */
     final Synchronizer getSynchronizer() {
         return synchronizer;
@@ -238,19 +275,20 @@
     /**
      * Gets the wTK.
      * 
-     * @return the wTK
+     * @return the wTK.
      */
     final WTK getWTK() {
         return wtk;
     }
 
     /**
-     * Gets the property with the specified key and default value. 
-     * This method returns the defValue if the property is not found. 
+     * Gets the property with the specified key and default value. This method
+     * returns the defValue if the property is not found.
      * 
-     * @param propName the name of property.
-     * @param defVal the default value.
-     * 
+     * @param propName
+     *            the name of property.
+     * @param defVal
+     *            the default value.
      * @return the property value.
      */
     public static String getProperty(String propName, String defVal) {
@@ -273,11 +311,11 @@
             staticUnlockAWT();
         }
     }
-    
+
     /**
      * Gets the default Toolkit.
      * 
-     * @return the default Toolkit
+     * @return the default Toolkit.
      */
     public static Toolkit getDefaultToolkit() {
         synchronized (ContextStorage.getContextLock()) {
@@ -290,34 +328,34 @@
             }
             staticLockAWT();
             try {
-                defToolkit = GraphicsEnvironment.isHeadless() ?
-                        new HeadlessToolkit() : new ToolkitImpl();
+                defToolkit = GraphicsEnvironment.isHeadless() ? new HeadlessToolkit()
+                        : new ToolkitImpl();
                 ContextStorage.setDefaultToolkit(defToolkit);
                 return defToolkit;
             } finally {
                 staticUnlockAWT();
             }
-            //TODO: read system property named awt.toolkit
-            //and create an instance of the specified class,
-            //by default use ToolkitImpl
+            // TODO: read system property named awt.toolkit
+            // and create an instance of the specified class,
+            // by default use ToolkitImpl
         }
     }
-    
+
     /**
      * Gets the default Font.
      * 
-     * @return the derault Font for Toolkit.
+     * @return the default Font for Toolkit.
      */
     Font getDefaultFont() {
         return wtk.getSystemProperties().getDefaultFont();
     }
-    
+
     /**
      * Load resources.
      * 
-     * @param path the path
-     * 
-     * @return the resource bundle
+     * @param path
+     *            the path.
+     * @return the resource bundle.
      */
     private static ResourceBundle loadResources(String path) {
         try {
@@ -330,7 +368,7 @@
     /**
      * Gets the wTK class name.
      * 
-     * @return the wTK class name
+     * @return the wTK class name.
      */
     private static String getWTKClassName() {
         return "com.android.internal.awt.AndroidWTK";
@@ -339,9 +377,9 @@
     /**
      * Gets the component by id.
      * 
-     * @param id the id
-     * 
-     * @return the component by id
+     * @param id
+     *            the id.
+     * @return the component by id.
      */
     Component getComponentById(long id) {
         if (id == 0) {
@@ -362,12 +400,12 @@
     /**
      * Instantiates a new toolkit.
      */
-    public Toolkit() {        
+    public Toolkit() {
         init();
     }
 
     /**
-     * Inits AWT.
+     * Initiates AWT.
      */
     protected void init() {
         lockAWT();
@@ -397,43 +435,52 @@
             unlockAWT();
         }
     }
-    
+
     /**
      * Synchronizes this toolkit's graphics.
      */
     public abstract void sync();
 
     /**
-     * Returns the construction status of a specified image that is being created.
+     * Returns the construction status of a specified image that is being
+     * created.
      * 
-     * @param a0 the image to be checked.
-     * @param a1 the width of scaled image for which the status is being checked, or -1.
-     * @param a2 the height of scaled image for which the status is being checked, or -1.
-     * @param a3 the ImageObserver object to be notified while 
-     * the image is being prepared.
-     * 
-     * @return the ImageObserver flags which give the current state of the image data.
+     * @param a0
+     *            the image to be checked.
+     * @param a1
+     *            the width of scaled image for which the status is being
+     *            checked or -1.
+     * @param a2
+     *            the height of scaled image for which the status is being
+     *            checked or -1.
+     * @param a3
+     *            the ImageObserver object to be notified while the image is
+     *            being prepared.
+     * @return the ImageObserver flags which give the current state of the image
+     *         data.
      */
     public abstract int checkImage(Image a0, int a1, int a2, ImageObserver a3);
-   
+
     /**
      * Creates the image with the specified ImageProducer.
      * 
-     * @param a0 the ImageProducer to be used for image creation.
-     * 
+     * @param a0
+     *            the ImageProducer to be used for image creation.
      * @return the image with the specified ImageProducer.
      */
     public abstract Image createImage(ImageProducer a0);
 
     /**
-     * Creates the image from the specified byte array, offset and length.
-     * The byte array should contain data with image format supported by 
-     * Toolkit such as JPEG, GIF, or PNG.  
+     * Creates the image from the specified byte array, offset and length. The
+     * byte array should contain data with image format supported by Toolkit
+     * such as JPEG, GIF, or PNG.
      * 
-     * @param a0 the byte array with the image data.
-     * @param a1 the offset of the beggining the image data in the byte array.
-     * @param a2 the length of the image data in the byte array.
-     * 
+     * @param a0
+     *            the byte array with the image data.
+     * @param a1
+     *            the offset of the beginning the image data in the byte array.
+     * @param a2
+     *            the length of the image data in the byte array.
      * @return the created Image.
      */
     public abstract Image createImage(byte[] a0, int a1, int a2);
@@ -441,8 +488,8 @@
     /**
      * Creates the image using image data from the specified URL.
      * 
-     * @param a0 the URL for extracting image data.
-     * 
+     * @param a0
+     *            the URL for extracting image data.
      * @return the Image.
      */
     public abstract Image createImage(URL a0);
@@ -450,8 +497,8 @@
     /**
      * Creates the image using image data from the specified file.
      * 
-     * @param a0 the file name which contains image data of supported format.
-     * 
+     * @param a0
+     *            the file name which contains image data of supported format.
      * @return the Image.
      */
     public abstract Image createImage(String a0);
@@ -460,22 +507,20 @@
      * Gets the color model.
      * 
      * @return the ColorModel of Toolkit's screen.
-     * 
-     * @throws HeadlessException if the 
-     * GraphicsEnvironment.isHeadless() method returns true.
+     * @throws HeadlessException
+     *             if the GraphicsEnvironment.isHeadless() method returns true.
      */
     public abstract ColorModel getColorModel() throws HeadlessException;
-    
+
     /**
      * Gets the screen device metrics for the specified font.
      * 
-     * @param font the Font.
-     * 
+     * @param font
+     *            the Font.
      * @return the FontMetrics for the specified Font.
-     * 
      * @deprecated Use getLineMetrics method from Font class.
      */
-        
+
     @Deprecated
     public abstract FontMetrics getFontMetrics(Font font);
 
@@ -483,13 +528,18 @@
      * Prepares the specified image for rendering on the screen with the
      * specified size.
      * 
-     * @param a0 the Image to be prepared.
-     * @param a1 the width of the screen representation or -1 for the current screen.
-     * @param a2 the height of the screen representation or -1 for the current screen.
-     * @param a3 the ImageObserver object to be notified as soon as 
-     * the image is prepared.
-     * 
-     * @return true, if image is fully prepared; false otherwise.
+     * @param a0
+     *            the Image to be prepared.
+     * @param a1
+     *            the width of the screen representation or -1 for the current
+     *            screen.
+     * @param a2
+     *            the height of the screen representation or -1 for the current
+     *            screen.
+     * @param a3
+     *            the ImageObserver object to be notified as soon as the image
+     *            is prepared.
+     * @return true, if image is fully prepared, false otherwise.
      */
     public abstract boolean prepareImage(Image a0, int a1, int a2, ImageObserver a3);
 
@@ -502,21 +552,19 @@
      * Returns the array of font names which are available in this Toolkit.
      * 
      * @return the array of font names which are available in this Toolkit.
-     * 
      * @deprecated use GraphicsEnvironment.getAvailableFontFamilyNames() method.
      */
     @Deprecated
     public abstract String[] getFontList();
-    
+
     /**
-     * Gets the the Font implementation using the specified peer 
-     * interface.
+     * Gets the the Font implementation using the specified peer interface.
      * 
-     * @param a0 the Font name to be implemented.
-     * @param a1 the the font style: PLAIN, BOLD, ITALIC.
-     * 
+     * @param a0
+     *            the Font name to be implemented.
+     * @param a1
+     *            the the font style: PLAIN, BOLD, ITALIC.
      * @return the FontPeer implementation of the specified Font.
-     * 
      * @deprecated use java.awt.GraphicsEnvironment.getAllFonts method.
      */
 
@@ -524,27 +572,27 @@
     protected abstract FontPeer getFontPeer(String a0, int a1);
 
     /**
-     * Gets the image from the specified file which contains image data in
-     * a supported image format (such as JPEG, GIF, or PNG); this method 
-     * should return the same Image for multiple calls of this method with 
-     * the same image file name.
+     * Gets the image from the specified file which contains image data in a
+     * supported image format (such as JPEG, GIF, or PNG); this method should
+     * return the same Image for multiple calls of this method with the same
+     * image file name.
      * 
-     * @param a0 the file name which contains image data in
-     * a supported image format (such as JPEG, GIF, or PNG).
-     * 
+     * @param a0
+     *            the file name which contains image data in a supported image
+     *            format (such as JPEG, GIF, or PNG).
      * @return the Image.
      */
     public abstract Image getImage(String a0);
 
     /**
-     * Gets the image from the specified URL which contains image data in
-     * a supported image format (such as JPEG, GIF, or PNG); this method 
-     * should return the same Image for multiple calls of this method with 
-     * the same image URL.
+     * Gets the image from the specified URL which contains image data in a
+     * supported image format (such as JPEG, GIF, or PNG); this method should
+     * return the same Image for multiple calls of this method with the same
+     * image URL.
      * 
-     * @param a0 the URL which contains image data in
-     * a supported image format (such as JPEG, GIF, or PNG).
-     * 
+     * @param a0
+     *            the URL which contains image data in a supported image format
+     *            (such as JPEG, GIF, or PNG).
      * @return the Image.
      */
     public abstract Image getImage(URL a0);
@@ -553,20 +601,17 @@
      * Gets the screen resolution.
      * 
      * @return the screen resolution.
-     * 
-     * @throws HeadlessException if the GraphicsEnvironment.isHeadless()
-     * method returns true.
+     * @throws HeadlessException
+     *             if the GraphicsEnvironment.isHeadless() method returns true.
      */
     public abstract int getScreenResolution() throws HeadlessException;
 
     /**
      * Gets the screen size.
      * 
-     * @return a Dimension object containing the width and height of
-     * the screen.
-     * 
-     * @throws HeadlessException if the GraphicsEnvironment.isHeadless()
-     * method returns true.
+     * @return a Dimension object containing the width and height of the screen.
+     * @throws HeadlessException
+     *             if the GraphicsEnvironment.isHeadless() method returns true.
      */
     public abstract Dimension getScreenSize() throws HeadlessException;
 
@@ -578,15 +623,14 @@
     protected abstract EventQueue getSystemEventQueueImpl();
 
     /**
-     * Returns a map of text attributes for the abstract level description 
-     * of the specified input method highlight, or null if no mapping is found. 
-     *  
-     * @param highlight the InputMethodHighlight.
+     * Returns a map of text attributes for the abstract level description of
+     * the specified input method highlight, or null if no mapping is found.
      * 
-     * @return the Map<java.awt.font. text attribute,?>
-     * 
-     * @throws HeadlessException if the GraphicsEnvironment.isHeadless()
-     * method returns true.
+     * @param highlight
+     *            the InputMethodHighlight.
+     * @return the Map<java.awt.font. text attribute,?>.
+     * @throws HeadlessException
+     *             if the GraphicsEnvironment.isHeadless() method returns true.
      */
     public abstract Map<java.awt.font.TextAttribute, ?> mapInputMethodHighlight(
             InputMethodHighlight highlight) throws HeadlessException;
@@ -594,14 +638,14 @@
     /**
      * Map input method highlight impl.
      * 
-     * @param highlight the highlight
-     * 
-     * @return the map<java.awt.font. text attribute,?>
-     * 
-     * @throws HeadlessException the headless exception
+     * @param highlight
+     *            the highlight.
+     * @return the map<java.awt.font. text attribute,?>.
+     * @throws HeadlessException
+     *             the headless exception.
      */
-    Map<java.awt.font.TextAttribute, ?> mapInputMethodHighlightImpl(
-            InputMethodHighlight highlight) throws HeadlessException {
+    Map<java.awt.font.TextAttribute, ?> mapInputMethodHighlightImpl(InputMethodHighlight highlight)
+            throws HeadlessException {
         HashMap<java.awt.font.TextAttribute, ?> map = new HashMap<java.awt.font.TextAttribute, Object>();
         wtk.getSystemProperties().mapInputMethodHighlight(highlight, map);
         return Collections.<java.awt.font.TextAttribute, Object> unmodifiableMap(map);
@@ -611,9 +655,11 @@
      * Adds the specified PropertyChangeListener listener for the specified
      * property.
      * 
-     * @param propName the property name for which the specified PropertyChangeListener
-     * will be added. 
-     * @param l the PropertyChangeListener object.
+     * @param propName
+     *            the property name for which the specified
+     *            PropertyChangeListener will be added.
+     * @param l
+     *            the PropertyChangeListener object.
      */
     public void addPropertyChangeListener(String propName, PropertyChangeListener l) {
         lockAWT();
@@ -624,31 +670,32 @@
         } finally {
             unlockAWT();
         }
-        if (l != null) { // there is no guarantee that null listener will not be added
+        if (l != null) { // there is no guarantee that null listener will not be
+            // added
             desktopPropsSupport.addPropertyChangeListener(propName, l);
         }
     }
 
     /**
-     * Returns an array of the property change listeners registered with
-     * this Toolkit.
+     * Returns an array of the property change listeners registered with this
+     * Toolkit.
      * 
-     * @return an array of the property change listeners registered with
-     * this Toolkit. 
+     * @return an array of the property change listeners registered with this
+     *         Toolkit.
      */
     public PropertyChangeListener[] getPropertyChangeListeners() {
         return desktopPropsSupport.getPropertyChangeListeners();
     }
 
     /**
-     * Returns an array of the property change listeners registered with
-     * this Toolkit for notification regarding the specified property.
+     * Returns an array of the property change listeners registered with this
+     * Toolkit for notification regarding the specified property.
      * 
-     * @param propName the property name for which the PropertyChangeListener
-     * was registered.
-     * 
-     * @return the array of PropertyChangeListeners registered for the specified 
-     * property name.
+     * @param propName
+     *            the property name for which the PropertyChangeListener was
+     *            registered.
+     * @return the array of PropertyChangeListeners registered for the specified
+     *         property name.
      */
     public PropertyChangeListener[] getPropertyChangeListeners(String propName) {
         return desktopPropsSupport.getPropertyChangeListeners(propName);
@@ -658,28 +705,33 @@
      * Removes the specified property change listener registered for the
      * specified property name.
      * 
-     * @param propName the property name.
-     * @param l the PropertyChangeListener registered for the specified property name.
+     * @param propName
+     *            the property name.
+     * @param l
+     *            the PropertyChangeListener registered for the specified
+     *            property name.
      */
     public void removePropertyChangeListener(String propName, PropertyChangeListener l) {
         desktopPropsSupport.removePropertyChangeListener(propName, l);
     }
-    
+
     /**
      * Creates a custom cursor with the specified Image, hot spot, and cursor
      * description.
      * 
-     * @param img the image of activated cursor.
-     * @param hotSpot the Point giving the coordinates of the cursor's hot spot. 
-     * @param name the cursor description.
-     * 
+     * @param img
+     *            the image of activated cursor.
+     * @param hotSpot
+     *            the Point giving the coordinates of the cursor's hot spot.
+     * @param name
+     *            the cursor description.
      * @return the cursor with the specified Image, hot spot, and cursor
-     * description.
-     * 
-     * @throws IndexOutOfBoundsException if the hot spot values are outside  
-     * the bounds of the cursor.
-     * @throws HeadlessException if isHeadless() method of GraphicsEnvironment
-     * class returns true.
+     *         description.
+     * @throws IndexOutOfBoundsException
+     *             if the hot spot values are outside the bounds of the cursor.
+     * @throws HeadlessException
+     *             if isHeadless() method of GraphicsEnvironment class returns
+     *             true.
      */
     public Cursor createCustomCursor(Image img, Point hotSpot, String name)
             throws IndexOutOfBoundsException, HeadlessException {
@@ -698,20 +750,19 @@
     }
 
     /**
-     * Returns the supported cursor dimension which is closest to the 
-     * specified width and height. If the Toolkit only supports a single 
-     * cursor size, this method should return the supported cursor size.
-     * If custom cursor is not supported, a dimension of 0, 0 should be
-     * returned.
+     * Returns the supported cursor dimension which is closest to the specified
+     * width and height. If the Toolkit only supports a single cursor size, this
+     * method should return the supported cursor size. If custom cursor is not
+     * supported, a dimension of 0, 0 should be returned.
      * 
-     * @param prefWidth the preffered cursor width.
-     * @param prefHeight the preffered cursor height.
-     * 
-     * @return the supported cursor dimension which is closest to the 
-     * specified width and height.
-     * 
-     * @throws HeadlessException if GraphicsEnvironment.isHeadless() 
-     * returns true.
+     * @param prefWidth
+     *            the preferred cursor width.
+     * @param prefHeight
+     *            the preferred cursor height.
+     * @return the supported cursor dimension which is closest to the specified
+     *         width and height.
+     * @throws HeadlessException
+     *             if GraphicsEnvironment.isHeadless() returns true.
      */
     public Dimension getBestCursorSize(int prefWidth, int prefHeight) throws HeadlessException {
         lockAWT();
@@ -723,10 +774,10 @@
     }
 
     /**
-     * Gets the value for the specified desktop property. 
+     * Gets the value for the specified desktop property.
      * 
-     * @param propName the property name.
-     * 
+     * @param propName
+     *            the property name.
      * @return the Object that is the property's value.
      */
     public final Object getDesktopProperty(String propName) {
@@ -754,17 +805,19 @@
     /**
      * Returns the locking key state for the specified key.
      * 
-     * @param a0 the key code: VK_CAPS_LOCK, VK_NUM_LOCK, VK_SCROLL_LOCK, 
-     * or VK_KANA_LOCK.
-     * 
-     * @return true if the specified key code is in the locked state,
-     * false otherwise.
-     * 
-     * @throws UnsupportedOperationException if the state of this key 
-     * can't be retrieved, or if the keyboard doesn't have this key.
-     * @throws NotImplementedException if this method is not implemented.
+     * @param a0
+     *            the key code: VK_CAPS_LOCK, VK_NUM_LOCK, VK_SCROLL_LOCK, or
+     *            VK_KANA_LOCK.
+     * @return true if the specified key code is in the locked state, false
+     *         otherwise.
+     * @throws UnsupportedOperationException
+     *             if the state of this key can't be retrieved, or if the
+     *             keyboard doesn't have this key.
+     * @throws NotImplementedException
+     *             if this method is not implemented.
      */
-    public boolean getLockingKeyState(int a0) throws UnsupportedOperationException, org.apache.harmony.luni.util.NotImplementedException {
+    public boolean getLockingKeyState(int a0) throws UnsupportedOperationException,
+            org.apache.harmony.luni.util.NotImplementedException {
         lockAWT();
         try {
         } finally {
@@ -781,9 +834,8 @@
      * custom cursor.
      * 
      * @return the maximum cursor colors.
-     * 
-     * @throws HeadlessException if the GraphicsEnvironment.isHeadless()
-     * method returns true.
+     * @throws HeadlessException
+     *             if the GraphicsEnvironment.isHeadless() method returns true.
      */
     public int getMaximumCursorColors() throws HeadlessException {
         lockAWT();
@@ -796,11 +848,10 @@
 
     /**
      * Gets the menu shortcut key mask.
-     *
-     * @return the menu shortcut key mask.
      * 
-     * @throws HeadlessException if the GraphicsEnvironment.isHeadless()
-     * method returns true.
+     * @return the menu shortcut key mask.
+     * @throws HeadlessException
+     *             if the GraphicsEnvironment.isHeadless() method returns true.
      */
     public int getMenuShortcutKeyMask() throws HeadlessException {
         lockAWT();
@@ -814,12 +865,11 @@
     /**
      * Gets the screen insets.
      * 
-     * @param gc the GraphicsConfiguration.
-     * 
+     * @param gc
+     *            the GraphicsConfiguration.
      * @return the insets of this toolkit.
-     * 
-     * @throws HeadlessException if the GraphicsEnvironment.isHeadless()
-     * method returns true.
+     * @throws HeadlessException
+     *             if the GraphicsEnvironment.isHeadless() method returns true.
      */
     public Insets getScreenInsets(GraphicsConfiguration gc) throws HeadlessException {
         if (gc == null) {
@@ -827,17 +877,17 @@
         }
         lockAWT();
         try {
-            return new Insets(0, 0, 0, 0); //TODO: get real screen insets
+            return new Insets(0, 0, 0, 0); // TODO: get real screen insets
         } finally {
             unlockAWT();
         }
     }
 
     /**
-     * Gets the system EventQueue instance. 
-     * If the default implementation of checkAwtEventQueueAccess is used,
-     * then this results of a call to the security manager's checkPermission
-     * method with an AWTPermission("accessEventQueue") permission.
+     * Gets the system EventQueue instance. If the default implementation of
+     * checkAwtEventQueueAccess is used, then this results of a call to the
+     * security manager's checkPermission method with an
+     * AWTPermission("accessEventQueue") permission.
      * 
      * @return the system EventQueue instance.
      */
@@ -849,19 +899,20 @@
         return getSystemEventQueueImpl();
     }
 
-    /** 
+    /**
      * Gets the system event queue core.
      * 
-     * @return the system event queue core
+     * @return the system event queue core.
      */
     EventQueueCore getSystemEventQueueCore() {
         return systemEventQueueCore;
     }
-    
+
     /**
      * Sets the system event queue core.
      * 
-     * @param core the new system event queue core
+     * @param core
+     *            the new system event queue core.
      */
     void setSystemEventQueueCore(EventQueueCore core) {
         systemEventQueueCore = core;
@@ -882,11 +933,10 @@
     /**
      * Checks if dynamic layout of Containers is active or not.
      * 
-     * @return true, if is dynamic layout of Containers is active,
-     * false otherwise.
-     * 
-     * @throws HeadlessException if the GraphicsEnvironment.isHeadless()
-     * method returns true.
+     * @return true, if is dynamic layout of Containers is active, false
+     *         otherwise.
+     * @throws HeadlessException
+     *             if the GraphicsEnvironment.isHeadless() method returns true.
      */
     public boolean isDynamicLayoutActive() throws HeadlessException {
         lockAWT();
@@ -898,17 +948,15 @@
         }
     }
 
-
     /**
-     * Returns if the layout of Containers is checked dynamically during resizing,
-     * or statically after resizing is completed. 
+     * Returns if the layout of Containers is checked dynamically during
+     * resizing, or statically after resizing is completed.
      * 
-     * @return true, if if the layout of Containers is checked dynamically during 
-     * resizing; false, if the layout of Containers is checked statically after 
-     * resizing is completed. 
-     * 
-     * @throws HeadlessException if the GraphicsEnvironment.isHeadless()
-     * method returns true.
+     * @return true, if if the layout of Containers is checked dynamically
+     *         during resizing; false, if the layout of Containers is checked
+     *         statically after resizing is completed.
+     * @throws HeadlessException
+     *             if the GraphicsEnvironment.isHeadless() method returns true.
      */
     protected boolean isDynamicLayoutSet() throws HeadlessException {
         lockAWT();
@@ -922,12 +970,11 @@
     /**
      * Checks if the specified frame state is supported by Toolkit or not.
      * 
-     * @param state the frame state.
-     * 
-     * @return true, if frame state is supported; false othrwise.
-     * 
-     * @throws HeadlessException if the GraphicsEnvironment.isHeadless()
-     * method returns true.
+     * @param state
+     *            the frame state.
+     * @return true, if frame state is supported, false otherwise.
+     * @throws HeadlessException
+     *             if the GraphicsEnvironment.isHeadless() method returns true.
      */
     public boolean isFrameStateSupported(int state) throws HeadlessException {
         lockAWT();
@@ -941,8 +988,8 @@
     /**
      * Loads the value of the desktop property with the specified property name.
      * 
-     * @param propName the property name.
-     * 
+     * @param propName
+     *            the property name.
      * @return the desktop property values.
      */
     protected Object lazilyLoadDesktopProperty(String propName) {
@@ -952,11 +999,11 @@
     /**
      * Loads the current system color values to the specified array.
      * 
-     * @param colors the array where the current system color values 
-     * are written by this method.
-     * 
-     * @throws HeadlessException if the GraphicsEnvironment.isHeadless()
-     * method returns true.
+     * @param colors
+     *            the array where the current system color values are written by
+     *            this method.
+     * @throws HeadlessException
+     *             if the GraphicsEnvironment.isHeadless() method returns true.
      */
     protected void loadSystemColors(int[] colors) throws HeadlessException {
         lockAWT();
@@ -969,8 +1016,10 @@
     /**
      * Sets the value of the desktop property with the specified name.
      * 
-     * @param propName the property's name.
-     * @param value the property's value.
+     * @param propName
+     *            the property's name.
+     * @param value
+     *            the property's value.
      */
     protected final void setDesktopProperty(String propName, Object value) {
         Object oldVal;
@@ -986,15 +1035,15 @@
     }
 
     /**
-     * Sets the layout state, whether the Container layout is checked 
-     * dynamically during resizing, or statically after resizing is completed. 
+     * Sets the layout state, whether the Container layout is checked
+     * dynamically during resizing, or statically after resizing is completed.
      * 
-     * @param dynamic the new dynamic layout state - if true the layout of 
-     * Containers is checked dynamically during resizing, if false -
-     * statically after resizing is completed.
-     * 
-     * @throws HeadlessException if the GraphicsEnvironment.isHeadless()
-     * method returns true.
+     * @param dynamic
+     *            the new dynamic layout state - if true the layout of
+     *            Containers is checked dynamically during resizing, if false -
+     *            statically after resizing is completed.
+     * @throws HeadlessException
+     *             if the GraphicsEnvironment.isHeadless() method returns true.
      */
     public void setDynamicLayout(boolean dynamic) throws HeadlessException {
         lockAWT();
@@ -1008,16 +1057,20 @@
     /**
      * Sets the locking key state for the specified key code.
      * 
-     * @param a0 the key code: VK_CAPS_LOCK, VK_NUM_LOCK, VK_SCROLL_LOCK, 
-     * or VK_KANA_LOCK.
-     * @param a1 the state - true to set the specified key code to the locked state,
-     * false - to unlock it.
-     * 
-     * @throws UnsupportedOperationException if the state of this key 
-     * can't be set, or if the keyboard doesn't have this key.
-     * @throws NotImplementedException if this method is not implemented.
+     * @param a0
+     *            the key code: VK_CAPS_LOCK, VK_NUM_LOCK, VK_SCROLL_LOCK, or
+     *            VK_KANA_LOCK.
+     * @param a1
+     *            the state - true to set the specified key code to the locked
+     *            state, false - to unlock it.
+     * @throws UnsupportedOperationException
+     *             if the state of this key can't be set, or if the keyboard
+     *             doesn't have this key.
+     * @throws NotImplementedException
+     *             if this method is not implemented.
      */
-    public void setLockingKeyState(int a0, boolean a1) throws UnsupportedOperationException, org.apache.harmony.luni.util.NotImplementedException {
+    public void setLockingKeyState(int a0, boolean a1) throws UnsupportedOperationException,
+            org.apache.harmony.luni.util.NotImplementedException {
         lockAWT();
         try {
         } finally {
@@ -1029,7 +1082,6 @@
         return;
     }
 
-
     /**
      * On queue empty.
      */
@@ -1040,14 +1092,14 @@
     /**
      * Creates the wtk.
      * 
-     * @param clsName the cls name
-     * 
-     * @return the wTK
+     * @param clsName
+     *            the cls name.
+     * @return the wTK.
      */
     private WTK createWTK(String clsName) {
         WTK newWTK = null;
         try {
-            newWTK = (WTK) Class.forName(clsName).newInstance();
+            newWTK = (WTK)Class.forName(clsName).newInstance();
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
@@ -1056,7 +1108,9 @@
 
     /**
      * Connect the component to its native window
-     * @param winId - id of native window just created
+     * 
+     * @param winId
+     *            the id of native window just created.
      */
     boolean onWindowCreated(long winId) {
         return false;
@@ -1065,45 +1119,50 @@
     /**
      * Gets the native event queue.
      * 
-     * @return the native event queue
+     * @return the native event queue.
      */
     NativeEventQueue getNativeEventQueue() {
         return wtk.getNativeEventQueue();
     }
 
     /**
-     * Returns a shared instance of implementation of org.apache.harmony.awt.wtk.NativeCursor
-     * for current platform for
+     * Returns a shared instance of implementation of
+     * org.apache.harmony.awt.wtk.NativeCursor for current platform for.
      * 
-     * @param type - Java Cursor type
-     * 
-     * @return new instance of implementation of NativeCursor
+     * @param type
+     *            the Java Cursor type.
+     * @return new instance of implementation of NativeCursor.
      */
     NativeCursor createNativeCursor(int type) {
         return wtk.getCursorFactory().getCursor(type);
     }
 
     /**
-     * Returns a shared instance of implementation of org.apache.harmony.awt.wtk.NativeCursor
-     * for current platform for custom cursor
+     * Returns a shared instance of implementation of
+     * org.apache.harmony.awt.wtk.NativeCursor for current platform for custom
+     * cursor
      * 
-     * @param img the img
-     * @param hotSpot the hot spot
-     * @param name the name
-     * 
-     * @return new instance of implementation of NativeCursor
+     * @param img
+     *            the img.
+     * @param hotSpot
+     *            the hot spot.
+     * @param name
+     *            the name.
+     * @return new instance of implementation of NativeCursor.
      */
     NativeCursor createCustomNativeCursor(Image img, Point hotSpot, String name) {
         return wtk.getCursorFactory().createCustomCursor(img, hotSpot.x, hotSpot.y);
     }
 
     /**
-     * Adds an AWTEventListener to the Toolkit to listen for events
-     * of types corresponding to bits in the specified event mask. 
-     * Event masks are defined in AWTEvent class.
+     * Adds an AWTEventListener to the Toolkit to listen for events of types
+     * corresponding to bits in the specified event mask. Event masks are
+     * defined in AWTEvent class.
      * 
-     * @param listener the AWTEventListener.
-     * @param eventMask he bitmask of event types.
+     * @param listener
+     *            the AWTEventListener.
+     * @param eventMask
+     *            the bitmask of event types.
      */
     public void addAWTEventListener(AWTEventListener listener, long eventMask) {
         lockAWT();
@@ -1119,9 +1178,10 @@
     }
 
     /**
-     * Removes the specified awt event listener.
+     * Removes the specified AWT event listener.
      * 
-     * @param listener the AWTEventListener to be removed.
+     * @param listener
+     *            the AWTEventListener to be removed.
      */
     public void removeAWTEventListener(AWTEventListener listener) {
         lockAWT();
@@ -1139,7 +1199,8 @@
     /**
      * Gets the array of all AWT event listeners registered with this Toolkit.
      * 
-     * @return the array of all AWT event listeners registered with this Toolkit.
+     * @return the array of all AWT event listeners registered with this
+     *         Toolkit.
      */
     public AWTEventListener[] getAWTEventListeners() {
         lockAWT();
@@ -1155,13 +1216,13 @@
     }
 
     /**
-     * Returns the array of the AWT event listeners registered with this Toolkit 
+     * Returns the array of the AWT event listeners registered with this Toolkit
      * for the event types corresponding to the specified event mask.
      * 
-     * @param eventMask the bit mask of event type.
-     * 
-     * @return the array of the AWT event listeners registered in this Toolkit 
-     * for the event types corresponding to the specified event mask.
+     * @param eventMask
+     *            the bit mask of event type.
+     * @return the array of the AWT event listeners registered in this Toolkit
+     *         for the event types corresponding to the specified event mask.
      */
     public AWTEventListener[] getAWTEventListeners(long eventMask) {
         lockAWT();
@@ -1177,30 +1238,37 @@
     }
 
     /**
-     * Dispatch awt event.
+     * Dispatch AWT event.
      * 
-     * @param event the event
+     * @param event
+     *            the event.
      */
     void dispatchAWTEvent(AWTEvent event) {
         awtEventsManager.dispatchAWTEvent(event);
     }
-    
+
     /**
      * The Class AWTEventsManager.
      */
     final class AWTEventsManager {
 
-        /** The permission. */
+        /**
+         * The permission.
+         */
         AWTPermission permission = new AWTPermission("listenToAllAWTEvents"); //$NON-NLS-1$
 
-        /** The listeners. */
+        /**
+         * The listeners.
+         */
         private final AWTListenerList<AWTEventListenerProxy> listeners = new AWTListenerList<AWTEventListenerProxy>();
 
         /**
-         * Adds the awt event listener.
+         * Adds the AWT event listener.
          * 
-         * @param listener the listener
-         * @param eventMask the event mask
+         * @param listener
+         *            the listener.
+         * @param eventMask
+         *            the event mask.
          */
         void addAWTEventListener(AWTEventListener listener, long eventMask) {
             if (listener != null) {
@@ -1209,9 +1277,10 @@
         }
 
         /**
-         * Removes the awt event listener.
+         * Removes the AWT event listener.
          * 
-         * @param listener the listener
+         * @param listener
+         *            the listener.
          */
         void removeAWTEventListener(AWTEventListener listener) {
             if (listener != null) {
@@ -1225,9 +1294,9 @@
         }
 
         /**
-         * Gets the aWT event listeners.
+         * Gets the AWT event listeners.
          * 
-         * @return the aWT event listeners
+         * @return the AWT event listeners.
          */
         AWTEventListener[] getAWTEventListeners() {
             HashSet<EventListener> listenersSet = new HashSet<EventListener>();
@@ -1238,11 +1307,11 @@
         }
 
         /**
-         * Gets the aWT event listeners.
+         * Gets the AWT event listeners.
          * 
-         * @param eventMask the event mask
-         * 
-         * @return the aWT event listeners
+         * @param eventMask
+         *            the event mask.
+         * @return the AWT event listeners.
          */
         AWTEventListener[] getAWTEventListeners(long eventMask) {
             HashSet<EventListener> listenersSet = new HashSet<EventListener>();
@@ -1255,9 +1324,10 @@
         }
 
         /**
-         * Dispatch awt event.
+         * Dispatch AWT event.
          * 
-         * @param event the event
+         * @param event
+         *            the event.
          */
         void dispatchAWTEvent(AWTEvent event) {
             AWTEvent.EventDescriptor descriptor = eventTypeLookup.getEventDescriptor(event);
@@ -1271,68 +1341,104 @@
             }
         }
     }
-    
+
     /**
      * The Class AutoNumber.
      */
     static final class AutoNumber {
 
-        /** The next component. */
+        /**
+         * The next component.
+         */
         int nextComponent = 0;
 
-        /** The next canvas. */
+        /**
+         * The next canvas.
+         */
         int nextCanvas = 0;
 
-        /** The next panel. */
+        /**
+         * The next panel.
+         */
         int nextPanel = 0;
 
-        /** The next window. */
+        /**
+         * The next window.
+         */
         int nextWindow = 0;
 
-        /** The next frame. */
+        /**
+         * The next frame.
+         */
         int nextFrame = 0;
 
-        /** The next dialog. */
+        /**
+         * The next dialog.
+         */
         int nextDialog = 0;
 
-        /** The next button. */
+        /**
+         * The next button.
+         */
         int nextButton = 0;
 
-        /** The next menu component. */
+        /**
+         * The next menu component.
+         */
         int nextMenuComponent = 0;
 
-        /** The next label. */
+        /**
+         * The next label.
+         */
         int nextLabel = 0;
 
-        /** The next check box. */
+        /**
+         * The next check box.
+         */
         int nextCheckBox = 0;
 
-        /** The next scrollbar. */
+        /**
+         * The next scrollbar.
+         */
         int nextScrollbar = 0;
 
-        /** The next scroll pane. */
+        /**
+         * The next scroll pane.
+         */
         int nextScrollPane = 0;
 
-        /** The next list. */
+        /**
+         * The next list.
+         */
         int nextList = 0;
 
-        /** The next choice. */
+        /**
+         * The next choice.
+         */
         int nextChoice = 0;
 
-        /** The next file dialog. */
+        /**
+         * The next file dialog.
+         */
         int nextFileDialog = 0;
 
-        /** The next text area. */
+        /**
+         * The next text area.
+         */
         int nextTextArea = 0;
 
-        /** The next text field. */
+        /**
+         * The next text field.
+         */
         int nextTextField = 0;
     }
-    
+
     private class Lock {
     }
 
-        /** The lock. */
+    /**
+     * The lock.
+     */
     private final Object lock = new Lock();
-        
+
 }
diff --git a/awt/java/awt/Transparency.java b/awt/java/awt/Transparency.java
index 9793114..44a1e7f 100644
--- a/awt/java/awt/Transparency.java
+++ b/awt/java/awt/Transparency.java
@@ -18,34 +18,40 @@
  * @author Pavel Dolgov
  * @version $Revision$
  */
+
 package java.awt;
 
 /**
  * The Transparency interface defines transparency's general modes.
+ * 
+ * @since Android 1.0
  */
 public interface Transparency {
 
-    /** The Constant OPAQUE represents completely opaque data,
-     * all pixels have an alpha value of 1.0. 
+    /**
+     * The Constant OPAQUE represents completely opaque data, all pixels have an
+     * alpha value of 1.0.
      */
     public static final int OPAQUE = 1;
 
-    /** The Constant BITMASK represents data which can be either 
-     * completely opaque, with an alpha value of 1.0, or completely 
-     * transparent, with an alpha value of 0.0.
+    /**
+     * The Constant BITMASK represents data which can be either completely
+     * opaque, with an alpha value of 1.0, or completely transparent, with an
+     * alpha value of 0.0.
      */
     public static final int BITMASK = 2;
 
-    /** The Constant TRANSLUCENT represents data which alpha value
-     * can vary between and including 0.0 and 1.0. */
+    /**
+     * The Constant TRANSLUCENT represents data which alpha value can vary
+     * between and including 0.0 and 1.0.
+     */
     public static final int TRANSLUCENT = 3;
 
     /**
      * Gets the transparency mode.
      * 
-     * @return the transparency mode: OPAQUE, BITMASK or TRANSLUCENT.  
+     * @return the transparency mode: OPAQUE, BITMASK or TRANSLUCENT.
      */
     public int getTransparency();
 
 }
-
diff --git a/awt/java/awt/color/CMMException.java b/awt/java/awt/color/CMMException.java
index 16fe76e..18b9a7e 100644
--- a/awt/java/awt/color/CMMException.java
+++ b/awt/java/awt/color/CMMException.java
@@ -21,18 +21,22 @@
 package java.awt.color;
 
 /**
- * The CMMException is thrown as soon as a native CMM error
- * occures.
+ * The CMMException is thrown as soon as a native CMM error occurs.
+ * 
+ * @since Android 1.0
  */
 public class CMMException extends java.lang.RuntimeException {
     
-    /** The Constant serialVersionUID. */
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = 5775558044142994965L;
 
     /**
      * Instantiates a new CMM exception with detail message.
      * 
-     * @param s the String - detail message.
+     * @param s
+     *            the detail message of the exception.
      */
     public CMMException (String s) {
         super (s);
diff --git a/awt/java/awt/color/ColorSpace.java b/awt/java/awt/color/ColorSpace.java
index f961514..44c491b 100644
--- a/awt/java/awt/color/ColorSpace.java
+++ b/awt/java/awt/color/ColorSpace.java
@@ -26,131 +26,209 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The ColorSpace class defines a color space type for a Color and provides methods
- * for arrays of color component operations.
+ * The ColorSpace class defines a color space type for a Color and provides
+ * methods for arrays of color component operations.
+ * 
+ * @since Android 1.0
  */
 public abstract class ColorSpace implements Serializable {
 
     /** The Constant serialVersionUID. */
     private static final long serialVersionUID = -409452704308689724L;
 
-    /** The Constant TYPE_XYZ indicates XYZ color space type. */
+    /**
+     * The Constant TYPE_XYZ indicates XYZ color space type.
+     */
     public static final int TYPE_XYZ = 0;
 
-    /** The Constant TYPE_Lab indicates Lab color space type. */
+    /**
+     * The Constant TYPE_Lab indicates Lab color space type.
+     */
     public static final int TYPE_Lab = 1;
 
-    /** The Constant TYPE_Luv indicates Luv color space type. */
+    /**
+     * The Constant TYPE_Luv indicates Luv color space type.
+     */
     public static final int TYPE_Luv = 2;
 
-    /** The Constant TYPE_YCbCr indicates YCbCr color space type. */
+    /**
+     * The Constant TYPE_YCbCr indicates YCbCr color space type.
+     */
     public static final int TYPE_YCbCr = 3;
 
-    /** The Constant TYPE_Yxy indicates Yxy color space type. */
+    /**
+     * The Constant TYPE_Yxy indicates Yxy color space type.
+     */
     public static final int TYPE_Yxy = 4;
 
-    /** The Constant TYPE_RGB indicates RGB color space type. */
+    /**
+     * The Constant TYPE_RGB indicates RGB color space type.
+     */
     public static final int TYPE_RGB = 5;
 
-    /** The Constant TYPE_GRAY indicates Gray color space type. */
+    /**
+     * The Constant TYPE_GRAY indicates Gray color space type.
+     */
     public static final int TYPE_GRAY = 6;
 
-    /** The Constant TYPE_HSV indicates HSV color space type. */
+    /**
+     * The Constant TYPE_HSV indicates HSV color space type.
+     */
     public static final int TYPE_HSV = 7;
 
-    /** The Constant TYPE_HLS indicates HLS color space type. */
+    /**
+     * The Constant TYPE_HLS indicates HLS color space type.
+     */
     public static final int TYPE_HLS = 8;
 
-    /** The Constant TYPE_CMYK indicates CMYK color space type. */
+    /**
+     * The Constant TYPE_CMYK indicates CMYK color space type.
+     */
     public static final int TYPE_CMYK = 9;
 
-    /** The Constant TYPE_CMY indicates CMY color space type. */
+    /**
+     * The Constant TYPE_CMY indicates CMY color space type.
+     */
     public static final int TYPE_CMY = 11;
 
-    /** The Constant TYPE_2CLR indicates color spaces with 2 components. */
+    /**
+     * The Constant TYPE_2CLR indicates color spaces with 2 components.
+     */
     public static final int TYPE_2CLR = 12;
 
-    /** The Constant TYPE_3CLR indicates color spaces with 3 components. */
+    /**
+     * The Constant TYPE_3CLR indicates color spaces with 3 components.
+     */
     public static final int TYPE_3CLR = 13;
 
-    /** The Constant TYPE_4CLR indicates color spaces with 4 components. */
+    /**
+     * The Constant TYPE_4CLR indicates color spaces with 4 components.
+     */
     public static final int TYPE_4CLR = 14;
 
-    /** The Constant TYPE_5CLR indicates color spaces with 5 components. */
+    /**
+     * The Constant TYPE_5CLR indicates color spaces with 5 components.
+     */
     public static final int TYPE_5CLR = 15;
 
-    /** The Constant TYPE_6CLR indicates color spaces with 6 components. */
+    /**
+     * The Constant TYPE_6CLR indicates color spaces with 6 components.
+     */
     public static final int TYPE_6CLR = 16;
 
-    /** The Constant TYPE_7CLR indicates color spaces with 7 components. */
+    /**
+     * The Constant TYPE_7CLR indicates color spaces with 7 components.
+     */
     public static final int TYPE_7CLR = 17;
 
-    /** The Constant TYPE_8CLR indicates color spaces with 8 components. */
+    /**
+     * The Constant TYPE_8CLR indicates color spaces with 8 components.
+     */
     public static final int TYPE_8CLR = 18;
 
-    /** The Constant TYPE_9CLR indicates color spaces with 9 components. */
+    /**
+     * The Constant TYPE_9CLR indicates color spaces with 9 components.
+     */
     public static final int TYPE_9CLR = 19;
 
-    /** The Constant TYPE_ACLR indicates color spaces with 10 components. */
+    /**
+     * The Constant TYPE_ACLR indicates color spaces with 10 components.
+     */
     public static final int TYPE_ACLR = 20;
 
-    /** The Constant TYPE_BCLR indicates color spaces with 11 components. */
+    /**
+     * The Constant TYPE_BCLR indicates color spaces with 11 components.
+     */
     public static final int TYPE_BCLR = 21;
 
-    /** The Constant TYPE_CCLR indicates color spaces with 12 components. */
+    /**
+     * The Constant TYPE_CCLR indicates color spaces with 12 components.
+     */
     public static final int TYPE_CCLR = 22;
 
-    /** The Constant TYPE_DCLR indicates color spaces with 13 components. */
+    /**
+     * The Constant TYPE_DCLR indicates color spaces with 13 components.
+     */
     public static final int TYPE_DCLR = 23;
 
-    /** The Constant TYPE_ECLR indicates color spaces with 14 components. */
+    /**
+     * The Constant TYPE_ECLR indicates color spaces with 14 components.
+     */
     public static final int TYPE_ECLR = 24;
 
-    /** The Constant TYPE_FCLR indicates color spaces with 15 components. */
+    /**
+     * The Constant TYPE_FCLR indicates color spaces with 15 components.
+     */
     public static final int TYPE_FCLR = 25;
 
-    /** The Constant CS_sRGB indicates standard RGB color space.*/
+    /**
+     * The Constant CS_sRGB indicates standard RGB color space.
+     */
     public static final int CS_sRGB = 1000;
 
-    /** The Constant CS_LINEAR_RGB indicates linear RGB color space. */
+    /**
+     * The Constant CS_LINEAR_RGB indicates linear RGB color space.
+     */
     public static final int CS_LINEAR_RGB = 1004;
 
-    /** The Constant CS_CIEXYZ indicates CIEXYZ conversion color space. */
+    /**
+     * The Constant CS_CIEXYZ indicates CIEXYZ conversion color space.
+     */
     public static final int CS_CIEXYZ = 1001;
 
-    /** The Constant CS_PYCC indicates Photo YCC conversion color space. */
+    /**
+     * The Constant CS_PYCC indicates Photo YCC conversion color space.
+     */
     public static final int CS_PYCC = 1002;
 
-    /** The Constant CS_GRAY indicates linear gray scale color space. */
+    /**
+     * The Constant CS_GRAY indicates linear gray scale color space.
+     */
     public static final int CS_GRAY = 1003;
 
-    /** The cs_ gray. */
+    /**
+     * The cs_ gray.
+     */
     private static ColorSpace cs_Gray = null;
     
-    /** The cs_ pycc. */
+    /**
+     * The cs_ pycc.
+     */
     private static ColorSpace cs_PYCC = null;
     
-    /** The cs_ ciexyz. */
+    /**
+     * The cs_ ciexyz.
+     */
     private static ColorSpace cs_CIEXYZ = null;
     
-    /** The cs_ lrgb. */
+    /**
+     * The cs_ lrgb.
+     */
     private static ColorSpace cs_LRGB = null;
     
-    /** The cs_s rgb. */
+    /**
+     * The cs_s rgb.
+     */
     private static ColorSpace cs_sRGB = null;
 
-    /** The type. */
+    /**
+     * The type.
+     */
     private int type;
     
-    /** The num components. */
+    /**
+     * The num components.
+     */
     private int numComponents;
 
     /**
-     * Instantiates a ColorSpace with the specified
-     * ColorSpace type and number of components.
+     * Instantiates a ColorSpace with the specified ColorSpace type and number
+     * of components.
      * 
-     * @param type the type of color space.
-     * @param numcomponents the number of components.
+     * @param type
+     *            the type of color space.
+     * @param numcomponents
+     *            the number of components.
      */
     protected ColorSpace(int type, int numcomponents) {
         this.numComponents = numcomponents;
@@ -160,8 +238,8 @@
     /**
      * Gets the name of the component for the specified component index.
      * 
-     * @param idx the index of the component.
-     * 
+     * @param idx
+     *            the index of the component.
      * @return the name of the component.
      */
     public String getName(int idx) {
@@ -174,56 +252,54 @@
     }
 
     /**
-     * Perform transformation a color from this ColorSpace 
-     * into the RGB color space.
+     * Performs the transformation of a color from this ColorSpace into the RGB
+     * color space.
      * 
-     * @param colorvalue the color value in this ColorSpace.
-     * 
-     * @return the float array with color components in the 
-     * RGB color space.
+     * @param colorvalue
+     *            the color value in this ColorSpace.
+     * @return the float array with color components in the RGB color space.
      */
     public abstract float[] toRGB(float[] colorvalue);
 
     /**
-     * Perform transformation a color from this ColorSpace 
-     * into the CS_CIEXYZ color space.
+     * Performs the transformation of a color from this ColorSpace into the
+     * CS_CIEXYZ color space.
      * 
-     * @param colorvalue the color value in this ColorSpace.
-     * 
-     * @return the float array with color components in the 
-     * CS_CIEXYZ color space. 
+     * @param colorvalue
+     *            the color value in this ColorSpace.
+     * @return the float array with color components in the CS_CIEXYZ color
+     *         space.
      */
     public abstract float[] toCIEXYZ(float[] colorvalue);
 
     /**
-     * Performs color transformation from the RGB color space 
-     * into this ColorSpace.
+     * Performs the transformation of a color from the RGB color space into this
+     * ColorSpace.
      * 
-     * @param rgbvalue a float array in the RGB color space.
-     * 
-     * @return the float[] an array of transformed color
-     * components. 
+     * @param rgbvalue
+     *            the float array representing a color in the RGB color space.
+     * @return the float array with the transformed color components.
      */
     public abstract float[] fromRGB(float[] rgbvalue);
 
     /**
-     * Performs color transformation from the CS_CIEXYZ color space 
+     * Performs the transformation of a color from the CS_CIEXYZ color space
      * into this ColorSpace.
      * 
-     * @param colorvalue a float array in the CS_CIEXYZ color space.
-     * 
-     * @return the float[] an array of transformed color
-     * components. 
+     * @param colorvalue
+     *            the float array representing a color in the CS_CIEXYZ color
+     *            space.
+     * @return the float array with the transformed color components.
      */
     public abstract float[] fromCIEXYZ(float[] colorvalue);
 
     /**
-     * Gets the minimum normalized color component value for 
-     * the specified component.
+     * Gets the minimum normalized color component value for the specified
+     * component.
      * 
-     * @param component the component.
-     * 
-     * @return the miniimum normalized value of the component.
+     * @param component
+     *            the component to determine the minimum value.
+     * @return the minimum normalized value of the component.
      */
     public float getMinValue(int component) {
         if (component < 0 || component > numComponents - 1) {
@@ -234,11 +310,11 @@
     }
 
     /**
-     * Gets the maximum normalized color component value for 
-     * the specified component.
+     * Gets the maximum normalized color component value for the specified
+     * component.
      * 
-     * @param component the component.
-     * 
+     * @param component
+     *            the component to determine the maximum value.
      * @return the maximum normalized value of the component.
      */
     public float getMaxValue(int component) {
@@ -252,8 +328,7 @@
     /**
      * Checks if this ColorSpace has CS_sRGB type or not.
      * 
-     * @return true, if this ColorSpace has CS_sRGB type, 
-     * false otherwise.
+     * @return true, if this ColorSpace has CS_sRGB type, false otherwise.
      */
     public boolean isCS_sRGB() {
         // If our color space is sRGB, then cs_sRGB
@@ -281,12 +356,11 @@
 
 
     /**
-     * Gets the single instance of ColorSpace with the specified
-     * ColorSpace: CS_sRGB, CS_LINEAR_RGB, CS_CIEXYZ, CS_GRAY, 
-     * or CS_PYCC.
+     * Gets the single instance of ColorSpace with the specified ColorSpace:
+     * CS_sRGB, CS_LINEAR_RGB, CS_CIEXYZ, CS_GRAY, or CS_PYCC.
      * 
-     * @param colorspace the identifier of the specified Colorspace.
-     * 
+     * @param colorspace
+     *            the identifier of the specified Colorspace.
      * @return the single instance of the desired ColorSpace.
      */
     public static ColorSpace getInstance(int colorspace) {
diff --git a/awt/java/awt/color/ICC_ColorSpace.java b/awt/java/awt/color/ICC_ColorSpace.java
index 5ece2ef..5b4d7e9 100644
--- a/awt/java/awt/color/ICC_ColorSpace.java
+++ b/awt/java/awt/color/ICC_ColorSpace.java
@@ -28,19 +28,24 @@
 import java.io.*;
 
 /**
- * ICC_ColorSpace class implements ColorSpace abstract class and 
- * represents device independent and device dependent color spaces.
- * This color space is based on the International Color Consortium 
- * Specification (ICC) File Format for Color Profiles: 
- * <a href="http://www.color.org">http://www.color.org</a>
+ * This class implements the abstract class ColorSpace and represents device
+ * independent and device dependent color spaces. This color space is based on
+ * the International Color Consortium Specification (ICC) File Format for Color
+ * Profiles: <a href="http://www.color.org">http://www.color.org</a>
+ * 
+ * @since Android 1.0
  */
 public class ICC_ColorSpace extends ColorSpace {
     
-    /** The Constant serialVersionUID. */
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = 3455889114070431483L;
 
     // Need to keep compatibility with serialized form
-    /** The Constant serialPersistentFields. */
+    /**
+     * The Constant serialPersistentFields.
+     */
     private static final ObjectStreamField[]
       serialPersistentFields = {
         new ObjectStreamField("thisProfile", ICC_Profile.class), //$NON-NLS-1$
@@ -53,63 +58,94 @@
 
 
    /**
-    * According to ICC specification (from http://www.color.org)
-    * "For the CIEXYZ encoding, each component (X, Y, and Z)
-    * is encoded as a u1Fixed15Number".
-    * This means that max value for this encoding is 1 + (32767/32768)
-    */
+     * According to ICC specification (from http://www.color.org) "For the
+     * CIEXYZ encoding, each component (X, Y, and Z) is encoded as a
+     * u1Fixed15Number". This means that max value for this encoding is 1 +
+     * (32767/32768)
+     */
     private static final float MAX_XYZ = 1f + (32767f/32768f);
     
-    /** The Constant MAX_SHORT. */
+    /**
+     * The Constant MAX_SHORT.
+     */
     private static final float MAX_SHORT = 65535f;
     
-    /** The Constant INV_MAX_SHORT. */
+    /**
+     * The Constant INV_MAX_SHORT.
+     */
     private static final float INV_MAX_SHORT = 1f/MAX_SHORT;
     
-    /** The Constant SHORT2XYZ_FACTOR. */
+    /**
+     * The Constant SHORT2XYZ_FACTOR.
+     */
     private static final float SHORT2XYZ_FACTOR = MAX_XYZ/MAX_SHORT;
     
-    /** The Constant XYZ2SHORT_FACTOR. */
+    /**
+     * The Constant XYZ2SHORT_FACTOR.
+     */
     private static final float XYZ2SHORT_FACTOR = MAX_SHORT/MAX_XYZ;
 
-    /** The profile. */
+    /**
+     * The profile.
+     */
     private ICC_Profile profile = null;
     
-    /** The min values. */
+    /**
+     * The min values.
+     */
     private float minValues[] = null;
     
-    /** The max values. */
+    /**
+     * The max values.
+     */
     private float maxValues[] = null;
 
     // cache transforms here - performance gain
-    /** The to rgb transform. */
+    /**
+     * The to rgb transform.
+     */
     private ICC_Transform toRGBTransform = null;
     
-    /** The from rgb transform. */
+    /**
+     * The from rgb transform.
+     */
     private ICC_Transform fromRGBTransform = null;
     
-    /** The to xyz transform. */
+    /**
+     * The to xyz transform.
+     */
     private ICC_Transform toXYZTransform = null;
     
-    /** The from xyz transform. */
+    /**
+     * The from xyz transform.
+     */
     private ICC_Transform fromXYZTransform = null;
 
-    /** The converter. */
+    /**
+     * The converter.
+     */
     private final ColorConverter converter = new ColorConverter();
     
-    /** The scaler. */
+    /**
+     * The scaler.
+     */
     private final ColorScaler scaler = new ColorScaler();
     
-    /** The scaling data loaded. */
+    /**
+     * The scaling data loaded.
+     */
     private boolean scalingDataLoaded = false;
 
-    /** The resolved deserialized inst. */
+    /**
+     * The resolved deserialized inst.
+     */
     private ICC_ColorSpace resolvedDeserializedInst;
 
     /**
      * Instantiates a new ICC color space from an ICC_Profile object.
      * 
-     * @param pf the ICC_Profile object.
+     * @param pf
+     *            the ICC_Profile object.
      */
     public ICC_ColorSpace(ICC_Profile pf) {
         super(pf.getColorSpaceType(), pf.getNumComponents());
@@ -132,7 +168,7 @@
     }
 
     /**
-     * Returns the ICC_Profile for this ICC_ColorSpace.
+     * Gets the ICC_Profile for this ICC_ColorSpace.
      * 
      * @return the ICC_Profile for this ICC_ColorSpace.
      */
@@ -144,6 +180,14 @@
         return profile;
     }
 
+    /**
+     * Performs the transformation of a color from this ColorSpace into the RGB
+     * color space.
+     * 
+     * @param colorvalue
+     *            the color value in this ColorSpace.
+     * @return the float array with color components in the RGB color space.
+     */
     @Override
     public float[] toRGB(float[] colorvalue) {
         if (toRGBTransform == null) {
@@ -174,6 +218,15 @@
         return res;
     }
 
+    /**
+     * Performs the transformation of a color from this ColorSpace into the
+     * CS_CIEXYZ color space.
+     * 
+     * @param colorvalue
+     *            the color value in this ColorSpace.
+     * @return the float array with color components in the CS_CIEXYZ color
+     *         space.
+     */
     @Override
     public float[] toCIEXYZ(float[] colorvalue) {
         if (toXYZTransform == null) {
@@ -212,6 +265,14 @@
         return res;
     }
 
+    /**
+     * Performs the transformation of a color from the RGB color space into this
+     * ColorSpace.
+     * 
+     * @param rgbvalue
+     *            the float array representing a color in the RGB color space.
+     * @return the float array with the transformed color components.
+     */
     @Override
     public float[] fromRGB(float[] rgbvalue) {
         if (fromRGBTransform == null) {
@@ -241,6 +302,15 @@
         return res;
     }
 
+    /**
+     * Performs the transformation of a color from the CS_CIEXYZ color space
+     * into this ColorSpace.
+     * 
+     * @param xyzvalue
+     *            the float array representing a color in the CS_CIEXYZ color
+     *            space.
+     * @return the float array with the transformed color components.
+     */
     @Override
     public float[] fromCIEXYZ(float[] xyzvalue) {
         if (fromXYZTransform == null) {
@@ -279,6 +349,14 @@
         return res;
     }
 
+    /**
+     * Gets the minimum normalized color component value for the specified
+     * component.
+     * 
+     * @param component
+     *            the component to determine the minimum value.
+     * @return the minimum normalized value of the component.
+     */
     @Override
     public float getMinValue(int component) {
         if ((component < 0) || (component > this.getNumComponents() - 1)) {
@@ -289,6 +367,14 @@
         return minValues[component];
     }
 
+    /**
+     * Gets the maximum normalized color component value for the specified
+     * component.
+     * 
+     * @param component
+     *            the component to determine the maximum value.
+     * @return the maximum normalized value of the component.
+     */
     @Override
     public float getMaxValue(int component) {
         if ((component < 0) || (component > this.getNumComponents() - 1)) {
@@ -334,9 +420,10 @@
     /**
      * Write object.
      * 
-     * @param out the out
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param out
+     *            the out
+     * @throws IOException
+     *             Signals that an I/O exception has occurred.
      */
     private void writeObject(ObjectOutputStream out) throws IOException {
         ObjectOutputStream.PutField fields = out.putFields();
@@ -354,10 +441,12 @@
     /**
      * Read object.
      * 
-     * @param in the in
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
-     * @throws ClassNotFoundException the class not found exception
+     * @param in
+     *            the in
+     * @throws IOException
+     *             Signals that an I/O exception has occurred.
+     * @throws ClassNotFoundException
+     *             the class not found exception
      */
     private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
         ObjectInputStream.GetField fields = in.readFields();
@@ -369,8 +458,8 @@
      * Read resolve.
      * 
      * @return the object
-     * 
-     * @throws ObjectStreamException the object stream exception
+     * @throws ObjectStreamException
+     *             the object stream exception
      */
     Object readResolve() throws ObjectStreamException {
         return resolvedDeserializedInst;
diff --git a/awt/java/awt/color/ICC_Profile.java b/awt/java/awt/color/ICC_Profile.java
index ad704e0..8ffee6c 100644
--- a/awt/java/awt/color/ICC_Profile.java
+++ b/awt/java/awt/color/ICC_Profile.java
@@ -18,6 +18,7 @@
  * @author Oleg V. Khaschansky
  * @version $Revision$
  */
+
 package java.awt.color;
 
 import java.io.File;
@@ -40,427 +41,681 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The ICC_Profile class represents a color profile data for color spaces 
- * based on the International Color Consortium Specification ICC.1:2001-12, 
- * File Format for Color Profiles.
+ * The ICC_Profile class represents a color profile data for color spaces based
+ * on the International Color Consortium Specification ICC.1:2001-12, File
+ * Format for Color Profiles.
+ * 
+ * @since Android 1.0
  */
 public class ICC_Profile implements Serializable {
 
-    /** The Constant serialVersionUID. */
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = -3938515861990936766L;
 
     // NOTE: Constant field values are noted in 1.5 specification.
 
     /**
-     * The Constant CLASS_INPUT indicates that profile class is input. 
+     * The Constant CLASS_INPUT indicates that profile class is input.
      */
     public static final int CLASS_INPUT = 0;
 
-    /** 
-     * The Constant CLASS_DISPLAY indicates that profile class is display. 
+    /**
+     * The Constant CLASS_DISPLAY indicates that profile class is display.
      */
     public static final int CLASS_DISPLAY = 1;
 
-    /** 
-     * The Constant CLASS_OUTPUT indicates that profile class is output. 
+    /**
+     * The Constant CLASS_OUTPUT indicates that profile class is output.
      */
     public static final int CLASS_OUTPUT = 2;
 
-    /** 
-     * The Constant CLASS_DEVICELINK indicates that profile class 
-     * is device link. 
+    /**
+     * The Constant CLASS_DEVICELINK indicates that profile class is device
+     * link.
      */
     public static final int CLASS_DEVICELINK = 3;
 
-    /** 
-     * The Constant CLASS_COLORSPACECONVERSION indicates that profile class 
-     * is color space conversion.
+    /**
+     * The Constant CLASS_COLORSPACECONVERSION indicates that profile class is
+     * color space conversion.
      */
     public static final int CLASS_COLORSPACECONVERSION = 4;
 
-    /** The Constant CLASS_ABSTRACT indicates that profile class is abstract. */
+    /**
+     * The Constant CLASS_ABSTRACT indicates that profile class is abstract.
+     */
     public static final int CLASS_ABSTRACT = 5;
 
-    /** 
-     * The Constant CLASS_NAMEDCOLOR indicates that profile class 
-     * is named color. 
+    /**
+     * The Constant CLASS_NAMEDCOLOR indicates that profile class is named
+     * color.
      */
     public static final int CLASS_NAMEDCOLOR = 6;
 
-    /** The Constant icSigXYZData - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigXYZData - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigXYZData = 1482250784;
 
-    /** The Constant icSigLabData - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigLabData - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigLabData = 1281450528;
 
-    /** The Constant icSigLuvData - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigLuvData - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigLuvData = 1282766368;
 
-    /** The Constant icSigYCbCrData - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigYCbCrData - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigYCbCrData = 1497588338;
 
-    /** The Constant icSigYxyData - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigYxyData - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigYxyData = 1501067552;
 
-    /** The Constant icSigRgbData - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigRgbData - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigRgbData = 1380401696;
 
-    /** The Constant icSigGrayData - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigGrayData - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigGrayData = 1196573017;
 
-    /** The Constant icSigHsvData - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigHsvData - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigHsvData = 1213421088;
 
-    /** The Constant icSigHlsData - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigHlsData - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigHlsData = 1212961568;
 
-    /** The Constant icSigCmykData - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigCmykData - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigCmykData = 1129142603;
 
-    /** The Constant icSigCmyData - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigCmyData - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigCmyData = 1129142560;
 
-    /** The Constant icSigSpace2CLR - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigSpace2CLR - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigSpace2CLR = 843271250;
 
-    /** The Constant icSigSpace3CLR - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigSpace3CLR - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigSpace3CLR = 860048466;
 
-    /** The Constant icSigSpace4CLR - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigSpace4CLR - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigSpace4CLR = 876825682;
 
-    /** The Constant icSigSpace5CLR - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigSpace5CLR - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigSpace5CLR = 893602898;
 
-    /** The Constant icSigSpace6CLR - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigSpace6CLR - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigSpace6CLR = 910380114;
 
-    /** The Constant icSigSpace7CLR - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigSpace7CLR - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigSpace7CLR = 927157330;
 
-    /** The Constant icSigSpace8CLR - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigSpace8CLR - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigSpace8CLR = 943934546;
 
-    /** The Constant icSigSpace9CLR - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigSpace9CLR - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigSpace9CLR = 960711762;
 
-    /** The Constant icSigSpaceACLR - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigSpaceACLR - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigSpaceACLR = 1094929490;
 
-    /** The Constant icSigSpaceBCLR - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigSpaceBCLR - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigSpaceBCLR = 1111706706;
 
-    /** The Constant icSigSpaceCCLR - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigSpaceCCLR - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigSpaceCCLR = 1128483922;
 
-    /** The Constant icSigSpaceDCLR - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigSpaceDCLR - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigSpaceDCLR = 1145261138;
 
-    /** The Constant icSigSpaceECLR - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigSpaceECLR - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigSpaceECLR = 1162038354;
 
-    /** The Constant icSigSpaceFCLR - ICC Profile Color Space Type Signature. */
+    /**
+     * The Constant icSigSpaceFCLR - ICC Profile Color Space Type Signature.
+     */
     public static final int icSigSpaceFCLR = 1178815570;
 
-    /** The Constant icSigInputClass - ICC Profile Class Signature. */
+    /**
+     * The Constant icSigInputClass - ICC Profile Class Signature.
+     */
     public static final int icSigInputClass = 1935896178;
 
-    /** The Constant icSigDisplayClass - ICC Profile Class Signature. */
+    /**
+     * The Constant icSigDisplayClass - ICC Profile Class Signature.
+     */
     public static final int icSigDisplayClass = 1835955314;
 
-    /** The Constant icSigOutputClass - ICC Profile Class Signature. */
+    /**
+     * The Constant icSigOutputClass - ICC Profile Class Signature.
+     */
     public static final int icSigOutputClass = 1886549106;
 
-    /** The Constant icSigLinkClass - ICC Profile Class Signature. */
+    /**
+     * The Constant icSigLinkClass - ICC Profile Class Signature.
+     */
     public static final int icSigLinkClass = 1818848875;
 
-    /** The Constant icSigAbstractClass - ICC Profile Class Signature. */
+    /**
+     * The Constant icSigAbstractClass - ICC Profile Class Signature.
+     */
     public static final int icSigAbstractClass = 1633842036;
 
-    /** The Constant icSigColorantOrderTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigColorantOrderTag - ICC Profile Tag Signature.
+     */
     public static final int icSigColorantOrderTag = 1668051567;
 
-    /** The Constant icSigColorantTableTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigColorantTableTag - ICC Profile Tag Signature.
+     */
     public static final int icSigColorantTableTag = 1668051572;
 
-    /** The Constant icSigColorSpaceClass - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigColorSpaceClass - ICC Profile Tag Signature.
+     */
     public static final int icSigColorSpaceClass = 1936744803;
 
-    /** The Constant icSigNamedColorClass - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigNamedColorClass - ICC Profile Tag Signature.
+     */
     public static final int icSigNamedColorClass = 1852662636;
 
-    /** The Constant icPerceptual - ICC Profile Rendering Intent. */
+    /**
+     * The Constant icPerceptual - ICC Profile Rendering Intent.
+     */
     public static final int icPerceptual = 0;
 
-    /** The Constant icRelativeColorimetric - ICC Profile Rendering Intent. */
+    /**
+     * The Constant icRelativeColorimetric - ICC Profile Rendering Intent.
+     */
     public static final int icRelativeColorimetric = 1;
 
-    /** The Constant icSaturation - ICC Profile Rendering Intent. */
+    /**
+     * The Constant icSaturation - ICC Profile Rendering Intent.
+     */
     public static final int icSaturation = 2;
 
-    /** The Constant icAbsoluteColorimetric - ICC Profile Rendering Intent. */
+    /**
+     * The Constant icAbsoluteColorimetric - ICC Profile Rendering Intent.
+     */
     public static final int icAbsoluteColorimetric = 3;
 
-    /** The Constant icSigHead - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigHead - ICC Profile Tag Signature.
+     */
     public static final int icSigHead = 1751474532;
 
-    /** The Constant icSigAToB0Tag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigAToB0Tag - ICC Profile Tag Signature.
+     */
     public static final int icSigAToB0Tag = 1093812784;
 
-    /** The Constant icSigAToB1Tag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigAToB1Tag - ICC Profile Tag Signature.
+     */
     public static final int icSigAToB1Tag = 1093812785;
 
-    /** The Constant icSigAToB2Tag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigAToB2Tag - ICC Profile Tag Signature.
+     */
     public static final int icSigAToB2Tag = 1093812786;
 
-    /** The Constant icSigBlueColorantTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigBlueColorantTag - ICC Profile Tag Signature.
+     */
     public static final int icSigBlueColorantTag = 1649957210;
 
-    /** The Constant icSigBlueMatrixColumnTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigBlueMatrixColumnTag - ICC Profile Tag Signature.
+     */
     public static final int icSigBlueMatrixColumnTag = 1649957210;
 
-    /** The Constant icSigBlueTRCTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigBlueTRCTag - ICC Profile Tag Signature.
+     */
     public static final int icSigBlueTRCTag = 1649693251;
 
-    /** The Constant icSigBToA0Tag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigBToA0Tag - ICC Profile Tag Signature.
+     */
     public static final int icSigBToA0Tag = 1110589744;
 
-    /** The Constant icSigBToA1Tag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigBToA1Tag - ICC Profile Tag Signature.
+     */
     public static final int icSigBToA1Tag = 1110589745;
 
-    /** The Constant icSigBToA2Tag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigBToA2Tag - ICC Profile Tag Signature.
+     */
     public static final int icSigBToA2Tag = 1110589746;
 
-    /** The Constant icSigCalibrationDateTimeTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigCalibrationDateTimeTag - ICC Profile Tag Signature.
+     */
     public static final int icSigCalibrationDateTimeTag = 1667329140;
 
-    /** The Constant icSigCharTargetTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigCharTargetTag - ICC Profile Tag Signature.
+     */
     public static final int icSigCharTargetTag = 1952543335;
 
-    /** The Constant icSigCopyrightTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigCopyrightTag - ICC Profile Tag Signature.
+     */
     public static final int icSigCopyrightTag = 1668313716;
 
-    /** The Constant icSigCrdInfoTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigCrdInfoTag - ICC Profile Tag Signature.
+     */
     public static final int icSigCrdInfoTag = 1668441193;
 
-    /** The Constant icSigDeviceMfgDescTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigDeviceMfgDescTag - ICC Profile Tag Signature.
+     */
     public static final int icSigDeviceMfgDescTag = 1684893284;
 
-    /** The Constant icSigDeviceModelDescTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigDeviceModelDescTag - ICC Profile Tag Signature.
+     */
     public static final int icSigDeviceModelDescTag = 1684890724;
 
-    /** The Constant icSigDeviceSettingsTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigDeviceSettingsTag - ICC Profile Tag Signature.
+     */
     public static final int icSigDeviceSettingsTag = 1684371059;
 
-    /** The Constant icSigGamutTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigGamutTag - ICC Profile Tag Signature.
+     */
     public static final int icSigGamutTag = 1734438260;
 
-    /** The Constant icSigGrayTRCTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigGrayTRCTag - ICC Profile Tag Signature.
+     */
     public static final int icSigGrayTRCTag = 1800688195;
 
-    /** The Constant icSigGreenColorantTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigGreenColorantTag - ICC Profile Tag Signature.
+     */
     public static final int icSigGreenColorantTag = 1733843290;
 
-    /** The Constant icSigGreenMatrixColumnTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigGreenMatrixColumnTag - ICC Profile Tag Signature.
+     */
     public static final int icSigGreenMatrixColumnTag = 1733843290;
 
-    /** The Constant icSigGreenTRCTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigGreenTRCTag - ICC Profile Tag Signature.
+     */
     public static final int icSigGreenTRCTag = 1733579331;
 
-    /** The Constant icSigLuminanceTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigLuminanceTag - ICC Profile Tag Signature.
+     */
     public static final int icSigLuminanceTag = 1819635049;
 
-    /** The Constant icSigMeasurementTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigMeasurementTag - ICC Profile Tag Signature.
+     */
     public static final int icSigMeasurementTag = 1835360627;
 
-    /** The Constant icSigMediaBlackPointTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigMediaBlackPointTag - ICC Profile Tag Signature.
+     */
     public static final int icSigMediaBlackPointTag = 1651208308;
 
-    /** The Constant icSigMediaWhitePointTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigMediaWhitePointTag - ICC Profile Tag Signature.
+     */
     public static final int icSigMediaWhitePointTag = 2004119668;
 
-    /** The Constant icSigNamedColor2Tag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigNamedColor2Tag - ICC Profile Tag Signature.
+     */
     public static final int icSigNamedColor2Tag = 1852009522;
 
-    /** The Constant icSigOutputResponseTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigOutputResponseTag - ICC Profile Tag Signature.
+     */
     public static final int icSigOutputResponseTag = 1919251312;
 
-    /** The Constant icSigPreview0Tag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigPreview0Tag - ICC Profile Tag Signature.
+     */
     public static final int icSigPreview0Tag = 1886545200;
 
-    /** The Constant icSigPreview1Tag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigPreview1Tag - ICC Profile Tag Signature.
+     */
     public static final int icSigPreview1Tag = 1886545201;
 
-    /** The Constant icSigPreview2Tag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigPreview2Tag - ICC Profile Tag Signature.
+     */
     public static final int icSigPreview2Tag = 1886545202;
 
-    /** The Constant icSigProfileDescriptionTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigProfileDescriptionTag - ICC Profile Tag Signature.
+     */
     public static final int icSigProfileDescriptionTag = 1684370275;
 
-    /** The Constant icSigProfileSequenceDescTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigProfileSequenceDescTag - ICC Profile Tag Signature.
+     */
     public static final int icSigProfileSequenceDescTag = 1886610801;
 
-    /** The Constant icSigPs2CRD0Tag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigPs2CRD0Tag - ICC Profile Tag Signature.
+     */
     public static final int icSigPs2CRD0Tag = 1886610480;
 
-    /** The Constant icSigPs2CRD1Tag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigPs2CRD1Tag - ICC Profile Tag Signature.
+     */
     public static final int icSigPs2CRD1Tag = 1886610481;
 
-    /** The Constant icSigPs2CRD2Tag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigPs2CRD2Tag - ICC Profile Tag Signature.
+     */
     public static final int icSigPs2CRD2Tag = 1886610482;
 
-    /** The Constant icSigPs2CRD3Tag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigPs2CRD3Tag - ICC Profile Tag Signature.
+     */
     public static final int icSigPs2CRD3Tag = 1886610483;
 
-    /** The Constant icSigPs2CSATag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigPs2CSATag - ICC Profile Tag Signature.
+     */
     public static final int icSigPs2CSATag = 1886597747;
 
-    /** The Constant icSigPs2RenderingIntentTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigPs2RenderingIntentTag - ICC Profile Tag Signature.
+     */
     public static final int icSigPs2RenderingIntentTag = 1886597737;
 
-    /** The Constant icSigRedColorantTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigRedColorantTag - ICC Profile Tag Signature.
+     */
     public static final int icSigRedColorantTag = 1918392666;
 
-    /** The Constant icSigRedMatrixColumnTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigRedMatrixColumnTag - ICC Profile Tag Signature.
+     */
     public static final int icSigRedMatrixColumnTag = 1918392666;
 
-    /** The Constant icSigRedTRCTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigRedTRCTag - ICC Profile Tag Signature.
+     */
     public static final int icSigRedTRCTag = 1918128707;
 
-    /** The Constant icSigScreeningDescTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigScreeningDescTag - ICC Profile Tag Signature.
+     */
     public static final int icSigScreeningDescTag = 1935897188;
 
-    /** The Constant icSigScreeningTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigScreeningTag - ICC Profile Tag Signature.
+     */
     public static final int icSigScreeningTag = 1935897198;
 
-    /** The Constant icSigTechnologyTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigTechnologyTag - ICC Profile Tag Signature.
+     */
     public static final int icSigTechnologyTag = 1952801640;
 
-    /** The Constant icSigUcrBgTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigUcrBgTag - ICC Profile Tag Signature.
+     */
     public static final int icSigUcrBgTag = 1650877472;
 
-    /** The Constant icSigViewingCondDescTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigViewingCondDescTag - ICC Profile Tag Signature.
+     */
     public static final int icSigViewingCondDescTag = 1987405156;
 
-    /** The Constant icSigViewingConditionsTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigViewingConditionsTag - ICC Profile Tag Signature.
+     */
     public static final int icSigViewingConditionsTag = 1986618743;
 
-    /** The Constant icSigChromaticAdaptationTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigChromaticAdaptationTag - ICC Profile Tag Signature.
+     */
     public static final int icSigChromaticAdaptationTag = 1667785060;
 
-    /** The Constant icSigChromaticityTag - ICC Profile Tag Signature. */
+    /**
+     * The Constant icSigChromaticityTag - ICC Profile Tag Signature.
+     */
     public static final int icSigChromaticityTag = 1667789421;
 
-    /** The Constant icHdrSize - ICC Profile Header Location. */
+    /**
+     * The Constant icHdrSize - ICC Profile Header Location.
+     */
     public static final int icHdrSize = 0;
 
-    /** The Constant icHdrCmmId - ICC Profile Header Location. */
+    /**
+     * The Constant icHdrCmmId - ICC Profile Header Location.
+     */
     public static final int icHdrCmmId = 4;
 
-    /** The Constant icHdrVersion - ICC Profile Header Location. */
+    /**
+     * The Constant icHdrVersion - ICC Profile Header Location.
+     */
     public static final int icHdrVersion = 8;
 
-    /** The Constant icHdrDeviceClass - ICC Profile Header Location. */
+    /**
+     * The Constant icHdrDeviceClass - ICC Profile Header Location.
+     */
     public static final int icHdrDeviceClass = 12;
 
-    /** The Constant icHdrColorSpace - ICC Profile Header Location. */
+    /**
+     * The Constant icHdrColorSpace - ICC Profile Header Location.
+     */
     public static final int icHdrColorSpace = 16;
 
-    /** The Constant icHdrPcs - ICC Profile Header Location. */
+    /**
+     * The Constant icHdrPcs - ICC Profile Header Location.
+     */
     public static final int icHdrPcs = 20;
 
-    /** The Constant icHdrDate - ICC Profile Header Location. */
+    /**
+     * The Constant icHdrDate - ICC Profile Header Location.
+     */
     public static final int icHdrDate = 24;
 
-    /** The Constant icHdrMagic - ICC Profile Header Location. */
+    /**
+     * The Constant icHdrMagic - ICC Profile Header Location.
+     */
     public static final int icHdrMagic = 36;
 
-    /** The Constant icHdrPlatform - ICC Profile Header Location. */
+    /**
+     * The Constant icHdrPlatform - ICC Profile Header Location.
+     */
     public static final int icHdrPlatform = 40;
 
-    /** The Constant icHdrProfileID - ICC Profile Header Location. */
+    /**
+     * The Constant icHdrProfileID - ICC Profile Header Location.
+     */
     public static final int icHdrProfileID = 84;
 
-    /** The Constant icHdrFlags - ICC Profile Header Location. */
+    /**
+     * The Constant icHdrFlags - ICC Profile Header Location.
+     */
     public static final int icHdrFlags = 44;
 
-    /** The Constant icHdrManufacturer - ICC Profile Header Location. */
+    /**
+     * The Constant icHdrManufacturer - ICC Profile Header Location.
+     */
     public static final int icHdrManufacturer = 48;
 
-    /** The Constant icHdrModel - ICC Profile Header Location. */
+    /**
+     * The Constant icHdrModel - ICC Profile Header Location.
+     */
     public static final int icHdrModel = 52;
 
-    /** The Constant icHdrAttributes - ICC Profile Header Location. */
+    /**
+     * The Constant icHdrAttributes - ICC Profile Header Location.
+     */
     public static final int icHdrAttributes = 56;
 
-    /** The Constant icHdrRenderingIntent - ICC Profile Header Location. */
+    /**
+     * The Constant icHdrRenderingIntent - ICC Profile Header Location.
+     */
     public static final int icHdrRenderingIntent = 64;
 
-    /** The Constant icHdrIlluminant - ICC Profile Header Location. */
+    /**
+     * The Constant icHdrIlluminant - ICC Profile Header Location.
+     */
     public static final int icHdrIlluminant = 68;
 
-    /** The Constant icHdrCreator - ICC Profile Header Location. */
+    /**
+     * The Constant icHdrCreator - ICC Profile Header Location.
+     */
     public static final int icHdrCreator = 80;
 
-    /** The Constant icICCAbsoluteColorimetric - ICC Profile Rendering Intent. */
+    /**
+     * The Constant icICCAbsoluteColorimetric - ICC Profile Rendering Intent.
+     */
     public static final int icICCAbsoluteColorimetric = 3;
 
-    /** The Constant icMediaRelativeColorimetric - ICC Profile Rendering Intent. */
+    /**
+     * The Constant icMediaRelativeColorimetric - ICC Profile Rendering Intent.
+     */
     public static final int icMediaRelativeColorimetric = 1;
 
-    /** The Constant icTagType - ICC Profile Constant. */
+    /**
+     * The Constant icTagType - ICC Profile Constant.
+     */
     public static final int icTagType = 0;
 
-    /** The Constant icTagReserved - ICC Profile Constant. */
+    /**
+     * The Constant icTagReserved - ICC Profile Constant.
+     */
     public static final int icTagReserved = 4;
 
-    /** The Constant icCurveCount - ICC Profile Constant. */
+    /**
+     * The Constant icCurveCount - ICC Profile Constant.
+     */
     public static final int icCurveCount = 8;
 
-    /** The Constant icCurveData - ICC Profile Constant. */
+    /**
+     * The Constant icCurveData - ICC Profile Constant.
+     */
     public static final int icCurveData = 12;
 
-    /** The Constant icXYZNumberX - ICC Profile Constant. */
+    /**
+     * The Constant icXYZNumberX - ICC Profile Constant.
+     */
     public static final int icXYZNumberX = 8;
 
-    /** Size of a profile header. */
+    /**
+     * Size of a profile header.
+     */
     private static final int headerSize = 128;
 
-    /** header magic number. */
+    /**
+     * header magic number.
+     */
     private static final int headerMagicNumber = 0x61637370;
 
     // Cache of predefined profiles
-    /** The s rgb profile. */
+    /**
+     * The s rgb profile.
+     */
     private static ICC_Profile sRGBProfile;
-    
-    /** The xyz profile. */
+
+    /**
+     * The xyz profile.
+     */
     private static ICC_Profile xyzProfile;
-    
-    /** The gray profile. */
+
+    /**
+     * The gray profile.
+     */
     private static ICC_Profile grayProfile;
-    
-    /** The pycc profile. */
+
+    /**
+     * The pycc profile.
+     */
     private static ICC_Profile pyccProfile;
-    
-    /** The linear rgb profile. */
+
+    /**
+     * The linear rgb profile.
+     */
     private static ICC_Profile linearRGBProfile;
 
-    /** Handle to the current profile. */
+    /**
+     * Handle to the current profile.
+     */
     private transient long profileHandle = 0;
 
-    /** If handle is used by another class this object is not responsible for closing profile. */
+    /**
+     * If handle is used by another class this object is not responsible for
+     * closing profile.
+     */
     private transient boolean handleStolen = false;
 
-    /** Cached header data. */
+    /**
+     * Cached header data.
+     */
     private transient byte[] headerData = null;
 
-    /** Serialization support. */
+    /**
+     * Serialization support.
+     */
     private transient ICC_Profile openedProfileObject;
 
     /**
-     * Instantiates a new iC c_ profile.
+     * Instantiates a new ICC profile with the given data.
      * 
-     * @param data the data
+     * @param data
+     *            the data.
      */
     private ICC_Profile(byte[] data) {
         profileHandle = NativeCMM.cmmOpenProfile(data);
@@ -476,7 +731,8 @@
     /**
      * Used to instantiate subclasses (ICC_ProfileGrey and ICC_ProfileRGB).
      * 
-     * @param profileHandle - should be valid handle to opened color profile
+     * @param profileHandle
+     *            - should be valid handle to opened color profile
      */
     ICC_Profile(long profileHandle) {
         this.profileHandle = profileHandle;
@@ -487,10 +743,11 @@
     /**
      * Writes the ICC_Profile to a file with the specified name.
      * 
-     * @param fileName the file name.
-     * 
-     * @throws IOException signals that an I/O exception has occurred during
-     * writing or opening the file.
+     * @param fileName
+     *            the file name.
+     * @throws IOException
+     *             if an I/O exception has occurred during writing or opening
+     *             the file.
      */
     public void write(String fileName) throws IOException {
         FileOutputStream oStream = new FileOutputStream(fileName);
@@ -501,9 +758,10 @@
     /**
      * Serializable implementation.
      * 
-     * @param s the s
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param s
+     *            the s
+     * @throws IOException
+     *             Signals that an I/O exception has occurred.
      */
     private void writeObject(ObjectOutputStream s) throws IOException {
         s.defaultWriteObject();
@@ -514,10 +772,12 @@
     /**
      * Serializable implementation.
      * 
-     * @param s the s
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
-     * @throws ClassNotFoundException the class not found exception
+     * @param s
+     *            the s
+     * @throws IOException
+     *             Signals that an I/O exception has occurred.
+     * @throws ClassNotFoundException
+     *             the class not found exception
      */
     private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException {
         s.defaultReadObject();
@@ -547,9 +807,9 @@
      * Resolves instances being deserialized into instances registered with CMM.
      * 
      * @return ICC_Profile object for profile registered with CMM.
-     * 
-     * @throws ObjectStreamException if there is an error in the serialized 
-     * files or during the process of reading them.
+     * @throws ObjectStreamException
+     *             if there is an error in the serialized files or during the
+     *             process of reading them.
      */
     protected Object readResolve() throws ObjectStreamException {
         return openedProfileObject;
@@ -558,20 +818,23 @@
     /**
      * Writes the ICC_Profile to an OutputStream.
      * 
-     * @param s the OutputStream.
-     * 
-     * @throws IOException signals that an I/O exception has occurred during
-     * writing or opening OutputStream.
+     * @param s
+     *            the OutputStream.
+     * @throws IOException
+     *             signals that an I/O exception has occurred during writing or
+     *             opening OutputStream.
      */
     public void write(OutputStream s) throws IOException {
         s.write(getData());
     }
 
     /**
-     * Sets a tagged data element in the profile from a byte array. 
+     * Sets a tagged data element in the profile from a byte array.
      * 
-     * @param tagSignature the ICC tag signature for the data element to be set. 
-     * @param tagData the data to be set for the specified tag signature.
+     * @param tagSignature
+     *            the ICC tag signature for the data element to be set.
+     * @param tagData
+     *            the data to be set for the specified tag signature.
      */
     public void setData(int tagSignature, byte[] tagData) {
         NativeCMM.cmmSetProfileElement(profileHandle, tagSignature, tagData);
@@ -582,21 +845,17 @@
     }
 
     /**
-     * Gets a tagged data element from the profile as a byte array. 
-     * Elements are identified by tag signatures as defined in 
-     * the ICC specification. 
+     * Gets a tagged data element from the profile as a byte array. Elements are
+     * identified by tag signatures as defined in the ICC specification.
      * 
-     * @param tagSignature the ICC tag signature for the data element to get.
-     * 
+     * @param tagSignature
+     *            the ICC tag signature for the data element to get.
      * @return a byte array that contains the tagged data element.
      */
     public byte[] getData(int tagSignature) {
         int tagSize = 0;
         try {
-            tagSize = NativeCMM.cmmGetProfileElementSize(
-                    profileHandle,
-                    tagSignature
-                );
+            tagSize = NativeCMM.cmmGetProfileElementSize(profileHandle, tagSignature);
         } catch (CMMException e) {
             // We'll get this exception if there's no element with
             // the specified tag signature
@@ -625,7 +884,7 @@
      */
     @Override
     protected void finalize() {
-        if (profileHandle!=0 && !handleStolen) {
+        if (profileHandle != 0 && !handleStolen) {
             NativeCMM.cmmCloseProfile(profileHandle);
         }
 
@@ -663,16 +922,16 @@
         // Not an ICC profile class
         // awt.15F=Profile class does not comply with ICC specification
         throw new IllegalArgumentException(Messages.getString("awt.15F")); //$NON-NLS-1$
-        
+
     }
 
     /**
-     * Returns the color space type of the Profile Connection Space (PCS).
+     * Gets the color space type of the Profile Connection Space (PCS).
      * 
      * @return the PCS type.
      */
     public int getPCSType() {
-         return csFromSignature(getIntFromHeader(icHdrPcs));
+        return csFromSignature(getIntFromHeader(icHdrPcs));
     }
 
     /**
@@ -740,7 +999,7 @@
      * @return the minor version of this ICC profile.
      */
     public int getMinorVersion() {
-        return getByteFromHeader(icHdrVersion+1);
+        return getByteFromHeader(icHdrVersion + 1);
     }
 
     /**
@@ -762,13 +1021,14 @@
     }
 
     /**
-     * Tries to open file at the specified path. Path entries can be 
-     * divided by a separator character.
+     * Tries to open the file at the specified path. Path entries can be divided
+     * by a separator character.
      * 
-     * @param path the path
-     * @param fileName the file name
-     * 
-     * @return the file input stream
+     * @param path
+     *            the path to the file.
+     * @param fileName
+     *            the file name.
+     * @return the input stream to read the file.
      */
     private static FileInputStream tryPath(String path, String fileName) {
         FileInputStream fiStream = null;
@@ -786,7 +1046,8 @@
                 if (fiStream != null) {
                     return fiStream;
                 }
-            } catch (FileNotFoundException e) {}
+            } catch (FileNotFoundException e) {
+            }
         }
 
         return fiStream;
@@ -795,18 +1056,18 @@
     /**
      * Gets the single instance of ICC_Profile from data in the specified file.
      * 
-     * @param fileName the specified name of file with ICC profile data.
-     * 
+     * @param fileName
+     *            the specified name of file with ICC profile data.
      * @return single instance of ICC_Profile.
-     * 
-     * @throws IOException signals that an I/O error occured while reading the file
-     * or the file doesn't exist.
+     * @throws IOException
+     *             signals that an I/O error occurred while reading the file or
+     *             the file does not exist.
      */
     public static ICC_Profile getInstance(String fileName) throws IOException {
         final String fName = fileName; // to use in the privileged block
 
-        FileInputStream fiStream = (FileInputStream) AccessController.doPrivileged(
-                new PrivilegedAction<FileInputStream>() {
+        FileInputStream fiStream = (FileInputStream)AccessController
+                .doPrivileged(new PrivilegedAction<FileInputStream>() {
                     public FileInputStream run() {
                         FileInputStream fiStream = null;
 
@@ -816,7 +1077,8 @@
                             if (fiStream != null) {
                                 return fiStream;
                             }
-                        } catch (FileNotFoundException e) {}
+                        } catch (FileNotFoundException e) {
+                        }
 
                         // Check java.iccprofile.path entries
                         fiStream = tryPath(System.getProperty("java.iccprofile.path"), fName); //$NON-NLS-1$
@@ -833,9 +1095,8 @@
                         // Check directory with java sample profiles
                         String home = System.getProperty("java.home"); //$NON-NLS-1$
                         if (home != null) {
-                            fiStream = tryPath(
-                                    home + File.separatorChar +
-                                    "lib" + File.separatorChar + "cmm", fName //$NON-NLS-1$ //$NON-NLS-2$
+                            fiStream = tryPath(home + File.separatorChar
+                                    + "lib" + File.separatorChar + "cmm", fName //$NON-NLS-1$ //$NON-NLS-2$
                             );
                         }
 
@@ -854,17 +1115,17 @@
     }
 
     /**
-     * Gets the single instance of ICC_Profile with data in
-     * the specified InputStream.
+     * Gets the single instance of ICC_Profile with data in the specified
+     * InputStream.
      * 
-     * @param s the InputStream with ICC profile data.
-     * 
+     * @param s
+     *            the InputStream with ICC profile data.
      * @return single instance of ICC_Profile.
-     * 
-     * @throws IOException if an I/O exception has occurred during reading 
-     * from InputStream.
-     * @throws IllegalArgumentException if the file does not contain valid 
-     * ICC Profile data.
+     * @throws IOException
+     *             if an I/O exception has occurred during reading from
+     *             InputStream.
+     * @throws IllegalArgumentException
+     *             if the file does not contain valid ICC Profile data.
      */
     public static ICC_Profile getInstance(InputStream s) throws IOException {
         byte[] header = new byte[headerSize];
@@ -877,10 +1138,7 @@
         }
 
         // Check the profile data for consistency
-        if (
-                ICC_ProfileHelper.getBigEndianFromByteArray(header, icHdrMagic) !=
-                headerMagicNumber
-        ) {
+        if (ICC_ProfileHelper.getBigEndianFromByteArray(header, icHdrMagic) != headerMagicNumber) {
             throw new IllegalArgumentException(invalidDataMessage);
         }
 
@@ -892,10 +1150,7 @@
         System.arraycopy(header, 0, profileData, 0, headerSize);
 
         // Read the profile itself
-        if (
-                s.read(profileData, headerSize, profileSize - headerSize) !=
-                profileSize - headerSize
-        ) {
+        if (s.read(profileData, headerSize, profileSize - headerSize) != profileSize - headerSize) {
             throw new IllegalArgumentException(invalidDataMessage);
         }
 
@@ -903,16 +1158,15 @@
     }
 
     /**
-     * Gets the single instance of ICC_Profile from the specified data in 
-     * a byte array.
+     * Gets the single instance of ICC_Profile from the specified data in a byte
+     * array.
      * 
-     * @param data the byte array of ICC profile.
-     * 
-     * @return single instance of ICC_Profile from the specified data in 
-     * a byte array.
-     * 
-     * @throws IllegalArgumentException if the file does not contain valid 
-     * ICC Profile data.
+     * @param data
+     *            the byte array of ICC profile.
+     * @return single instance of ICC_Profile from the specified data in a byte
+     *         array.
+     * @throws IllegalArgumentException
+     *             if the file does not contain valid ICC Profile data.
      */
     public static ICC_Profile getInstance(byte[] data) {
         ICC_Profile res = null;
@@ -924,29 +1178,28 @@
             throw new IllegalArgumentException(Messages.getString("awt.162")); //$NON-NLS-1$
         }
 
-      if (System.getProperty("os.name").toLowerCase().indexOf("windows") >= 0) { //$NON-NLS-1$ //$NON-NLS-2$
-        try {
-            if ( res.getColorSpaceType () == ColorSpace.TYPE_RGB &&
-                 res.getDataSize(icSigMediaWhitePointTag) > 0 &&
-                 res.getDataSize(icSigRedColorantTag) > 0 &&
-                 res.getDataSize(icSigGreenColorantTag) > 0 &&
-                 res.getDataSize(icSigBlueColorantTag) > 0 &&
-                 res.getDataSize(icSigRedTRCTag) > 0 &&
-                 res.getDataSize(icSigGreenTRCTag) > 0 &&
-                 res.getDataSize(icSigBlueTRCTag) > 0
-                ) {
-                res = new ICC_ProfileRGB(res.getProfileHandle());
-            } else if ( res.getColorSpaceType () == ColorSpace.TYPE_GRAY &&
-                        res.getDataSize(icSigMediaWhitePointTag) > 0 &&
-                        res.getDataSize(icSigGrayTRCTag) > 0
-                ) {
-                res = new ICC_ProfileGray (res.getProfileHandle());
+        if (System.getProperty("os.name").toLowerCase().indexOf("windows") >= 0) { //$NON-NLS-1$ //$NON-NLS-2$
+            try {
+                if (res.getColorSpaceType() == ColorSpace.TYPE_RGB
+                        && res.getDataSize(icSigMediaWhitePointTag) > 0
+                        && res.getDataSize(icSigRedColorantTag) > 0
+                        && res.getDataSize(icSigGreenColorantTag) > 0
+                        && res.getDataSize(icSigBlueColorantTag) > 0
+                        && res.getDataSize(icSigRedTRCTag) > 0
+                        && res.getDataSize(icSigGreenTRCTag) > 0
+                        && res.getDataSize(icSigBlueTRCTag) > 0) {
+                    res = new ICC_ProfileRGB(res.getProfileHandle());
+                } else if (res.getColorSpaceType() == ColorSpace.TYPE_GRAY
+                        && res.getDataSize(icSigMediaWhitePointTag) > 0
+                        && res.getDataSize(icSigGrayTRCTag) > 0) {
+                    res = new ICC_ProfileGray(res.getProfileHandle());
+                }
+
+            } catch (CMMException e) { /* return res in this case */
             }
+        }
 
-        } catch (CMMException e) { /* return res in this case */ }
-      }
-
-      return res;
+        return res;
     }
 
     /**
@@ -954,80 +1207,77 @@
      * defined by the ColorSpace class: CS_sRGB, CS_LINEAR_RGB, CS_CIEXYZ,
      * CS_PYCC, CS_GRAY.
      * 
-     * @param cspace the type of color space defined in the ColorSpace class.
-     * 
+     * @param cspace
+     *            the type of color space defined in the ColorSpace class.
      * @return single instance of ICC_Profile.
-     * 
-     * @throws IllegalArgumentException is not one of the defined color 
-     * space types.
+     * @throws IllegalArgumentException
+     *             is not one of the defined color space types.
      */
     public static ICC_Profile getInstance(int cspace) {
-    try {
-      switch (cspace) {
+        try {
+            switch (cspace) {
 
-      case ColorSpace.CS_sRGB:
-        if (sRGBProfile == null) {
-            sRGBProfile = getInstance("sRGB.pf"); //$NON-NLS-1$
+                case ColorSpace.CS_sRGB:
+                    if (sRGBProfile == null) {
+                        sRGBProfile = getInstance("sRGB.pf"); //$NON-NLS-1$
+                    }
+                    return sRGBProfile;
+
+                case ColorSpace.CS_CIEXYZ:
+                    if (xyzProfile == null) {
+                        xyzProfile = getInstance("CIEXYZ.pf"); //$NON-NLS-1$
+                    }
+                    return xyzProfile;
+
+                case ColorSpace.CS_GRAY:
+                    if (grayProfile == null) {
+                        grayProfile = getInstance("GRAY.pf"); //$NON-NLS-1$
+                    }
+                    return grayProfile;
+
+                case ColorSpace.CS_PYCC:
+                    if (pyccProfile == null) {
+                        pyccProfile = getInstance("PYCC.pf"); //$NON-NLS-1$
+                    }
+                    return pyccProfile;
+
+                case ColorSpace.CS_LINEAR_RGB:
+                    if (linearRGBProfile == null) {
+                        linearRGBProfile = getInstance("LINEAR_RGB.pf"); //$NON-NLS-1$
+                    }
+                    return linearRGBProfile;
+            }
+
+        } catch (IOException e) {
+            // awt.163=Can't open color profile
+            throw new IllegalArgumentException(Messages.getString("Can't open color profile")); //$NON-NLS-1$
         }
-        return sRGBProfile;
 
-      case ColorSpace.CS_CIEXYZ:
-        if (xyzProfile == null) {
-            xyzProfile = getInstance("CIEXYZ.pf"); //$NON-NLS-1$
-        }
-        return xyzProfile;
-
-      case ColorSpace.CS_GRAY:
-        if (grayProfile == null) {
-            grayProfile = getInstance("GRAY.pf"); //$NON-NLS-1$
-        }
-        return grayProfile;
-
-      case ColorSpace.CS_PYCC:
-        if (pyccProfile == null) {
-            pyccProfile = getInstance("PYCC.pf"); //$NON-NLS-1$
-        }
-        return pyccProfile;
-
-      case ColorSpace.CS_LINEAR_RGB:
-        if (linearRGBProfile == null) {
-            linearRGBProfile = getInstance("LINEAR_RGB.pf"); //$NON-NLS-1$
-        }
-        return linearRGBProfile;
-      }
-
-    } catch (IOException e) {
-        // awt.163=Can't open color profile 
-        throw new IllegalArgumentException(Messages.getString("Can't open color profile")); //$NON-NLS-1$
+        // awt.164=Not a predefined color space
+        throw new IllegalArgumentException(Messages.getString("Not a predefined color space")); //$NON-NLS-1$
     }
 
-    // awt.164=Not a predefined color space
-    throw new IllegalArgumentException(Messages.getString("Not a predefined color space")); //$NON-NLS-1$
-  }
-
     /**
      * Reads an integer from the profile header at the specified position.
      * 
-     * @param idx - offset in bytes from the beginning of the header
-     * 
-     * @return the int from header
+     * @param idx
+     *            - offset in bytes from the beginning of the header
+     * @return the integer value from header
      */
     private int getIntFromHeader(int idx) {
         if (headerData == null) {
             headerData = getData(icSigHead);
         }
 
-        return  ((headerData[idx]   & 0xFF) << 24)|
-                  ((headerData[idx+1] & 0xFF) << 16)|
-                  ((headerData[idx+2] & 0xFF) << 8) |
-                  ((headerData[idx+3] & 0xFF));
+        return ((headerData[idx] & 0xFF) << 24) | ((headerData[idx + 1] & 0xFF) << 16)
+                | ((headerData[idx + 2] & 0xFF) << 8) | ((headerData[idx + 3] & 0xFF));
     }
 
     /**
      * Reads byte from the profile header at the specified position.
      * 
-     * @param idx - offset in bytes from the beginning of the header
-     * 
+     * @param idx
+     *            - offset in bytes from the beginning of the header
      * @return the byte from header
      */
     private byte getByteFromHeader(int idx) {
@@ -1039,11 +1289,11 @@
     }
 
     /**
-     * Converts ICC color space signature to the java predefined
-     * color space type.
+     * Converts ICC color space signature to the java predefined color space
+     * type.
      * 
-     * @param signature the signature
-     * 
+     * @param signature
+     *            the signature
      * @return the int
      */
     private int csFromSignature(int signature) {
@@ -1102,7 +1352,7 @@
         }
 
         // awt.165=Color space doesn't comply with ICC specification
-        throw new IllegalArgumentException (Messages.getString("awt.165")); //$NON-NLS-1$
+        throw new IllegalArgumentException(Messages.getString("awt.165")); //$NON-NLS-1$
     }
 
     /**
@@ -1118,22 +1368,19 @@
     /**
      * Gets the data size.
      * 
-     * @param tagSignature the tag signature
-     * 
+     * @param tagSignature
+     *            the tag signature
      * @return the data size
      */
     private int getDataSize(int tagSignature) {
-        return NativeCMM.cmmGetProfileElementSize(
-                profileHandle,
-                tagSignature
-            );
+        return NativeCMM.cmmGetProfileElementSize(profileHandle, tagSignature);
     }
 
     /**
      * Reads XYZ value from the tag data.
      * 
-     * @param tagSignature the tag signature
-     * 
+     * @param tagSignature
+     *            the tag signature
      * @return the XYZ value
      */
     float[] getXYZValue(int tagSignature) {
@@ -1153,20 +1400,20 @@
     /**
      * Gets the media white point.
      * 
-     * @return the media white point
+     * @return the media white point.
      */
     float[] getMediaWhitePoint() {
         return getXYZValue(icSigMediaWhitePointTag);
     }
 
     /**
-     * If TRC is not a table returns gamma via return value
-     * and sets dataTRC to null. If TRC is a table returns 0
-     * and fills dataTRC with values.
+     * If TRC is not a table returns gamma via return value and sets dataTRC to
+     * null. If TRC is a table returns 0 and fills dataTRC with values.
      * 
-     * @param tagSignature the tag signature
-     * @param dataTRC the data trc
-     * 
+     * @param tagSignature
+     *            the tag signature
+     * @param dataTRC
+     *            the data trc
      * @return - gamma or zero if TRC is a table
      */
     private float getGammaOrTRC(int tagSignature, short[] dataTRC) {
@@ -1195,8 +1442,8 @@
     /**
      * Gets the gamma.
      * 
-     * @param tagSignature the tag signature
-     * 
+     * @param tagSignature
+     *            the tag signature
      * @return the gamma
      */
     float getGamma(int tagSignature) {
@@ -1211,10 +1458,10 @@
     }
 
     /**
-     * Gets the tRC.
+     * Gets the TRC.
      * 
-     * @param tagSignature the tag signature
-     * 
+     * @param tagSignature
+     *            the tag signature
      * @return the tRC
      */
     short[] getTRC(int tagSignature) {
@@ -1228,4 +1475,3 @@
         return dataTRC;
     }
 }
-
diff --git a/awt/java/awt/color/ICC_ProfileGray.java b/awt/java/awt/color/ICC_ProfileGray.java
index f009b18..f748101 100644
--- a/awt/java/awt/color/ICC_ProfileGray.java
+++ b/awt/java/awt/color/ICC_ProfileGray.java
@@ -22,21 +22,26 @@
 
 /**
  * The ICC_ProfileGray class represent profiles with TYPE_GRAY color space type,
- * and includes the grayTRCTag and mediaWhitePointTag tags. 
+ * and includes the grayTRCTag and mediaWhitePointTag tags. The gray component
+ * can be transformed from a GRAY device profile color space to the CIEXYZ
+ * Profile through the tone reproduction curve (TRC):
+ * <p>
+ * PCSY = grayTRC[deviceGray]
  * 
- * The gray component can be transformed from a GRAY device profile color space 
- * to the CIEXYZ Profile through the tone reproduction curve (TRC): 
- * <p>PCSY = grayTRC[deviceGray]
+ * @since Android 1.0
  */
 public class ICC_ProfileGray extends ICC_Profile {
     
-    /** The Constant serialVersionUID. */
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = -1124721290732002649L;
 
     /**
      * Instantiates a new iC c_ profile gray.
      * 
-     * @param profileHandle the profile handle
+     * @param profileHandle
+     *            the profile handle
      */
     ICC_ProfileGray(long profileHandle) {
         super(profileHandle);
@@ -45,12 +50,17 @@
     /**
      * Gets the TRC as an array of shorts.
      * 
-     * @return a short array of the TRC.
+     * @return the short array of the TRC.
      */
     public short[] getTRC() {
         return super.getTRC(icSigGrayTRCTag);
     }
 
+    /**
+     * Gets the media white point.
+     * 
+     * @return the media white point
+     */
     @Override
     public float[] getMediaWhitePoint() {
         return super.getMediaWhitePoint();
diff --git a/awt/java/awt/color/ICC_ProfileRGB.java b/awt/java/awt/color/ICC_ProfileRGB.java
index beb1a0c..9c6010f 100644
--- a/awt/java/awt/color/ICC_ProfileRGB.java
+++ b/awt/java/awt/color/ICC_ProfileRGB.java
@@ -23,38 +23,58 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The ICC_ProfileRGB class represents profiles with RGB color space type and 
- * contains the redColorantTag, greenColorantTag, blueColorantTag, redTRCTag, 
+ * The ICC_ProfileRGB class represents profiles with RGB color space type and
+ * contains the redColorantTag, greenColorantTag, blueColorantTag, redTRCTag,
  * greenTRCTag, blueTRCTag, and mediaWhitePointTag tags.
+ * 
+ * @since Android 1.0
  */
 public class ICC_ProfileRGB extends ICC_Profile {
     
-    /** The Constant serialVersionUID. */
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = 8505067385152579334L;
 
     /**
-     * Instantiates a new iC c_ profile rgb.
+     * Instantiates a new RGB ICC_Profile.
      * 
-     * @param profileHandle the profile handle
+     * @param profileHandle
+     *            the profile handle
      */
     ICC_ProfileRGB(long profileHandle) {
         super(profileHandle);
     }
 
-    /** The Constant REDCOMPONENT indicates the red component. */
+    /**
+     * The Constant REDCOMPONENT indicates the red component.
+     */
     public static final int REDCOMPONENT = 0;
 
-    /** The Constant GREENCOMPONENT indicates the green component. */
+    /**
+     * The Constant GREENCOMPONENT indicates the green component.
+     */
     public static final int GREENCOMPONENT = 1;
 
-    /** The Constant BLUECOMPONENT indicates the blue component. */
+    /**
+     * The Constant BLUECOMPONENT indicates the blue component.
+     */
     public static final int BLUECOMPONENT = 2;
 
     // awt.15E=Unknown component. Must be REDCOMPONENT, GREENCOMPONENT or BLUECOMPONENT.
-    /** The Constant UNKNOWN_COMPONENT_MSG. */
+    /**
+     * The Constant UNKNOWN_COMPONENT_MSG.
+     */
     private static final String UNKNOWN_COMPONENT_MSG = Messages
             .getString("awt.15E"); //$NON-NLS-1$
 
+    /**
+     * Gets the TRC.
+     * 
+     * @param component
+     *            the tag signature.
+     * @return the TRC value.
+     */
     @Override
     public short[] getTRC(int component) {
         switch (component) {
@@ -70,6 +90,13 @@
         throw new IllegalArgumentException(UNKNOWN_COMPONENT_MSG);
     }
 
+    /**
+     * Gets the gamma.
+     * 
+     * @param component
+     *            the tag signature.
+     * @return the gamma value.
+     */
     @Override
     public float getGamma(int component) {
         switch (component) {
@@ -86,11 +113,11 @@
     }
 
     /**
-     * Gets a float matrix which contains the X, Y, and Z components of 
-     * the profile's redColorantTag, greenColorantTag, and blueColorantTag.
+     * Gets a float matrix which contains the X, Y, and Z components of the
+     * profile's redColorantTag, greenColorantTag, and blueColorantTag.
      * 
-     * @return a float matrix which contains the X, Y, and Z components of 
-     * the profile's redColorantTag, greenColorantTag, and blueColorantTag.
+     * @return the float matrix which contains the X, Y, and Z components of the
+     *         profile's redColorantTag, greenColorantTag, and blueColorantTag.
      */
     public float[][] getMatrix() {
         float [][] m = new float[3][3]; // The matrix
@@ -114,6 +141,11 @@
         return m;
     }
 
+    /**
+     * Gets the media white point.
+     * 
+     * @return the media white point.
+     */
     @Override
     public float[] getMediaWhitePoint() {
         return super.getMediaWhitePoint();
diff --git a/awt/java/awt/color/ProfileDataException.java b/awt/java/awt/color/ProfileDataException.java
index ca169fe..335f314 100644
--- a/awt/java/awt/color/ProfileDataException.java
+++ b/awt/java/awt/color/ProfileDataException.java
@@ -21,18 +21,23 @@
 package java.awt.color;
 
 /**
- * The ProfileDataException class represents an error which occurs 
- * while accessing or processing an ICC_Profile object.
+ * The ProfileDataException class represents an error which occurs while
+ * accessing or processing an ICC_Profile object.
+ * 
+ * @since Android 1.0
  */
 public class ProfileDataException extends RuntimeException {
     
-    /** The Constant serialVersionUID. */
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = 7286140888240322498L;
 
     /**
      * Instantiates a new profile data exception with detailed message.
      * 
-     * @param s the detailed message.
+     * @param s
+     *            the detailed message of the exception.
      */
     public ProfileDataException(String s) {
         super(s);
diff --git a/awt/java/awt/color/package.html b/awt/java/awt/color/package.html
new file mode 100644
index 0000000..609d963
--- /dev/null
+++ b/awt/java/awt/color/package.html
@@ -0,0 +1,8 @@
+<html>
+  <body>
+    <p>
+      This package contains classes representing color spaces and profiles based on the International Color Consortium (ICC) Profile Format Specification. 
+    </p>
+    @since Android 1.0
+  </body>
+</html>
diff --git a/awt/java/awt/event/AWTEventListener.java b/awt/java/awt/event/AWTEventListener.java
index f621c9b..76293b3 100644
--- a/awt/java/awt/event/AWTEventListener.java
+++ b/awt/java/awt/event/AWTEventListener.java
@@ -23,6 +23,12 @@
 import java.awt.AWTEvent;
 import java.util.EventListener;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface AWTEventListener extends EventListener {
 
     public void eventDispatched(AWTEvent event);
diff --git a/awt/java/awt/event/AWTEventListenerProxy.java b/awt/java/awt/event/AWTEventListenerProxy.java
index 5ee5e59..3edc41f3 100644
--- a/awt/java/awt/event/AWTEventListenerProxy.java
+++ b/awt/java/awt/event/AWTEventListenerProxy.java
@@ -26,6 +26,12 @@
 
 import org.apache.harmony.awt.internal.nls.Messages;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public class AWTEventListenerProxy extends EventListenerProxy implements AWTEventListener {
 
     private AWTEventListener listener;
diff --git a/awt/java/awt/event/ActionEvent.java b/awt/java/awt/event/ActionEvent.java
index c32fc4b..e882e0d 100644
--- a/awt/java/awt/event/ActionEvent.java
+++ b/awt/java/awt/event/ActionEvent.java
@@ -22,6 +22,12 @@
 
 import java.awt.AWTEvent;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public class ActionEvent extends AWTEvent {
 
     private static final long serialVersionUID = -7671078796273832149L;
diff --git a/awt/java/awt/event/ActionListener.java b/awt/java/awt/event/ActionListener.java
index 473d2b6..a6eee7a 100644
--- a/awt/java/awt/event/ActionListener.java
+++ b/awt/java/awt/event/ActionListener.java
@@ -22,6 +22,12 @@
 
 import java.util.EventListener;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface ActionListener extends EventListener {
 
     public void actionPerformed(ActionEvent e);
diff --git a/awt/java/awt/event/AdjustmentEvent.java b/awt/java/awt/event/AdjustmentEvent.java
index a2b11a8..be2d6c4 100644
--- a/awt/java/awt/event/AdjustmentEvent.java
+++ b/awt/java/awt/event/AdjustmentEvent.java
@@ -23,6 +23,12 @@
 import java.awt.AWTEvent;
 import java.awt.Adjustable;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public class AdjustmentEvent extends AWTEvent {
 
     private static final long serialVersionUID = 5700290645205279921L;
diff --git a/awt/java/awt/event/AdjustmentListener.java b/awt/java/awt/event/AdjustmentListener.java
index ef7c378..5f6a724 100644
--- a/awt/java/awt/event/AdjustmentListener.java
+++ b/awt/java/awt/event/AdjustmentListener.java
@@ -22,6 +22,12 @@
 
 import java.util.EventListener;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface AdjustmentListener extends EventListener {
 
     public void adjustmentValueChanged(AdjustmentEvent e);
diff --git a/awt/java/awt/event/ComponentAdapter.java b/awt/java/awt/event/ComponentAdapter.java
index 4f0bd90..c42235f 100644
--- a/awt/java/awt/event/ComponentAdapter.java
+++ b/awt/java/awt/event/ComponentAdapter.java
@@ -20,6 +20,12 @@
  */
 package java.awt.event;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public abstract class ComponentAdapter implements ComponentListener {
 
     public ComponentAdapter() {
diff --git a/awt/java/awt/event/ComponentEvent.java b/awt/java/awt/event/ComponentEvent.java
index d0bca54..760d3ab 100644
--- a/awt/java/awt/event/ComponentEvent.java
+++ b/awt/java/awt/event/ComponentEvent.java
@@ -23,6 +23,12 @@
 import java.awt.AWTEvent;
 import java.awt.Component;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public class ComponentEvent extends AWTEvent {
 
     private static final long serialVersionUID = 8101406823902992965L;
diff --git a/awt/java/awt/event/ComponentListener.java b/awt/java/awt/event/ComponentListener.java
index 147e9e0..a5adba2 100644
--- a/awt/java/awt/event/ComponentListener.java
+++ b/awt/java/awt/event/ComponentListener.java
@@ -22,6 +22,12 @@
 
 import java.util.EventListener;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface ComponentListener extends EventListener {
 
     public void componentHidden(ComponentEvent e);
diff --git a/awt/java/awt/event/ContainerAdapter.java b/awt/java/awt/event/ContainerAdapter.java
index 12dc3de..44983c7 100644
--- a/awt/java/awt/event/ContainerAdapter.java
+++ b/awt/java/awt/event/ContainerAdapter.java
@@ -20,6 +20,12 @@
  */
 package java.awt.event;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public abstract class ContainerAdapter implements ContainerListener {
 
     public ContainerAdapter() {
diff --git a/awt/java/awt/event/ContainerEvent.java b/awt/java/awt/event/ContainerEvent.java
index 1a1055c..372c9e4 100644
--- a/awt/java/awt/event/ContainerEvent.java
+++ b/awt/java/awt/event/ContainerEvent.java
@@ -23,6 +23,12 @@
 import java.awt.Component;
 //???AWT: import java.awt.Container;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public class ContainerEvent extends ComponentEvent {
 
     private static final long serialVersionUID = -4114942250539772041L;
diff --git a/awt/java/awt/event/ContainerListener.java b/awt/java/awt/event/ContainerListener.java
index bf47664..517859e 100644
--- a/awt/java/awt/event/ContainerListener.java
+++ b/awt/java/awt/event/ContainerListener.java
@@ -22,6 +22,12 @@
 
 import java.util.EventListener;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface ContainerListener extends EventListener {
 
     public void componentAdded(ContainerEvent e);
diff --git a/awt/java/awt/event/FocusAdapter.java b/awt/java/awt/event/FocusAdapter.java
index 3489e11..3a3e37f 100644
--- a/awt/java/awt/event/FocusAdapter.java
+++ b/awt/java/awt/event/FocusAdapter.java
@@ -20,6 +20,12 @@
  */
 package java.awt.event;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public abstract class FocusAdapter implements FocusListener {
 
     public FocusAdapter() {
diff --git a/awt/java/awt/event/FocusEvent.java b/awt/java/awt/event/FocusEvent.java
index 1db5263..4a18689 100644
--- a/awt/java/awt/event/FocusEvent.java
+++ b/awt/java/awt/event/FocusEvent.java
@@ -22,6 +22,12 @@
 
 import java.awt.Component;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public class FocusEvent extends ComponentEvent {
 
     private static final long serialVersionUID = 523753786457416396L;
diff --git a/awt/java/awt/event/FocusListener.java b/awt/java/awt/event/FocusListener.java
index ee98d90..6bbbd00 100644
--- a/awt/java/awt/event/FocusListener.java
+++ b/awt/java/awt/event/FocusListener.java
@@ -22,6 +22,12 @@
 
 import java.util.EventListener;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface FocusListener extends EventListener {
 
     public void focusGained(FocusEvent e);
diff --git a/awt/java/awt/event/HierarchyBoundsAdapter.java b/awt/java/awt/event/HierarchyBoundsAdapter.java
index 24e3d9d..bbfe8ff 100644
--- a/awt/java/awt/event/HierarchyBoundsAdapter.java
+++ b/awt/java/awt/event/HierarchyBoundsAdapter.java
@@ -20,6 +20,12 @@
  */
 package java.awt.event;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public abstract class HierarchyBoundsAdapter implements HierarchyBoundsListener {
 
     public HierarchyBoundsAdapter() {
diff --git a/awt/java/awt/event/HierarchyBoundsListener.java b/awt/java/awt/event/HierarchyBoundsListener.java
index 4288f52..3e8f2e7 100644
--- a/awt/java/awt/event/HierarchyBoundsListener.java
+++ b/awt/java/awt/event/HierarchyBoundsListener.java
@@ -22,6 +22,12 @@
 
 import java.util.EventListener;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface HierarchyBoundsListener extends EventListener {
 
     public void ancestorMoved(HierarchyEvent e);
diff --git a/awt/java/awt/event/HierarchyEvent.java b/awt/java/awt/event/HierarchyEvent.java
index 1881667..c1d22f4 100644
--- a/awt/java/awt/event/HierarchyEvent.java
+++ b/awt/java/awt/event/HierarchyEvent.java
@@ -24,6 +24,12 @@
 import java.awt.Component;
 //???AWT: import java.awt.Container;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public class HierarchyEvent extends AWTEvent {
 
     private static final long serialVersionUID = -5337576970038043990L;
diff --git a/awt/java/awt/event/HierarchyListener.java b/awt/java/awt/event/HierarchyListener.java
index e01ba11..ff3d9bc 100644
--- a/awt/java/awt/event/HierarchyListener.java
+++ b/awt/java/awt/event/HierarchyListener.java
@@ -22,6 +22,12 @@
 
 import java.util.EventListener;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface HierarchyListener extends EventListener {
 
     public void hierarchyChanged(HierarchyEvent e);
diff --git a/awt/java/awt/event/InputEvent.java b/awt/java/awt/event/InputEvent.java
index c98382d..343b7a3 100644
--- a/awt/java/awt/event/InputEvent.java
+++ b/awt/java/awt/event/InputEvent.java
@@ -22,6 +22,12 @@
 
 import java.awt.Component;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public abstract class InputEvent extends ComponentEvent {
 
     private static final long serialVersionUID = -2482525981698309786L;
diff --git a/awt/java/awt/event/InputMethodEvent.java b/awt/java/awt/event/InputMethodEvent.java
index a5cac4e..be001a5 100644
--- a/awt/java/awt/event/InputMethodEvent.java
+++ b/awt/java/awt/event/InputMethodEvent.java
@@ -27,6 +27,12 @@
 
 import org.apache.harmony.awt.internal.nls.Messages;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public class InputMethodEvent extends AWTEvent {
 
     private static final long serialVersionUID = 4727190874778922661L;
diff --git a/awt/java/awt/event/InputMethodListener.java b/awt/java/awt/event/InputMethodListener.java
index 0ab6918..85eaa7e 100644
--- a/awt/java/awt/event/InputMethodListener.java
+++ b/awt/java/awt/event/InputMethodListener.java
@@ -22,6 +22,12 @@
 
 import java.util.EventListener;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface InputMethodListener extends EventListener {
 
     public void caretPositionChanged(InputMethodEvent e);
diff --git a/awt/java/awt/event/InvocationEvent.java b/awt/java/awt/event/InvocationEvent.java
index 59346ed..58e3b72 100644
--- a/awt/java/awt/event/InvocationEvent.java
+++ b/awt/java/awt/event/InvocationEvent.java
@@ -25,6 +25,12 @@
 
 import org.apache.harmony.awt.internal.nls.Messages;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public class InvocationEvent extends AWTEvent implements ActiveEvent {
 
     private static final long serialVersionUID = 436056344909459450L;
diff --git a/awt/java/awt/event/ItemEvent.java b/awt/java/awt/event/ItemEvent.java
index 842da14..09908f2 100644
--- a/awt/java/awt/event/ItemEvent.java
+++ b/awt/java/awt/event/ItemEvent.java
@@ -23,6 +23,12 @@
 import java.awt.AWTEvent;
 import java.awt.ItemSelectable;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public class ItemEvent extends AWTEvent {
 
     private static final long serialVersionUID = -608708132447206933L;
diff --git a/awt/java/awt/event/ItemListener.java b/awt/java/awt/event/ItemListener.java
index 33633be..8dec673 100644
--- a/awt/java/awt/event/ItemListener.java
+++ b/awt/java/awt/event/ItemListener.java
@@ -22,6 +22,12 @@
 
 import java.util.EventListener;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface ItemListener extends EventListener {
 
     public void itemStateChanged(ItemEvent e);
diff --git a/awt/java/awt/event/KeyAdapter.java b/awt/java/awt/event/KeyAdapter.java
index 423b5c9..a96cca8 100644
--- a/awt/java/awt/event/KeyAdapter.java
+++ b/awt/java/awt/event/KeyAdapter.java
@@ -20,6 +20,12 @@
  */
 package java.awt.event;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public abstract class KeyAdapter implements KeyListener {
 
     public KeyAdapter() {
diff --git a/awt/java/awt/event/KeyEvent.java b/awt/java/awt/event/KeyEvent.java
index 056c64c..8627f70 100644
--- a/awt/java/awt/event/KeyEvent.java
+++ b/awt/java/awt/event/KeyEvent.java
@@ -27,6 +27,12 @@
 
 import org.apache.harmony.awt.internal.nls.Messages;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public class KeyEvent extends InputEvent {
 
     private static final long serialVersionUID = -2352130953028126954L;
diff --git a/awt/java/awt/event/KeyListener.java b/awt/java/awt/event/KeyListener.java
index f20fc90..ec144df 100644
--- a/awt/java/awt/event/KeyListener.java
+++ b/awt/java/awt/event/KeyListener.java
@@ -22,6 +22,12 @@
 
 import java.util.EventListener;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface KeyListener extends EventListener {
 
     public void keyPressed(KeyEvent e);
diff --git a/awt/java/awt/event/MouseAdapter.java b/awt/java/awt/event/MouseAdapter.java
index 4973956..dc19173 100644
--- a/awt/java/awt/event/MouseAdapter.java
+++ b/awt/java/awt/event/MouseAdapter.java
@@ -20,6 +20,12 @@
  */
 package java.awt.event;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public abstract class MouseAdapter implements MouseListener {
 
     public MouseAdapter() {
diff --git a/awt/java/awt/event/MouseEvent.java b/awt/java/awt/event/MouseEvent.java
index 0b776f9..2b1fa8b 100644
--- a/awt/java/awt/event/MouseEvent.java
+++ b/awt/java/awt/event/MouseEvent.java
@@ -26,6 +26,12 @@
 
 import org.apache.harmony.awt.internal.nls.Messages;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public class MouseEvent extends InputEvent {
 
     private static final long serialVersionUID = -991214153494842848L;
diff --git a/awt/java/awt/event/MouseListener.java b/awt/java/awt/event/MouseListener.java
index 5d32b0f..95879b9 100644
--- a/awt/java/awt/event/MouseListener.java
+++ b/awt/java/awt/event/MouseListener.java
@@ -22,6 +22,12 @@
 
 import java.util.EventListener;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface MouseListener extends EventListener {
 
     public void mouseClicked(MouseEvent e);
diff --git a/awt/java/awt/event/MouseMotionAdapter.java b/awt/java/awt/event/MouseMotionAdapter.java
index a4bebcc..1ecd0d5 100644
--- a/awt/java/awt/event/MouseMotionAdapter.java
+++ b/awt/java/awt/event/MouseMotionAdapter.java
@@ -20,6 +20,12 @@
  */
 package java.awt.event;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public abstract class MouseMotionAdapter implements MouseMotionListener {
 
     public MouseMotionAdapter() {
diff --git a/awt/java/awt/event/MouseMotionListener.java b/awt/java/awt/event/MouseMotionListener.java
index a5c11da..e1313c3 100644
--- a/awt/java/awt/event/MouseMotionListener.java
+++ b/awt/java/awt/event/MouseMotionListener.java
@@ -22,6 +22,12 @@
 
 import java.util.EventListener;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface MouseMotionListener extends EventListener {
 
     public void mouseDragged(MouseEvent e);
diff --git a/awt/java/awt/event/MouseWheelEvent.java b/awt/java/awt/event/MouseWheelEvent.java
index d3ac9d8..a3ed424 100644
--- a/awt/java/awt/event/MouseWheelEvent.java
+++ b/awt/java/awt/event/MouseWheelEvent.java
@@ -22,6 +22,12 @@
 
 import java.awt.Component;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public class MouseWheelEvent extends MouseEvent {
 
     private static final long serialVersionUID = -9187413581993563929L;
diff --git a/awt/java/awt/event/MouseWheelListener.java b/awt/java/awt/event/MouseWheelListener.java
index 8ca1c8b..2d6a982 100644
--- a/awt/java/awt/event/MouseWheelListener.java
+++ b/awt/java/awt/event/MouseWheelListener.java
@@ -22,6 +22,12 @@
 
 import java.util.EventListener;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface MouseWheelListener extends EventListener {
 
     public void mouseWheelMoved(MouseWheelEvent e);
diff --git a/awt/java/awt/event/PaintEvent.java b/awt/java/awt/event/PaintEvent.java
index d0573e1..22ac090 100644
--- a/awt/java/awt/event/PaintEvent.java
+++ b/awt/java/awt/event/PaintEvent.java
@@ -23,6 +23,12 @@
 import java.awt.Component;
 import java.awt.Rectangle;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public class PaintEvent extends ComponentEvent {
 
     private static final long serialVersionUID = 1267492026433337593L;
diff --git a/awt/java/awt/event/TextEvent.java b/awt/java/awt/event/TextEvent.java
index e2bfd96..2a690ad 100644
--- a/awt/java/awt/event/TextEvent.java
+++ b/awt/java/awt/event/TextEvent.java
@@ -22,6 +22,12 @@
 
 import java.awt.AWTEvent;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public class TextEvent extends AWTEvent {
 
     private static final long serialVersionUID = 6269902291250941179L;
diff --git a/awt/java/awt/event/TextListener.java b/awt/java/awt/event/TextListener.java
index 6c5a671..05757c4 100644
--- a/awt/java/awt/event/TextListener.java
+++ b/awt/java/awt/event/TextListener.java
@@ -22,6 +22,12 @@
 
 import java.util.EventListener;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface TextListener extends EventListener {
 
     public void textValueChanged(TextEvent e);
diff --git a/awt/java/awt/event/WindowAdapter.java b/awt/java/awt/event/WindowAdapter.java
index 9d4b377..970aa8d 100644
--- a/awt/java/awt/event/WindowAdapter.java
+++ b/awt/java/awt/event/WindowAdapter.java
@@ -20,6 +20,12 @@
  */
 package java.awt.event;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public abstract class WindowAdapter implements WindowListener, WindowStateListener, WindowFocusListener {
 
     public WindowAdapter() {
diff --git a/awt/java/awt/event/WindowEvent.java b/awt/java/awt/event/WindowEvent.java
index 65a30e4..474d2ac 100644
--- a/awt/java/awt/event/WindowEvent.java
+++ b/awt/java/awt/event/WindowEvent.java
@@ -25,6 +25,12 @@
 //import java.awt.Window;
 //import java.awt.Frame;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public class WindowEvent extends ComponentEvent {
 
     private static final long serialVersionUID = -1567959133147912127L;
diff --git a/awt/java/awt/event/WindowFocusListener.java b/awt/java/awt/event/WindowFocusListener.java
index e0200f2..528459f 100644
--- a/awt/java/awt/event/WindowFocusListener.java
+++ b/awt/java/awt/event/WindowFocusListener.java
@@ -22,6 +22,12 @@
 
 import java.util.EventListener;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface WindowFocusListener extends EventListener {
 
     public void windowGainedFocus(WindowEvent e);
diff --git a/awt/java/awt/event/WindowListener.java b/awt/java/awt/event/WindowListener.java
index 20a2b08..31bd547 100644
--- a/awt/java/awt/event/WindowListener.java
+++ b/awt/java/awt/event/WindowListener.java
@@ -22,6 +22,12 @@
 
 import java.util.EventListener;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface WindowListener extends EventListener {
 
     public void windowActivated(WindowEvent e);
diff --git a/awt/java/awt/event/WindowStateListener.java b/awt/java/awt/event/WindowStateListener.java
index 12dbc20..ba14d9e 100644
--- a/awt/java/awt/event/WindowStateListener.java
+++ b/awt/java/awt/event/WindowStateListener.java
@@ -22,6 +22,12 @@
 
 import java.util.EventListener;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface WindowStateListener extends EventListener {
 
     public void windowStateChanged(WindowEvent e);
diff --git a/awt/java/awt/font/FontRenderContext.java b/awt/java/awt/font/FontRenderContext.java
index 766300d..d7de00f 100644
--- a/awt/java/awt/font/FontRenderContext.java
+++ b/awt/java/awt/font/FontRenderContext.java
@@ -23,23 +23,30 @@
 import java.awt.geom.AffineTransform;
 
 /**
- * The FontRenderContext class contains the information 
- * about text measurement. Anti-aliasing and fractional-metrics
- * modes are defined by an application and affect the size of
- * a character.
+ * The FontRenderContext class contains the information about text measurement.
+ * Anti-aliasing and fractional-metrics modes are defined by an application and
+ * affect the size of a character.
+ * 
+ * @since Android 1.0
  */
 public class FontRenderContext {
 
     // Affine transform of this mode
-    /** The transform. */
+    /**
+     * The transform.
+     */
     private AffineTransform transform;
 
     // Is the anti-aliased mode used
-    /** The anti aliased. */
+    /**
+     * The anti aliased.
+     */
     private boolean fAntiAliased;
 
     // Is the fractional metrics used
-    /** The fractional metrics. */
+    /**
+     * The fractional metrics.
+     */
     private boolean fFractionalMetrics;
 
 
@@ -47,9 +54,12 @@
      * Instantiates a new FontRenderContext object with the specified
      * AffineTransform, anti-aliasing and fractional metrics flags.
      * 
-     * @param trans the AffineTransform.
-     * @param antiAliased the anti-aliasing flag.
-     * @param usesFractionalMetrics the fractional metrics flag.
+     * @param trans
+     *            the AffineTransform.
+     * @param antiAliased
+     *            the anti-aliasing flag.
+     * @param usesFractionalMetrics
+     *            the fractional metrics flag.
      */
     public FontRenderContext(AffineTransform trans, boolean antiAliased, 
             boolean usesFractionalMetrics) {
@@ -67,12 +77,12 @@
     }
 
     /**
-     * Compares the specified Object with current FontRenderContext object. 
+     * Compares the specified Object with current FontRenderContext object.
      * 
-     * @param obj the Object to be compared.
-     * 
+     * @param obj
+     *            the Object to be compared.
      * @return true, if the specified Object is equal to current
-     * FontRenderContext object.
+     *         FontRenderContext object.
      */
     @Override
     public boolean equals(Object obj) {
@@ -92,11 +102,11 @@
     }
 
     /**
-     * Gets the transform which is used for scaling typographical points 
-     * to pixels in this FontRenderContext.
+     * Gets the transform which is used for scaling typographical points to
+     * pixels in this FontRenderContext.
      * 
-     * @return the AffineTransform which is used for scaling typographical 
-     * points to pixels in this FontRenderContext.
+     * @return the AffineTransform which is used for scaling typographical
+     *         points to pixels in this FontRenderContext.
      */
     public AffineTransform getTransform() {
         if (transform != null){
@@ -106,13 +116,13 @@
     }
 
     /**
-     * Compares the specified FontRenderContext object with current 
+     * Compares the specified FontRenderContext object with current
      * FontRenderContext.
      * 
-     * @param frc the FontRenderContext object to be compared.
-     * 
-     * @return true, if the specified FontRenderContext object is
-     * equal to current FontRenderContext.
+     * @param frc
+     *            the FontRenderContext object to be compared.
+     * @return true, if the specified FontRenderContext object is equal to
+     *         current FontRenderContext.
      */
     public boolean equals(FontRenderContext frc) {
         if (this == frc){
@@ -132,11 +142,11 @@
     }
 
     /**
-     * Returns true if the text fractional metrics are used in 
-     * this FontRenderContext.
+     * Returns true if the text fractional metrics are used in this
+     * FontRenderContext.
      * 
-     * @return true, if the text fractional metrics are used in 
-     * this FontRenderContext, false otherwise.
+     * @return true, if the text fractional metrics are used in this
+     *         FontRenderContext, false otherwise.
      */
     public boolean usesFractionalMetrics() {
         return this.fFractionalMetrics;
@@ -146,7 +156,7 @@
      * Returns true if anti-aliasing is used in this FontRenderContext.
      * 
      * @return true, if is anti-aliasing is used in this FontRenderContext,
-     * false otherwise.
+     *         false otherwise.
      */
     public boolean isAntiAliased() {
         return this.fAntiAliased;
diff --git a/awt/java/awt/font/GlyphJustificationInfo.java b/awt/java/awt/font/GlyphJustificationInfo.java
index 4c3e02e..b03de0a 100644
--- a/awt/java/awt/font/GlyphJustificationInfo.java
+++ b/awt/java/awt/font/GlyphJustificationInfo.java
@@ -18,124 +18,134 @@
  * @author Ilya S. Okomin
  * @version $Revision$
  */
+
 package java.awt.font;
 
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The GlyphJustificationInfo class provides information about 
- * the glyph's justification properties. There are four justification 
- * properties: weight, priority, absorb, and limit.
+ * The GlyphJustificationInfo class provides information about the glyph's
+ * justification properties. There are four justification properties: weight,
+ * priority, absorb, and limit.
  * <p>
- * There are two sets of metrics: growing and shrinking. 
- * Growing metrics are used when the glyphs are to be spread apart 
- * to fit a larger width. Shrinking metrics are used when the glyphs 
- * are to be moved together to fit a smaller width.
+ * There are two sets of metrics: growing and shrinking. Growing metrics are
+ * used when the glyphs are to be spread apart to fit a larger width. Shrinking
+ * metrics are used when the glyphs are to be moved together to fit a smaller
+ * width.
+ * </p>
+ * 
+ * @since Android 1.0
  */
 public final class GlyphJustificationInfo {
 
-    /** 
-     * The Constant PRIORITY_KASHIDA indicates the highest 
-     * justification priority.
+    /**
+     * The Constant PRIORITY_KASHIDA indicates the highest justification
+     * priority.
      */
     public static final int PRIORITY_KASHIDA = 0;
 
     /**
-     * The Constant PRIORITY_WHITESPACE indicates the second highest 
-     * justification priority. 
+     * The Constant PRIORITY_WHITESPACE indicates the second highest
+     * justification priority.
      */
     public static final int PRIORITY_WHITESPACE = 1;
 
-    /** 
-     * The Constant PRIORITY_INTERCHAR indicates the second lowest 
-     * justification priority. 
+    /**
+     * The Constant PRIORITY_INTERCHAR indicates the second lowest justification
+     * priority.
      */
     public static final int PRIORITY_INTERCHAR = 2;
 
     /**
-     * The Constant PRIORITY_NONE indicates the lowest justification 
-     * priority.
+     * The Constant PRIORITY_NONE indicates the lowest justification priority.
      */
     public static final int PRIORITY_NONE = 3;
 
-    /** 
-     * The grow absorb flag indicates if this glyph absorbs all extra 
-     * space at this and lower priority levels when it grows.
+    /**
+     * The grow absorb flag indicates if this glyph absorbs all extra space at
+     * this and lower priority levels when it grows.
      */
     public final boolean growAbsorb;
 
-    /** 
-     * The grow left limit value represents the maximum value by which 
-     * the left side of this glyph grows. 
+    /**
+     * The grow left limit value represents the maximum value by which the left
+     * side of this glyph grows.
      */
     public final float growLeftLimit;
 
-    /** 
-     * The grow right limit value repesents the maximum value by which 
-     * the right side of this glyph grows.
+    /**
+     * The grow right limit value repesents the maximum value by which the right
+     * side of this glyph grows.
      */
     public final float growRightLimit;
 
-    /** 
-     * The grow priority value represents the priority level of this 
-     * glyph as it is growing. 
+    /**
+     * The grow priority value represents the priority level of this glyph as it
+     * is growing.
      */
     public final int growPriority;
 
-    /** 
-     * The shrink absorb fleg indicates this glyph absorbs all remaining 
-     * shrinkage at this and lower priority levels as it shrinks. 
+    /**
+     * The shrink absorb fleg indicates this glyph absorbs all remaining
+     * shrinkage at this and lower priority levels as it shrinks.
      */
     public final boolean shrinkAbsorb;
 
-    /** 
-     * The shrink left limit value represents the maximum value by which 
-     * the left side of this glyph shrinks. 
+    /**
+     * The shrink left limit value represents the maximum value by which the
+     * left side of this glyph shrinks.
      */
     public final float shrinkLeftLimit;
 
-    /** 
-     * The shrink right limit value represents the maximum value by which 
-     * the right side of this glyph shrinks. 
+    /**
+     * The shrink right limit value represents the maximum value by which the
+     * right side of this glyph shrinks.
      */
     public final float shrinkRightLimit;
 
     /**
-     * The shrink priority represents the glyth's priority level 
-     * as it is shrinking.
+     * The shrink priority represents the glyth's priority level as it is
+     * shrinking.
      */
     public final int shrinkPriority;
 
-    /** 
-     * The weight of the glyph. 
+    /**
+     * The weight of the glyph.
      */
     public final float weight;
 
     /**
-     * Instantiates a new GlyphJustificationInfo object which contains
-     * glyph's justification properties.
+     * Instantiates a new GlyphJustificationInfo object which contains glyph's
+     * justification properties.
      * 
-     * @param weight the weight of glyph.
-     * @param growAbsorb indicates if this glyph contais all space 
-     * at this priority and lower priority levels when it grows.
-     * @param growPriority indicates the priority level of this glyph 
-     * when it grows.
-     * @param growLeftLimit indicates the maximum value of which the 
-     * left side of this glyph can grow.
-     * @param growRightLimit the maximum value of which the right side of 
-     * this glyph can grow.
-     * @param shrinkAbsorb indicates if this glyph contains all remaining
-     * shrinkage at this and lower priority levels when it shrinks.
-     * @param shrinkPriority indicates the glyph's priority level when 
-     * it shrinks.
-     * @param shrinkLeftLimit indicates the maximum value of which 
-     * the left side of this glyph can shrink. 
-     * @param shrinkRightLimit indicates the maximum amount by which 
-     * the right side of this glyph can shrink.
+     * @param weight
+     *            the weight of glyph.
+     * @param growAbsorb
+     *            indicates if this glyph contais all space at this priority and
+     *            lower priority levels when it grows.
+     * @param growPriority
+     *            indicates the priority level of this glyph when it grows.
+     * @param growLeftLimit
+     *            indicates the maximum value of which the left side of this
+     *            glyph can grow.
+     * @param growRightLimit
+     *            the maximum value of which the right side of this glyph can
+     *            grow.
+     * @param shrinkAbsorb
+     *            indicates if this glyph contains all remaining shrinkage at
+     *            this and lower priority levels when it shrinks.
+     * @param shrinkPriority
+     *            indicates the glyph's priority level when it shrinks.
+     * @param shrinkLeftLimit
+     *            indicates the maximum value of which the left side of this
+     *            glyph can shrink.
+     * @param shrinkRightLimit
+     *            indicates the maximum amount by which the right side of this
+     *            glyph can shrink.
      */
     public GlyphJustificationInfo(float weight, boolean growAbsorb, int growPriority,
-            float growLeftLimit, float growRightLimit, boolean shrinkAbsorb,
-            int shrinkPriority, float shrinkLeftLimit, float shrinkRightLimit) {
+            float growLeftLimit, float growRightLimit, boolean shrinkAbsorb, int shrinkPriority,
+            float shrinkLeftLimit, float shrinkRightLimit) {
 
         if (weight < 0) {
             // awt.19C=weight must be a positive number
@@ -156,13 +166,15 @@
         this.growRightLimit = growRightLimit;
 
         if ((shrinkPriority < 0) || (shrinkPriority > PRIORITY_NONE)) {
-            // awt.19F=incorrect value for shrinkPriority, more than PRIORITY_NONE or less than PRIORITY_KASHIDA value
+            // awt.19F=incorrect value for shrinkPriority, more than
+            // PRIORITY_NONE or less than PRIORITY_KASHIDA value
             throw new IllegalArgumentException(Messages.getString("awt.19F")); //$NON-NLS-1$
         }
         this.shrinkPriority = shrinkPriority;
 
         if ((growPriority < 0) || (growPriority > PRIORITY_NONE)) {
-            // awt.200=incorrect value for growPriority, more than PRIORITY_NONE or less than PRIORITY_KASHIDA value
+            // awt.200=incorrect value for growPriority, more than PRIORITY_NONE
+            // or less than PRIORITY_KASHIDA value
             throw new IllegalArgumentException(Messages.getString("awt.200")); //$NON-NLS-1$
         }
         this.growPriority = growPriority;
diff --git a/awt/java/awt/font/GlyphMetrics.java b/awt/java/awt/font/GlyphMetrics.java
index d96ef18..2871722 100644
--- a/awt/java/awt/font/GlyphMetrics.java
+++ b/awt/java/awt/font/GlyphMetrics.java
@@ -18,82 +18,98 @@
  * @author Ilya S. Okomin
  * @version $Revision$
  */
+
 package java.awt.font;
 
 import java.awt.geom.Rectangle2D;
 
 /**
- * The GlyphMetrics class provides information about the size and shape 
- * of a single glyph. 
- * Each glyph has information to specify whether its baseline is horizontal 
- * or vertical as well as information on how it interacts with 
- * other characters in a text, given as one of the
- * following types: STANDARD, LIGATURE, COMBINING, or COMPONENT.
+ * The GlyphMetrics class provides information about the size and shape of a
+ * single glyph. Each glyph has information to specify whether its baseline is
+ * horizontal or vertical as well as information on how it interacts with other
+ * characters in a text, given as one of the following types: STANDARD,
+ * LIGATURE, COMBINING, or COMPONENT.
+ * 
+ * @since Android 1.0
  */
 public final class GlyphMetrics {
 
     // advance width of the glyph character cell
-    /** The advance x. */
+    /**
+     * The advance x.
+     */
     private float advanceX;
-    
+
     // advance height of the glyph character cell
-    /** The advance y. */
+    /**
+     * The advance y.
+     */
     private float advanceY;
 
     // flag if the glyph horizontal
-    /** The horizontal. */
+    /**
+     * The horizontal.
+     */
     private boolean horizontal;
 
-    // glyph type code 
-    /** The glyph type. */
+    // glyph type code
+    /**
+     * The glyph type.
+     */
     private byte glyphType;
-    
+
     // bounding box for outline of the glyph
-    /** The bounds. */
+    /**
+     * The bounds.
+     */
     private Rectangle2D.Float bounds;
 
-    /** 
-     * The Constant STANDARD indicates a glyph that represents a single 
-     * character. 
+    /**
+     * The Constant STANDARD indicates a glyph that represents a single
+     * character.
      */
     public static final byte STANDARD = 0;
 
-    /** 
-     * The Constant LIGATURE indicates a glyph that represents multiple 
-     * characters as a ligature. 
+    /**
+     * The Constant LIGATURE indicates a glyph that represents multiple
+     * characters as a ligature.
      */
     public static final byte LIGATURE = 1;
 
-    /** 
-     * The Constant COMBINING indicates a glyph which has no caret position 
+    /**
+     * The Constant COMBINING indicates a glyph which has no caret position
      * between glyphs (for example umlaut).
      */
     public static final byte COMBINING = 2;
 
-    /** 
-     * The Constant COMPONENT indicates a glyph with no corresponding character 
+    /**
+     * The Constant COMPONENT indicates a glyph with no corresponding character
      * in the backing store.
      */
     public static final byte COMPONENT = 3;
 
-    /** 
-     * The Constant WHITESPACE indicates a glyph without visual 
-     * representation. 
+    /**
+     * The Constant WHITESPACE indicates a glyph without visual representation.
      */
     public static final byte WHITESPACE = 4;
 
     /**
      * Instantiates a new GlyphMetrics object with the specified parameters.
      * 
-     * @param horizontal specifies if metrics are for a horizontal baseline 
-     * (true value), or a vertical baseline (false value).
-     * @param advanceX the X component of the glyph's advance.
-     * @param advanceY the Y component of the glyph's advance.
-     * @param bounds the glyph's bounds.
-     * @param glyphType the glyph's type.
+     * @param horizontal
+     *            specifies if metrics are for a horizontal baseline (true
+     *            value), or a vertical baseline (false value).
+     * @param advanceX
+     *            the X component of the glyph's advance.
+     * @param advanceY
+     *            the Y component of the glyph's advance.
+     * @param bounds
+     *            the glyph's bounds.
+     * @param glyphType
+     *            the glyph's type.
      */
-    public GlyphMetrics(boolean horizontal, float advanceX, float advanceY, 
-            Rectangle2D bounds, byte glyphType) {
+    public GlyphMetrics(boolean horizontal, float advanceX, float advanceY, Rectangle2D bounds,
+            byte glyphType) {
         this.horizontal = horizontal;
         this.advanceX = advanceX;
         this.advanceY = advanceY;
@@ -107,9 +123,12 @@
     /**
      * Instantiates a new horizontal GlyphMetrics with the specified parameters.
      * 
-     * @param advanceX the X component of the glyph's advance.
-     * @param bounds the glyph's bounds.
-     * @param glyphType the glyph's type.
+     * @param advanceX
+     *            the X component of the glyph's advance.
+     * @param bounds
+     *            the glyph's bounds.
+     * @param glyphType
+     *            the glyph's type.
      */
     public GlyphMetrics(float advanceX, Rectangle2D bounds, byte glyphType) {
         this.advanceX = advanceX;
@@ -129,7 +148,7 @@
      * @return glyph's bounds.
      */
     public Rectangle2D getBounds2D() {
-        return (Rectangle2D.Float) this.bounds.clone();
+        return (Rectangle2D.Float)this.bounds.clone();
     }
 
     /**
@@ -187,11 +206,11 @@
     }
 
     /**
-     * Gets the distance from the right (for horizontal) or 
-     * bottom (for vertical) of the glyph bounds to the advance.
+     * Gets the distance from the right (for horizontal) or bottom (for
+     * vertical) of the glyph bounds to the advance.
      * 
-     * @return the distance from the right (for horizontal) or 
-     * bottom (for vertical) of the glyph bounds to the advance.
+     * @return the distance from the right (for horizontal) or bottom (for
+     *         vertical) of the glyph bounds to the advance.
      */
     public float getRSB() {
         if (this.horizontal) {
@@ -201,11 +220,11 @@
     }
 
     /**
-     * Gets the distance from 0, 0 to the left (for horizontal) 
-     * or top (for vertical) of the glyph bounds.
+     * Gets the distance from 0, 0 to the left (for horizontal) or top (for
+     * vertical) of the glyph bounds.
      * 
-     * @return the distance from 0, 0 to the left (for horizontal) 
-     * or top (for vertical) of the glyph bounds.
+     * @return the distance from 0, 0 to the left (for horizontal) or top (for
+     *         vertical) of the glyph bounds.
      */
     public float getLSB() {
         if (this.horizontal) {
@@ -245,4 +264,3 @@
     }
 
 }
-
diff --git a/awt/java/awt/font/GlyphVector.java b/awt/java/awt/font/GlyphVector.java
index b3c9406..a72b774 100644
--- a/awt/java/awt/font/GlyphVector.java
+++ b/awt/java/awt/font/GlyphVector.java
@@ -18,6 +18,7 @@
  * @author Ilya S. Okomin
  * @version $Revision$
  */
+
 package java.awt.font;
 
 import java.awt.Font;
@@ -32,45 +33,47 @@
 import java.awt.geom.Rectangle2D;
 
 /**
- * The GlyphVector class contains a collection of glyphs with geometric 
- * information and each glyph's location. Each GlyphVector can be associated 
- * with only one Font. GlyphVector contains the following properties for 
- * each glyph:
+ * The GlyphVector class contains a collection of glyphs with geometric
+ * information and each glyph's location. Each GlyphVector can be associated
+ * with only one Font. GlyphVector contains the following properties for each
+ * glyph:
  * <ul>
  * <li>the glyph position;</li>
  * <li>the transform of the glyph;</li>
  * <li>the metrics of the glyph in the context of the GlyphVector.</li>
  * </ul>
+ * 
+ * @since Android 1.0
  */
 public abstract class GlyphVector implements Cloneable {
 
-    /** 
-     * The Constant FLAG_HAS_TRANSFORMS indicates that this GlyphVector 
-     * has per-glyph transforms.
+    /**
+     * The Constant FLAG_HAS_TRANSFORMS indicates that this GlyphVector has
+     * per-glyph transforms.
      */
     public static final int FLAG_HAS_TRANSFORMS = 1;
 
-    /** 
-     * The Constant FLAG_HAS_POSITION_ADJUSTMENTS indicates that 
-     * the GlyphVector has per-glyph position adjustments. 
+    /**
+     * The Constant FLAG_HAS_POSITION_ADJUSTMENTS indicates that the GlyphVector
+     * has per-glyph position adjustments.
      */
     public static final int FLAG_HAS_POSITION_ADJUSTMENTS = 2;
 
-    /** 
-     * The Constant FLAG_RUN_RTL indicates that this GlyphVector has a 
-     * right to left run direction.
+    /**
+     * The Constant FLAG_RUN_RTL indicates that this GlyphVector has a right to
+     * left run direction.
      */
     public static final int FLAG_RUN_RTL = 4;
 
-    /** 
-     * The Constant FLAG_COMPLEX_GLYPHS indicates that this GlyphVector 
-     * has a complex glyph to char mapping.
+    /**
+     * The Constant FLAG_COMPLEX_GLYPHS indicates that this GlyphVector has a
+     * complex glyph to char mapping.
      */
     public static final int FLAG_COMPLEX_GLYPHS = 8;
 
-    /** 
-     * The Constant FLAG_MASK indicates a mask for supported flags 
-     * from getLayoutFlags.
+    /**
+     * The Constant FLAG_MASK indicates a mask for supported flags from
+     * getLayoutFlags.
      */
     public static final int FLAG_MASK = 15; // (|) mask of other flags
 
@@ -81,17 +84,19 @@
     }
 
     /**
-     * Gets the pixel bounds of the GlyphVector when rendered
-     * at the specified location with the specified FontRenderContext.
+     * Gets the pixel bounds of the GlyphVector when rendered at the specified
+     * location with the specified FontRenderContext.
      * 
-     * @param frc the FontRenderContext.
-     * @param x the X coordinate of the GlyphVector's location.
-     * @param y the Y coordinate of the GlyphVector's location.
-     * 
+     * @param frc
+     *            the FontRenderContext.
+     * @param x
+     *            the X coordinate of the GlyphVector's location.
+     * @param y
+     *            the Y coordinate of the GlyphVector's location.
      * @return the pixel bounds
      */
     public Rectangle getPixelBounds(FontRenderContext frc, float x, float y) {
-        // default implementation - integer Rectangle, that encloses visual 
+        // default implementation - integer Rectangle, that encloses visual
         // bounds rectangle
         Rectangle2D visualRect = getVisualBounds();
 
@@ -104,19 +109,21 @@
     }
 
     /**
-     * Gets the pixel bounds of the glyph with the specified index in
-     * this GlyphVector which is rendered with the specified
-     * FontRenderContext at the specified location.
+     * Gets the pixel bounds of the glyph with the specified index in this
+     * GlyphVector which is rendered with the specified FontRenderContext at the
+     * specified location.
      * 
-     * @param index the glyph index in this GlyphVector.
-     * @param frc the FontRenderContext.
-     * @param x the X coordinate of the GlyphVector's location.
-     * @param y the Y coordinate of the GlyphVector's location.
-     * 
+     * @param index
+     *            the glyph index in this GlyphVector.
+     * @param frc
+     *            the FontRenderContext.
+     * @param x
+     *            the X coordinate of the GlyphVector's location.
+     * @param y
+     *            the Y coordinate of the GlyphVector's location.
      * @return a Rectangle bounds.
      */
-    public Rectangle getGlyphPixelBounds(int index, FontRenderContext frc, 
-            float x, float y) {
+    public Rectangle getGlyphPixelBounds(int index, FontRenderContext frc, float x, float y) {
         Rectangle2D visualRect = getGlyphVisualBounds(index).getBounds2D();
 
         int minX = (int)Math.floor(visualRect.getMinX() + x);
@@ -128,14 +135,14 @@
     }
 
     /**
-     * Gets the visual bounds of the GlyphVector. 
+     * Gets the visual bounds of the GlyphVector.
      * 
      * @return the visual bounds of the GlyphVector.
      */
     public abstract Rectangle2D getVisualBounds();
 
     /**
-     * Gets the logical bounds of the GlyphVector. 
+     * Gets the logical bounds of the GlyphVector.
      * 
      * @return the logical bounds of the GlyphVector.
      */
@@ -144,36 +151,38 @@
     /**
      * Sets the position of the specified glyph in this GlyphVector.
      * 
-     * @param glyphIndex the glyph index in this GlyphVector.
-     * @param newPos the new position of the glyph at the specified glyphIndex.
+     * @param glyphIndex
+     *            the glyph index in this GlyphVector.
+     * @param newPos
+     *            the new position of the glyph at the specified glyphIndex.
      */
     public abstract void setGlyphPosition(int glyphIndex, Point2D newPos);
 
     /**
      * Gets the position of the specified glyph in this GlyphVector.
      * 
-     * @param glyphIndex the glyph index in this GlyphVector.
-     * 
+     * @param glyphIndex
+     *            the glyph index in this GlyphVector.
      * @return the position of the specified glyph in this GlyphVector.
      */
     public abstract Point2D getGlyphPosition(int glyphIndex);
 
     /**
-     * Sets the affine transform to a glyph with the specified index
-     * in this GlyphVector.
+     * Sets the affine transform to a glyph with the specified index in this
+     * GlyphVector.
      * 
-     * @param glyphIndex the glyth index in this GlyphVector.
-     * @param trans the AffineTransform to be assigned to the
-     * specified glyph.
+     * @param glyphIndex
+     *            the glyth index in this GlyphVector.
+     * @param trans
+     *            the AffineTransform to be assigned to the specified glyph.
      */
-    public abstract void setGlyphTransform(int glyphIndex, 
-            AffineTransform trans);
+    public abstract void setGlyphTransform(int glyphIndex, AffineTransform trans);
 
     /**
      * Gets the transform of the specified glyph in this GlyphVector.
      * 
-     * @param glyphIndex the glyph index in this GlyphVector.
-     * 
+     * @param glyphIndex
+     *            the glyph index in this GlyphVector.
      * @return the new transform of the glyph.
      */
     public abstract AffineTransform getGlyphTransform(int glyphIndex);
@@ -181,34 +190,32 @@
     /**
      * Compares this GlyphVector with the specified GlyphVector objects.
      * 
-     * @param glyphVector the GlyphVector object to be compared.
-     * 
+     * @param glyphVector
+     *            the GlyphVector object to be compared.
      * @return true, if this GlyphVector is equal to the specified GlyphVector
-     * object, false otherwise.
+     *         object, false otherwise.
      */
     public abstract boolean equals(GlyphVector glyphVector);
 
     /**
-     * Gets the metrics of the glyph with the specified index
-     * in this GlyphVector.
+     * Gets the metrics of the glyph with the specified index in this
+     * GlyphVector.
      * 
-     * @param glyphIndex index in this GlyphVector.
-     * 
-     * @return the metrics of the glyph with the specified index
-     * in this GlyphVector.
+     * @param glyphIndex
+     *            index in this GlyphVector.
+     * @return the metrics of the glyph with the specified index in this
+     *         GlyphVector.
      */
     public abstract GlyphMetrics getGlyphMetrics(int glyphIndex);
 
     /**
-     * Gets the justification information of the glyph 
-     * whose index is specified.
+     * Gets the justification information of the glyph whose index is specified.
      * 
-     * @param glyphIndex the glyph index.
-     * 
-     * @return the GlyphJustificationInfo for the specified glyph. 
+     * @param glyphIndex
+     *            the glyph index.
+     * @return the GlyphJustificationInfo for the specified glyph.
      */
-    public abstract GlyphJustificationInfo getGlyphJustificationInfo(
-            int glyphIndex);
+    public abstract GlyphJustificationInfo getGlyphJustificationInfo(int glyphIndex);
 
     /**
      * Gets the FontRenderContext of this GlyphVector.
@@ -218,18 +225,20 @@
     public abstract FontRenderContext getFontRenderContext();
 
     /**
-     * Gets a Shape object which defines the visual representation 
-     * of the specified glyph in this GlyphVector, translated a 
-     * distance of x in the X direction and y in the Y direction. 
+     * Gets a Shape object which defines the visual representation of the
+     * specified glyph in this GlyphVector, translated a distance of x in the X
+     * direction and y in the Y direction.
      * 
-     * @param glyphIndex the glyth index in this GlyphVector.
-     * @param x the distance in the X direction to translate the 
-     * shape object before returning it.
-     * @param y the distance in the Y direction to translate the 
-     * shape object before returning it.
-     * 
-     * @return a Shape object which represents the visual representation 
-     * of the specified glyph in this GlyphVector - glyph outline. 
+     * @param glyphIndex
+     *            the glyth index in this GlyphVector.
+     * @param x
+     *            the distance in the X direction to translate the shape object
+     *            before returning it.
+     * @param y
+     *            the distance in the Y direction to translate the shape object
+     *            before returning it.
+     * @return a Shape object which represents the visual representation of the
+     *         specified glyph in this GlyphVector - glyph outline.
      */
     public Shape getGlyphOutline(int glyphIndex, float x, float y) {
         Shape initialShape = getGlyphOutline(glyphIndex);
@@ -240,43 +249,42 @@
     /**
      * Gets the visual bounds of the specified glyph in the GlyphVector.
      * 
-     * @param glyphIndex the glyph index in this GlyphVector.
-     * 
-     * @return the glyph visual bounds of the glyph with the specified
-     * index in the GlyphVector.
+     * @param glyphIndex
+     *            the glyph index in this GlyphVector.
+     * @return the glyph visual bounds of the glyph with the specified index in
+     *         the GlyphVector.
      */
     public abstract Shape getGlyphVisualBounds(int glyphIndex);
 
     /**
-     * Gets a Shape object which defines the visual representation 
-     * of the specified glyph in this GlyphVector. 
-     *  
-     * @param glyphIndex the glyth index in this GlyphVector.
+     * Gets a Shape object which defines the visual representation of the
+     * specified glyph in this GlyphVector.
      * 
-     * @return a Shape object which represents the visual representation 
-     * of the specified glyph in this GlyphVector - glyph outline. 
+     * @param glyphIndex
+     *            the glyth index in this GlyphVector.
+     * @return a Shape object which represents the visual representation of the
+     *         specified glyph in this GlyphVector - glyph outline.
      */
     public abstract Shape getGlyphOutline(int glyphIndex);
 
     /**
-     * Gets the logical bounds of the specified glyph in 
-     * the GlyphVector. 
+     * Gets the logical bounds of the specified glyph in the GlyphVector.
      * 
-     * @param glyphIndex the index in this GlyphVector of the glyph from which 
-     * to retrieve its logical bounds
-     * 
-     * @return the logical bounds of the specified glyph in 
-     * the GlyphVector.
+     * @param glyphIndex
+     *            the index in this GlyphVector of the glyph from which to
+     *            retrieve its logical bounds
+     * @return the logical bounds of the specified glyph in the GlyphVector.
      */
     public abstract Shape getGlyphLogicalBounds(int glyphIndex);
 
     /**
-     * Gets the visual representation of this GlyphVector rendered in
-     * x, y location as a Shape object.
+     * Gets the visual representation of this GlyphVector rendered in x, y
+     * location as a Shape object.
      * 
-     * @param x the x coordinate of the GlyphVector.
-     * @param y the y coordinate of the GlyphVector.
-     * 
+     * @param x
+     *            the x coordinate of the GlyphVector.
+     * @param y
+     *            the y coordinate of the GlyphVector.
      * @return the visual representation of this GlyphVector as a Shape object.
      */
     public abstract Shape getOutline(float x, float y);
@@ -298,77 +306,79 @@
     /**
      * Gets an array of the glyph codes of the specified glyphs.
      * 
-     * @param beginGlyphIndex the index into this GlyphVector at which 
-     * to start retrieving glyph codes.
-     * @param numEntries the number of glyph codes.
-     * @param codeReturn the array into which the resulting 
-     * glyphcodes will be written.
-     * 
+     * @param beginGlyphIndex
+     *            the index into this GlyphVector at which to start retrieving
+     *            glyph codes.
+     * @param numEntries
+     *            the number of glyph codes.
+     * @param codeReturn
+     *            the array into which the resulting glyphcodes will be written.
      * @return the array of the glyph codes.
      */
-    public abstract int[] getGlyphCodes(int beginGlyphIndex, int numEntries, 
-            int[] codeReturn);
+    public abstract int[] getGlyphCodes(int beginGlyphIndex, int numEntries, int[] codeReturn);
 
     /**
-     * Gets an array of the character indices of 
-     * the specified glyphs.
+     * Gets an array of the character indices of the specified glyphs.
      * 
-     * @param beginGlyphIndex the index of the first glyph to return information for.
-     * @param numEntries the number of glyph indices to return.
-     * @param codeReturn the array into which the resulting character 
-     * indices will be written.
-     * 
+     * @param beginGlyphIndex
+     *            the index of the first glyph to return information for.
+     * @param numEntries
+     *            the number of glyph indices to return.
+     * @param codeReturn
+     *            the array into which the resulting character indices will be
+     *            written.
      * @return an array of character indices for the specifies glyphs.
      */
-    public int[] getGlyphCharIndices(int beginGlyphIndex, int numEntries, 
-            int[] codeReturn) {
+    public int[] getGlyphCharIndices(int beginGlyphIndex, int numEntries, int[] codeReturn) {
         if (codeReturn == null) {
             codeReturn = new int[numEntries];
         }
 
-        for (int i = 0; i < numEntries; i++){
-            codeReturn[i] = getGlyphCharIndex(i+beginGlyphIndex);
+        for (int i = 0; i < numEntries; i++) {
+            codeReturn[i] = getGlyphCharIndex(i + beginGlyphIndex);
         }
         return codeReturn;
     }
 
     /**
-     * Gets an array of the positions of the specified glyphs in 
-     * this GlyphVector.
+     * Gets an array of the positions of the specified glyphs in this
+     * GlyphVector.
      * 
-     * @param beginGlyphIndex the index of the first glyph to return information for.
-     * @param numEntries the number of glyphs to return information for.
-     * @param positionReturn the array where the result will be stored. 
-     * 
+     * @param beginGlyphIndex
+     *            the index of the first glyph to return information for.
+     * @param numEntries
+     *            the number of glyphs to return information for.
+     * @param positionReturn
+     *            the array where the result will be stored.
      * @return an array of glyph positions.
      */
-    public abstract float[] getGlyphPositions(int beginGlyphIndex, 
-            int numEntries, float[] positionReturn);
+    public abstract float[] getGlyphPositions(int beginGlyphIndex, int numEntries,
+            float[] positionReturn);
 
     /**
      * Gets the glyph code of the specified glyph.
      * 
-     * @param glyphIndex the index in this GlyphVector which corresponds 
-     * to the glyph from which to retrieve the glyphcode.
-     * 
+     * @param glyphIndex
+     *            the index in this GlyphVector which corresponds to the glyph
+     *            from which to retrieve the glyphcode.
      * @return the glyphcode of the specified glyph.
      */
     public abstract int getGlyphCode(int glyphIndex);
 
     /**
-     * Gets the first logical character's index of the specified glyph. 
-     *  
-     * @param glyphIndex the glyph index.
+     * Gets the first logical character's index of the specified glyph.
      * 
+     * @param glyphIndex
+     *            the glyph index.
      * @return the the first logical character's index.
      */
-    public int getGlyphCharIndex(int glyphIndex){
+    public int getGlyphCharIndex(int glyphIndex) {
         // default implemetation one-to-one
         return glyphIndex;
     }
 
     /**
-     * Sets default layout to this GlyphVector. 
+     * Sets default layout to this GlyphVector.
      */
     public abstract void performDefaultLayout();
 
@@ -380,15 +390,14 @@
     public abstract int getNumGlyphs();
 
     /**
-     * Gets flags which describe the global state of the GlyphVector. 
-     * The default implementation returns 0.
+     * Gets flags which describe the global state of the GlyphVector. The
+     * default implementation returns 0.
      * 
      * @return the layout flags
      */
-    public int getLayoutFlags(){
+    public int getLayoutFlags() {
         // default implementation - returned value is 0
         return 0;
     }
 
 }
-
diff --git a/awt/java/awt/font/GraphicAttribute.java b/awt/java/awt/font/GraphicAttribute.java
index 2f41951..8480e0f 100644
--- a/awt/java/awt/font/GraphicAttribute.java
+++ b/awt/java/awt/font/GraphicAttribute.java
@@ -18,6 +18,7 @@
  * @author Ilya S. Okomin
  * @version $Revision$
  */
+
 package java.awt.font;
 
 import java.awt.Graphics2D;
@@ -26,49 +27,54 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The GraphicAttribute abstract class provides an opportunity to
- * insert graphical elements in printed text.   
+ * The GraphicAttribute abstract class provides an opportunity to insert
+ * graphical elements in printed text.
+ * 
+ * @since Android 1.0
  */
 public abstract class GraphicAttribute {
 
-    /** 
-     * The Constant TOP_ALIGNMENT indicates using the top line to 
-     * calculate placement of graphics.
+    /**
+     * The Constant TOP_ALIGNMENT indicates using the top line to calculate
+     * placement of graphics.
      */
     public static final int TOP_ALIGNMENT = -1;
 
-    /** 
-     * The Constant BOTTOM_ALIGNMENT indicates using the bottom line to 
-     * calculate placement of graphics. 
+    /**
+     * The Constant BOTTOM_ALIGNMENT indicates using the bottom line to
+     * calculate placement of graphics.
      */
     public static final int BOTTOM_ALIGNMENT = -2;
 
-    /** 
-     * The Constant ROMAN_BASELINE indicates the placement of the roman 
-     * baseline with respect to the graphics origin.
+    /**
+     * The Constant ROMAN_BASELINE indicates the placement of the roman baseline
+     * with respect to the graphics origin.
      */
     public static final int ROMAN_BASELINE = 0;
 
-    /** 
-     * The Constant CENTER_BASELINE indicates the placement of the center 
+    /**
+     * The Constant CENTER_BASELINE indicates the placement of the center
      * baseline with respect to the graphics origin.
      */
     public static final int CENTER_BASELINE = 1;
 
-    /** 
-     * The Constant HANGING_BASELINE indicates the placement of the hanging 
-     * baseline with respect to the graphics origin. 
+    /**
+     * The Constant HANGING_BASELINE indicates the placement of the hanging
+     * baseline with respect to the graphics origin.
      */
     public static final int HANGING_BASELINE = 2;
 
     // the alignment of this GraphicAttribute
-    /** The alignment. */
+    /**
+     * The alignment.
+     */
     private int alignment;
 
     /**
      * Instantiates a new graphic attribute with the specified alignment.
      * 
-     * @param align the specified alignment.
+     * @param align
+     *            the specified alignment.
      */
     protected GraphicAttribute(int align) {
         if ((align < BOTTOM_ALIGNMENT) || (align > HANGING_BASELINE)) {
@@ -81,16 +87,19 @@
     /**
      * Draws the GraphicAttribute at the specified location.
      * 
-     * @param graphics the Graphics.
-     * @param x the X coordinate of GraphicAttribute location.
-     * @param y the Y coordinate of GraphicAttribute location.
+     * @param graphics
+     *            the Graphics.
+     * @param x
+     *            the X coordinate of GraphicAttribute location.
+     * @param y
+     *            the Y coordinate of GraphicAttribute location.
      */
     public abstract void draw(Graphics2D graphics, float x, float y);
 
     /**
-     * Gets the GraphicAttribute's advance. It's the distance from the point 
-     * at which the graphic is rendered and the point where the next character 
-     * or graphic is rendered.
+     * Gets the GraphicAttribute's advance. It's the distance from the point at
+     * which the graphic is rendered and the point where the next character or
+     * graphic is rendered.
      * 
      * @return the GraphicAttribute's advance.
      */
@@ -139,58 +148,32 @@
      * @return the GlyphJustificationInfo of this GraphicAttribute.
      */
     public GlyphJustificationInfo getJustificationInfo() {
-        
-        /* Default implementation.
-         * Since documentation doesn't describe default values,
-         * they were calculated based on 1.5 release 
-         * behavior and can be obtained using next test sample:
-         * 
-         *    // Create GraphicAttribute class implementation
-         *    public class MyGraphicAttribute extends GraphicAttribute {
-         *        protected MyGraphicAttribute(int align) {
-         *            super(align);
-         *        }
-         *
-         *        public float getDescent() {
-         *           return 0;
-         *        }
-         *
-         *        public float getAdvance() {
-         *           return 1;
-         *        }
-         *
-         *        public void draw(Graphics2D g2, float x, float y) {
-         *        }
-         *
-         *        public float getAscent() {
-         *            return 0;
-         *        }
-         *    }
-         *
-         *    MyGraphicAttribute myGA = gat.new MyGraphicAttribute(0);
-         *    // print justification parameters
-         *    System.out.println(myGA.getJustificationInfo().growAbsorb);
-         *    System.out.println(myGA.getJustificationInfo().shrinkAbsorb);
-         *    System.out.println(myGA.getJustificationInfo().growLeftLimit);
-         *    System.out.println(myGA.getJustificationInfo().growPriority);
-         *    System.out.println(myGA.getJustificationInfo().growRightLimit);
-         *    System.out.println(myGA.getJustificationInfo().shrinkLeftLimit);
-         *    System.out.println(myGA.getJustificationInfo().shrinkPriority);
-         *    System.out.println(myGA.getJustificationInfo().shrinkRightLimit);
-         *    System.out.println(myGA.getJustificationInfo().weight);
+
+        /*
+         * Default implementation. Since documentation doesn't describe default
+         * values, they were calculated based on 1.5 release behavior and can be
+         * obtained using next test sample: // Create GraphicAttribute class
+         * implementation public class MyGraphicAttribute extends
+         * GraphicAttribute { protected MyGraphicAttribute(int align) {
+         * super(align); } public float getDescent() { return 0; } public float
+         * getAdvance() { return 1; } public void draw(Graphics2D g2, float x,
+         * float y) { } public float getAscent() { return 0; } }
+         * MyGraphicAttribute myGA = gat.new MyGraphicAttribute(0); // print
+         * justification parameters
+         * System.out.println(myGA.getJustificationInfo().growAbsorb);
+         * System.out.println(myGA.getJustificationInfo().shrinkAbsorb);
+         * System.out.println(myGA.getJustificationInfo().growLeftLimit);
+         * System.out.println(myGA.getJustificationInfo().growPriority);
+         * System.out.println(myGA.getJustificationInfo().growRightLimit);
+         * System.out.println(myGA.getJustificationInfo().shrinkLeftLimit);
+         * System.out.println(myGA.getJustificationInfo().shrinkPriority);
+         * System.out.println(myGA.getJustificationInfo().shrinkRightLimit);
+         * System.out.println(myGA.getJustificationInfo().weight);
          */
         float advance = getAdvance();
-        return new GlyphJustificationInfo(
-                                    advance,
-                                    false,
-                                    GlyphJustificationInfo.PRIORITY_INTERCHAR,
-                                    advance / 3,
-                                    advance / 3,
-                                    false,
-                                    GlyphJustificationInfo.PRIORITY_WHITESPACE,
-                                    0,
-                                    0);
+        return new GlyphJustificationInfo(advance, false,
+                GlyphJustificationInfo.PRIORITY_INTERCHAR, advance / 3, advance / 3, false,
+                GlyphJustificationInfo.PRIORITY_WHITESPACE, 0, 0);
     }
 
 }
-
diff --git a/awt/java/awt/font/ImageGraphicAttribute.java b/awt/java/awt/font/ImageGraphicAttribute.java
index 41f90b8..d6d4758 100644
--- a/awt/java/awt/font/ImageGraphicAttribute.java
+++ b/awt/java/awt/font/ImageGraphicAttribute.java
@@ -18,6 +18,7 @@
  * @author Ilya S. Okomin
  * @version $Revision$
  */
+
 package java.awt.font;
 
 import java.awt.Graphics2D;
@@ -27,44 +28,57 @@
 import org.apache.harmony.misc.HashCode;
 
 /**
- * The ImageGraphicAttribute class provides an opportunity to insert 
- * images to a text.
+ * The ImageGraphicAttribute class provides an opportunity to insert images to a
+ * text.
+ * 
+ * @since Android 1.0
  */
 public final class ImageGraphicAttribute extends GraphicAttribute {
 
     // Image object rendered by this ImageGraphicAttribute
-    /** The image. */
+    /**
+     * The image.
+     */
     private Image fImage;
 
     // X coordinate of the origin point
-    /** The origin x. */
+    /**
+     * The origin x.
+     */
     private float fOriginX;
 
     // Y coordinate of the origin point
-    /** The origin y. */
+    /**
+     * The origin y.
+     */
     private float fOriginY;
 
     // the width of the image object
-    /** The img width. */
+    /**
+     * The img width.
+     */
     private float fImgWidth;
 
     // the height of the image object
-    /** The img height. */
+    /**
+     * The img height.
+     */
     private float fImgHeight;
 
     /**
      * Instantiates a new ImageGraphicAttribute with the specified image,
      * alignment and origins.
      * 
-     * @param image the Image to be rendered by ImageGraphicAttribute.
-     * @param alignment the alignment of the ImageGraphicAttribute.
-     * @param originX the origin X coordinate in the image of
-     * ImageGraphicAttribute.  
-     * @param originY the origin Y coordinate in the image of
-     * ImageGraphicAttribute.  
+     * @param image
+     *            the Image to be rendered by ImageGraphicAttribute.
+     * @param alignment
+     *            the alignment of the ImageGraphicAttribute.
+     * @param originX
+     *            the origin X coordinate in the image of ImageGraphicAttribute.
+     * @param originY
+     *            the origin Y coordinate in the image of ImageGraphicAttribute.
      */
-    public ImageGraphicAttribute(Image image, int alignment, float originX, 
-            float originY) {
+    public ImageGraphicAttribute(Image image, int alignment, float originX, float originY) {
         super(alignment);
 
         this.fImage = image;
@@ -80,8 +94,10 @@
      * Instantiates a new ImageGraphicAttribute with the specified image and
      * alignment.
      * 
-     * @param image the Image to be rendered by ImageGraphicAttribute.
-     * @param alignment the alignment of the ImageGraphicAttribute.
+     * @param image
+     *            the Image to be rendered by ImageGraphicAttribute.
+     * @param alignment
+     *            the alignment of the ImageGraphicAttribute.
      */
     public ImageGraphicAttribute(Image image, int alignment) {
         this(image, alignment, 0, 0);
@@ -105,10 +121,10 @@
      * Compares the specified ImageGraphicAttribute object with this
      * ImageGraphicAttribute object.
      * 
-     * @param iga the ImageGraphicAttribute object to be compared.
-     * 
+     * @param iga
+     *            the ImageGraphicAttribute object to be compared.
      * @return true, if the specified ImageGraphicAttribute object is equal to
-     * this ImageGraphicAttribute object, false otherwise.
+     *         this ImageGraphicAttribute object, false otherwise.
      */
     public boolean equals(ImageGraphicAttribute iga) {
         if (iga == null) {
@@ -119,26 +135,23 @@
             return true;
         }
 
-        return (fOriginX == iga.fOriginX &&
-                fOriginY == iga.fOriginY &&
-                getAlignment() == iga.getAlignment() &&
-                fImage.equals(iga.fImage));
+        return (fOriginX == iga.fOriginX && fOriginY == iga.fOriginY
+                && getAlignment() == iga.getAlignment() && fImage.equals(iga.fImage));
     }
 
     /**
      * Compares the specified Object with this ImageGraphicAttribute object.
-     *  
-     * @param obj the Object to be compared.
      * 
+     * @param obj
+     *            the Object to be compared.
      * @return true, if the specified Object is equal to this
-     * ImageGraphicAttribute object, false otherwise.
+     *         ImageGraphicAttribute object, false otherwise.
      */
     @Override
     public boolean equals(Object obj) {
         try {
-            return equals((ImageGraphicAttribute) obj);
-        }
-        catch(ClassCastException e) {
+            return equals((ImageGraphicAttribute)obj);
+        } catch (ClassCastException e) {
             return false;
         }
 
@@ -149,9 +162,6 @@
         g2.drawImage(fImage, (int)(x - fOriginX), (int)(y - fOriginY), null);
     }
 
-    /** 
-     * @see java.awt.font.GraphicAttribute#getAdvance()
-     */
     @Override
     public float getAdvance() {
         return Math.max(0, fImgWidth - fOriginX);
@@ -167,13 +177,9 @@
         return new Rectangle2D.Float(-fOriginX, -fOriginY, fImgWidth, fImgHeight);
     }
 
-    /** 
-     * @see java.awt.font.GraphicAttribute#getDescent()
-     */
     @Override
     public float getDescent() {
         return Math.max(0, fImgHeight - fOriginY);
     }
 
 }
-
diff --git a/awt/java/awt/font/LineBreakMeasurer.java b/awt/java/awt/font/LineBreakMeasurer.java
index efce615..4800093 100644
--- a/awt/java/awt/font/LineBreakMeasurer.java
+++ b/awt/java/awt/font/LineBreakMeasurer.java
@@ -21,64 +21,69 @@
 
 package java.awt.font;
 
-import java.text.AttributedCharacterIterator;
-//???AWT: import java.text.BreakIterator;
+import java.text.AttributedCharacterIterator; //???AWT: import java.text.BreakIterator;
 
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The class LineBreakMeasurer provides methods to measure the graphical 
- * representation of a text in order to determine where to add line 
- * breaks so the resulting line of text fits its wrapping width. 
- * The wrapping width defines the visual width of the paragraph.
+ * The class LineBreakMeasurer provides methods to measure the graphical
+ * representation of a text in order to determine where to add line breaks so
+ * the resulting line of text fits its wrapping width. The wrapping width
+ * defines the visual width of the paragraph.
+ * 
+ * @since Android 1.0
  */
 public final class LineBreakMeasurer {
-    
-    /** The tm. */
+
+    /**
+     * The tm.
+     */
     private TextMeasurer tm = null;
-    //???AWT private BreakIterator bi = null;
-    /** The position. */
+
+    // ???AWT private BreakIterator bi = null;
+    /**
+     * The position.
+     */
     private int position = 0;
-    
-    /** The maxpos. */
+
+    /**
+     * The maxpos.
+     */
     int maxpos = 0;
 
     /**
      * Instantiates a new LineBreakMeasurer object for the specified text.
      * 
-     * @param text the AttributedCharacterIterator object which contains
-     * text with at least one character.
-     * @param frc the FontRenderContext represented information
-     * about graphic device.
+     * @param text
+     *            the AttributedCharacterIterator object which contains text
+     *            with at least one character.
+     * @param frc
+     *            the FontRenderContext represented information about graphic
+     *            device.
      */
     public LineBreakMeasurer(AttributedCharacterIterator text, FontRenderContext frc) {
-        //???AWT: this(text, BreakIterator.getLineInstance(), frc);
+        // ???AWT: this(text, BreakIterator.getLineInstance(), frc);
     }
 
-    /* ???AWT
-    public LineBreakMeasurer(
-            AttributedCharacterIterator text,
-            BreakIterator bi,
-            FontRenderContext frc
-    ) {
-        tm = new TextMeasurer(text, frc);
-        this.bi = bi;
-        this.bi.setText(text);
-        position = text.getBeginIndex();
-        maxpos = tm.aci.getEndIndex();
-    }
-    */
+    /*
+     * ???AWT public LineBreakMeasurer( AttributedCharacterIterator text,
+     * BreakIterator bi, FontRenderContext frc ) { tm = new TextMeasurer(text,
+     * frc); this.bi = bi; this.bi.setText(text); position =
+     * text.getBeginIndex(); maxpos = tm.aci.getEndIndex(); }
+     */
 
     /**
-     * Deletes a character from the specified position of the text, 
-     * updates this LineBreakMeasurer object.
+     * Deletes a character from the specified position of the text, updates this
+     * LineBreakMeasurer object.
      * 
-     * @param newText the new text.
-     * @param pos the posion of the character which is deleted.
+     * @param newText
+     *            the new text.
+     * @param pos
+     *            the position of the character which is deleted.
      */
     public void deleteChar(AttributedCharacterIterator newText, int pos) {
         tm.deleteChar(newText, pos);
-        //???AWT: bi.setText(newText);
+        // ???AWT: bi.setText(newText);
 
         position = newText.getBeginIndex();
 
@@ -88,22 +93,24 @@
     /**
      * Gets current position of this LineBreakMeasurer.
      * 
-     * @return current position of this LineBreakMeasurer
+     * @return the current position of this LineBreakMeasurer
      */
     public int getPosition() {
         return position;
     }
 
     /**
-     * Insertes a character at the specified position in the text, 
-     * updates this LineBreakMeasurer object.
+     * Inserts a character at the specified position in the text, updates this
+     * LineBreakMeasurer object.
      * 
-     * @param newText the new text.
-     * @param pos the posion of the character which is inserted.
+     * @param newText
+     *            the new text.
+     * @param pos
+     *            the position of the character which is inserted.
      */
     public void insertChar(AttributedCharacterIterator newText, int pos) {
         tm.insertChar(newText, pos);
-//      ???AWT: bi.setText(newText);
+        // ???AWT: bi.setText(newText);
 
         position = newText.getBeginIndex();
 
@@ -111,21 +118,23 @@
     }
 
     /**
-     * Returns the next line of text, updates current position in this 
+     * Returns the next line of text, updates current position in this
      * LineBreakMeasurer.
      * 
-     * @param wrappingWidth the maximum visible line width.
-     * @param offsetLimit the limit point withing the text indicating
-     * that no further text should be included on the line; the paragraph break.
-     * @param requireNextWord if true, null is returned (the entire word at the current 
-     * position does not fit within the wrapping width);  
-     * if false, a valid layout is returned that includes at least the 
-     * character at the current position.
-     * 
-     * @return the next TextLayout which begins at the current position and 
-     * represents the next line of text with width wrappingWidth, null is 
-     * returned if the entire word at the current position does not fit within 
-     * the wrapping width.
+     * @param wrappingWidth
+     *            the maximum visible line width.
+     * @param offsetLimit
+     *            the limit point within the text indicating that no further
+     *            text should be included on the line; the paragraph break.
+     * @param requireNextWord
+     *            if true, null is returned (the entire word at the current
+     *            position does not fit within the wrapping width); if false, a
+     *            valid layout is returned that includes at least the character
+     *            at the current position.
+     * @return the next TextLayout which begins at the current position and
+     *         represents the next line of text with width wrappingWidth, null
+     *         is returned if the entire word at the current position does not
+     *         fit within the wrapping width.
      */
     public TextLayout nextLayout(float wrappingWidth, int offsetLimit, boolean requireNextWord) {
         if (position == maxpos) {
@@ -145,8 +154,8 @@
     /**
      * Returns the next line of text.
      * 
-     * @param wrappingWidth the maximum visible line width.
-     * 
+     * @param wrappingWidth
+     *            the maximum visible line width.
      * @return the next line of text.
      */
     public TextLayout nextLayout(float wrappingWidth) {
@@ -156,8 +165,8 @@
     /**
      * Returns the end position of the next line of text.
      * 
-     * @param wrappingWidth the maximum visible line width.
-     * 
+     * @param wrappingWidth
+     *            the maximum visible line width.
      * @return the end position of the next line of text.
      */
     public int nextOffset(float wrappingWidth) {
@@ -167,22 +176,22 @@
     /**
      * Returns the end position of the next line of text.
      * 
-     * @param wrappingWidth the maximum visible line width.
-     * @param offsetLimit the limit point withing the text indicating
-     * that no further text should be included on the line; the paragraph break.
-     * @param requireNextWord if true, the current position is returned 
-     * if the entire next word does not fit within wrappingWidth; 
-     * if false, the offset returned is at least one greater than the current
-     * position.
-     * 
+     * @param wrappingWidth
+     *            the maximum visible line width.
+     * @param offsetLimit
+     *            the limit point withing the text indicating that no further
+     *            text should be included on the line; the paragraph break.
+     * @param requireNextWord
+     *            if true, the current position is returned if the entire next
+     *            word does not fit within wrappingWidth; if false, the offset
+     *            returned is at least one greater than the current position.
      * @return the end position of the next line of text.
-     * 
-     * @throws IllegalArgumentException if the offsetLimit is less than 
-     * the current position.
+     * @throws IllegalArgumentException
+     *             if the offsetLimit is less than the current position.
      */
     public int nextOffset(float wrappingWidth, int offsetLimit, boolean requireNextWord) {
         if (offsetLimit <= position) {
-            // awt.203=Offset limit should be greater than current position. 
+            // awt.203=Offset limit should be greater than current position.
             throw new IllegalArgumentException(Messages.getString("awt.203")); //$NON-NLS-1$
         }
 
@@ -193,22 +202,20 @@
         int breakPos = tm.getLineBreakIndex(position, wrappingWidth);
         int correctedPos = breakPos;
 
-        // This check is required because bi.preceding(maxpos) throws an exception
-        /* ???AWT
-        if (breakPos == maxpos) {
-            correctedPos = maxpos;
-        } else if (Character.isWhitespace(bi.getText().setIndex(breakPos))) {
-            correctedPos = bi.following(breakPos);
-        } else {
-            correctedPos = bi.preceding(breakPos);
-        }
-        */
-        
+        // This check is required because bi.preceding(maxpos) throws an
+        // exception
+        /*
+         * ???AWT if (breakPos == maxpos) { correctedPos = maxpos; } else if
+         * (Character.isWhitespace(bi.getText().setIndex(breakPos))) {
+         * correctedPos = bi.following(breakPos); } else { correctedPos =
+         * bi.preceding(breakPos); }
+         */
+
         if (position >= correctedPos) {
             if (requireNextWord) {
                 correctedPos = position;
             } else {
-                correctedPos = Math.max(position+1, breakPos);
+                correctedPos = Math.max(position + 1, breakPos);
             }
         }
 
@@ -218,7 +225,8 @@
     /**
      * Sets the new position of this LineBreakMeasurer.
      * 
-     * @param pos the new position of this LineBreakMeasurer.
+     * @param pos
+     *            the new position of this LineBreakMeasurer.
      */
     public void setPosition(int pos) {
         if (tm.aci.getBeginIndex() > pos || maxpos < pos) {
@@ -228,4 +236,3 @@
         position = pos;
     }
 }
-
diff --git a/awt/java/awt/font/LineMetrics.java b/awt/java/awt/font/LineMetrics.java
index 2857187..4b03e5d 100644
--- a/awt/java/awt/font/LineMetrics.java
+++ b/awt/java/awt/font/LineMetrics.java
@@ -18,22 +18,24 @@
  * @author Ilya S. Okomin
  * @version $Revision$
  */
+
 package java.awt.font;
 
 /**
- * The LineMetrics class provides information such as concerning how the text 
- * is positioned with respect to the base line, such as ascent, descent, 
- * and leading.
+ * The LineMetrics class provides information such as concerning how the text is
+ * positioned with respect to the base line, such as ascent, descent, and
+ * leading.
  * 
+ * @since Android 1.0
  */
 public abstract class LineMetrics {
 
     /**
-     * Gets the baseline offsets of the text according to the 
-     * the baseline of this text.
+     * Gets the baseline offsets of the text according to the the baseline of
+     * this text.
      * 
-     * @return the baseline offsets of the text according to the 
-     * the baseline of this text.
+     * @return the baseline offsets of the text according to the the baseline of
+     *         this text.
      */
     public abstract float[] getBaselineOffsets();
 
@@ -45,11 +47,11 @@
     public abstract int getNumChars();
 
     /**
-     * Gets the baseline index, returns one of the following 
-     * index: ROMAN_BASELINE, CENTER_BASELINE, HANGING_BASELINE.
+     * Gets the baseline index, returns one of the following index:
+     * ROMAN_BASELINE, CENTER_BASELINE, HANGING_BASELINE.
      * 
-     * @return the baseline index: ROMAN_BASELINE, CENTER_BASELINE
-     * or HANGING_BASELINE.
+     * @return the baseline index: ROMAN_BASELINE, CENTER_BASELINE or
+     *         HANGING_BASELINE.
      */
     public abstract int getBaselineIndex();
 
@@ -89,11 +91,11 @@
     public abstract float getLeading();
 
     /**
-     * Gets the height of the text as a sum of the ascent, the descent 
-     * and the leading.
+     * Gets the height of the text as a sum of the ascent, the descent and the
+     * leading.
      * 
-     * @return the height of the text as a sum of the ascent, the descent 
-     * and the leading.
+     * @return the height of the text as a sum of the ascent, the descent and
+     *         the leading.
      */
     public abstract float getHeight();
 
@@ -112,4 +114,3 @@
     public abstract float getAscent();
 
 }
-
diff --git a/awt/java/awt/font/MultipleMaster.java b/awt/java/awt/font/MultipleMaster.java
index 773bfcf..d264f24 100644
--- a/awt/java/awt/font/MultipleMaster.java
+++ b/awt/java/awt/font/MultipleMaster.java
@@ -18,38 +18,44 @@
  * @author Ilya S. Okomin
  * @version $Revision$
  */
+
 package java.awt.font;
 
 import java.awt.Font;
 
 /**
- * The MultipleMaster interface provides methods to manipulate MultipleMaster 
+ * The MultipleMaster interface provides methods to manipulate MultipleMaster
  * type fonts and retrieve graphical and design data from them.
+ * 
+ * @since Android 1.0
  */
 public interface MultipleMaster {
 
     /**
-     * Derives a new multiple master font based on the specified 
-     * parameters.
+     * Derives a new multiple master font based on the specified parameters.
      * 
-     * @param glyphWidths float array which represents width of each glyph
-     * in font space.
-     * @param avgStemWidth the average stem width in font space.
-     * @param typicalCapHeight the typical upper case char height.
-     * @param typicalXHeight the typical lower case char height.
-     * @param italicAngle the slope angle for italics.
-     * 
+     * @param glyphWidths
+     *            float array which represents width of each glyph in font
+     *            space.
+     * @param avgStemWidth
+     *            the average stem width in font space.
+     * @param typicalCapHeight
+     *            the typical upper case char height.
+     * @param typicalXHeight
+     *            the typical lower case char height.
+     * @param italicAngle
+     *            the slope angle for italics.
      * @return a MultipleMaster font.
      */
-    public Font deriveMMFont(float[] glyphWidths, float avgStemWidth,
-            float typicalCapHeight, float typicalXHeight, float italicAngle);
+    public Font deriveMMFont(float[] glyphWidths, float avgStemWidth, float typicalCapHeight,
+            float typicalXHeight, float italicAngle);
 
     /**
-     * Derives a new multiple master font based on the design axis values 
-     * contained in the specified array. 
+     * Derives a new multiple master font based on the design axis values
+     * contained in the specified array.
      * 
-     * @param axes an float array which contains axis values.
-     * 
+     * @param axes
+     *            an float array which contains axis values.
      * @return a MultipleMaster font.
      */
     public Font deriveMMFont(float[] axes);
@@ -62,25 +68,24 @@
     public float[] getDesignAxisDefaults();
 
     /**
-     * Gets the array of design axis names. 
+     * Gets the array of design axis names.
      * 
-     * @return the array of design axis names. 
+     * @return the array of design axis names.
      */
     public String[] getDesignAxisNames();
 
     /**
-     * Gets the array of design axis ranges. 
+     * Gets the array of design axis ranges.
      * 
      * @return the array of design axis ranges.
      */
     public float[] getDesignAxisRanges();
 
     /**
-     * Gets the number of multiple master design controls. 
+     * Gets the number of multiple master design controls.
      * 
      * @return the number of multiple master design controls.
      */
     public int getNumDesignAxes();
 
 }
-
diff --git a/awt/java/awt/font/OpenType.java b/awt/java/awt/font/OpenType.java
index 53cb6c0..db66911 100644
--- a/awt/java/awt/font/OpenType.java
+++ b/awt/java/awt/font/OpenType.java
@@ -18,318 +18,323 @@
  * @author Ilya S. Okomin
  * @version $Revision$
  */
+
 package java.awt.font;
 
 /**
- * The OpenType interface provides constants and methods for getting 
- * instance data for fonts of type OpenType and TrueType. For more information,
- * see the <a href="http://partners.adobe.com/public/developer/opentype/index_spec.html">OpenType specification</a>.
+ * The OpenType interface provides constants and methods for getting instance
+ * data for fonts of type OpenType and TrueType. For more information, see the
+ * <a
+ * href="http://partners.adobe.com/public/developer/opentype/index_spec.html">
+ * OpenType specification</a>.
+ * 
+ * @since Android 1.0
  */
 public interface OpenType {
 
-    /** 
-     * The Constant TAG_ACNT indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_ACNT indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_ACNT = 1633906292;
 
-    /** 
-     * The Constant TAG_AVAR indicates corresponding table tag 
-     * in the Open Type Specification. 
+    /**
+     * The Constant TAG_AVAR indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_AVAR = 1635148146;
 
-    /** 
-     * The Constant TAG_BASE indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_BASE indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_BASE = 1111577413;
 
-    /** 
-     * The Constant TAG_BDAT indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_BDAT indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_BDAT = 1650745716;
 
-    /** 
-     * The Constant TAG_BLOC indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_BLOC indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_BLOC = 1651273571;
 
-    /** 
-     * The Constant TAG_BSLN indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_BSLN indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_BSLN = 1651731566;
 
-    /** 
-     * The Constant TAG_CFF indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_CFF indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_CFF = 1128678944;
 
-    /** 
-     * The Constant TAG_CMAP indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_CMAP indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_CMAP = 1668112752;
 
-    /** 
-     * The Constant TAG_CVAR indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_CVAR indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_CVAR = 1668702578;
 
-    /** 
-     * The Constant TAG_CVT indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_CVT indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_CVT = 1668707360;
 
-    /** 
-     * The Constant TAG_DSIG indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_DSIG indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_DSIG = 1146308935;
 
-    /** 
-     * The Constant TAG_EBDT indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_EBDT indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_EBDT = 1161970772;
 
-    /** 
-     * The Constant TAG_EBLC indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_EBLC indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_EBLC = 1161972803;
 
-    /** 
-     * The Constant TAG_EBSC  indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_EBSC indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_EBSC = 1161974595;
 
-    /** 
-     * The Constant TAG_FDSC indicates corresponding table tag 
-     * in the Open Type Specification. 
+    /**
+     * The Constant TAG_FDSC indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_FDSC = 1717859171;
 
-    /** 
-     * The Constant TAG_FEAT indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_FEAT indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_FEAT = 1717920116;
 
-    /** 
-     * The Constant TAG_FMTX indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_FMTX indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_FMTX = 1718449272;
 
-    /** 
-     * The Constant TAG_FPGM indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_FPGM indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_FPGM = 1718642541;
 
-    /** 
-     * The Constant TAG_FVAR indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_FVAR indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_FVAR = 1719034226;
 
-    /** 
-     * The Constant TAG_GASP indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_GASP indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_GASP = 1734439792;
 
-    /** 
-     * The Constant TAG_GDEF indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_GDEF indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_GDEF = 1195656518;
 
-    /** 
-     * The Constant TAG_GLYF indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_GLYF indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_GLYF = 1735162214;
 
-    /** 
-     * The Constant TAG_GPOS indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_GPOS indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_GPOS = 1196445523;
 
-    /** 
-     * The Constant TAG_GSUB indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_GSUB indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_GSUB = 1196643650;
 
-    /** 
-     * The Constant TAG_GVAR indicates corresponding table tag 
-     * in the Open Type Specification. 
+    /**
+     * The Constant TAG_GVAR indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_GVAR = 1735811442;
 
-    /** 
-     * The Constant TAG_HDMX indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_HDMX indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_HDMX = 1751412088;
 
-    /** 
-     * The Constant TAG_HEAD indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_HEAD indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_HEAD = 1751474532;
 
-    /** 
-     * The Constant TAG_HHEA indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_HHEA indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_HHEA = 1751672161;
 
-    /** 
-     * The Constant TAG_HMTX indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_HMTX indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_HMTX = 1752003704;
 
-    /** 
-     * The Constant TAG_JSTF indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_JSTF indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_JSTF = 1246975046;
 
-    /** 
-     * The Constant TAG_JUST indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_JUST indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_JUST = 1786082164;
 
-    /** 
-     * The Constant TAG_KERN indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_KERN indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_KERN = 1801810542;
 
-    /** 
-     * The Constant TAG_LCAR indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_LCAR indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_LCAR = 1818452338;
 
-    /** 
-     * The Constant TAG_LOCA indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_LOCA indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_LOCA = 1819239265;
 
-    /** 
-     * The Constant TAG_LTSH indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_LTSH indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_LTSH = 1280594760;
 
-    /** 
-     * The Constant TAG_MAXP indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_MAXP indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_MAXP = 1835104368;
 
-    /** 
-     * The Constant TAG_MMFX indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_MMFX indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_MMFX = 1296909912;
 
-    /** 
-     * The Constant TAG_MMSD indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_MMSD indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_MMSD = 1296913220;
 
-    /** 
-     * The Constant TAG_MORT indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_MORT indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_MORT = 1836020340;
 
-    /** 
-     * The Constant TAG_NAME indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_NAME indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_NAME = 1851878757;
 
-    /** 
-     * The Constant TAG_OPBD indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_OPBD indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_OPBD = 1836020340;
 
-    /** 
-     * The Constant TAG_OS2 indicates corresponding table tag 
-     * in the Open Type Specification. 
+    /**
+     * The Constant TAG_OS2 indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_OS2 = 1330851634;
 
-    /** 
-     * The Constant TAG_PCLT  indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_PCLT indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_PCLT = 1346587732;
 
-    /** 
-     * The Constant TAG_POST indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_POST indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_POST = 1886352244;
 
-    /** 
-     * The Constant TAG_PREP indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_PREP indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_PREP = 1886545264;
 
-    /** 
-     * The Constant TAG_PROP indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_PROP indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_PROP = 1886547824;
 
-    /** 
-     * The Constant TAG_TRAK indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_TRAK indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_TRAK = 1953653099;
 
-    /** 
-     * The Constant TAG_TYP1 indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_TYP1 indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_TYP1 = 1954115633;
 
-    /** 
-     * The Constant TAG_VDMX indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_VDMX indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_VDMX = 1447316824;
 
-    /** 
-     * The Constant TAG_VHEA indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_VHEA indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_VHEA = 1986553185;
 
-    /** 
-     * The Constant TAG_VMTX indicates corresponding table tag 
-     * in the Open Type Specification.
+    /**
+     * The Constant TAG_VMTX indicates corresponding table tag in the Open Type
+     * Specification.
      */
     public static final int TAG_VMTX = 1986884728;
 
@@ -341,70 +346,73 @@
     public int getVersion();
 
     /**
-     * Gets the table for a specified tag. 
-     * Sfnt tables include cmap, name and head items. 
-     *  
-     * @param sfntTag the sfnt tag.
+     * Gets the table for a specified tag. Sfnt tables include cmap, name and
+     * head items.
      * 
-     * @return a byte array contains the font data corresponding 
-     * to the specified tag.
+     * @param sfntTag
+     *            the sfnt tag.
+     * @return a byte array contains the font data corresponding to the
+     *         specified tag.
      */
     public byte[] getFontTable(int sfntTag);
 
     /**
-     * Gets the table for a specified tag. 
-     * Sfnt tables include cmap, name and head items. 
-     *  
-     * @param sfntTag the sfnt tag.
-     * @param offset the offset of the returned table.
-     * @param count the number of returned table.
+     * Gets the table for a specified tag. Sfnt tables include cmap, name and
+     * head items.
      * 
-     * @return the table corresponding to sfntTag and containing 
-     * the bytes starting at offset byte and including count bytes.
+     * @param sfntTag
+     *            the sfnt tag.
+     * @param offset
+     *            the offset of the returned table.
+     * @param count
+     *            the number of returned table.
+     * @return the table corresponding to sfntTag and containing the bytes
+     *         starting at offset byte and including count bytes.
      */
     public byte[] getFontTable(int sfntTag, int offset, int count);
 
     /**
-     * Gets the table for a specified tag. 
-     * Sfnt tables include cmap, name and head items.
+     * Gets the table for a specified tag. Sfnt tables include cmap, name and
+     * head items.
      * 
-     * @param strSfntTag the str sfnt tag as a String.
-     * 
-     * @return a byte array contains the font data corresponding 
-     * to the specified tag.
+     * @param strSfntTag
+     *            the str sfnt tag as a String.
+     * @return a byte array contains the font data corresponding to the
+     *         specified tag.
      */
     public byte[] getFontTable(String strSfntTag);
 
     /**
-     * Gets the table for a specified tag. 
-     * Sfnt tables include cmap, name and head items. 
-     *  
-     * @param strSfntTag the sfnt tag as a String.
-     * @param offset the offset of the returned table.
-     * @param count the number of returned table.
+     * Gets the table for a specified tag. Sfnt tables include cmap, name and
+     * head items.
      * 
-     * @return the table corresponding to sfntTag and containing 
-     * the bytes starting at offset byte and including count bytes.
+     * @param strSfntTag
+     *            the sfnt tag as a String.
+     * @param offset
+     *            the offset of the returned table.
+     * @param count
+     *            the number of returned table.
+     * @return the table corresponding to sfntTag and containing the bytes
+     *         starting at offset byte and including count bytes.
      */
     public byte[] getFontTable(String strSfntTag, int offset, int count);
 
     /**
-     * Gets the table size for a specified tag. 
+     * Gets the table size for a specified tag.
      * 
-     * @param strSfntTag the sfnt tag as a String.
-     * 
+     * @param strSfntTag
+     *            the sfnt tag as a String.
      * @return the table size for a specified tag.
      */
     public int getFontTableSize(String strSfntTag);
 
     /**
-     * Gets the table size for a specified tag. 
+     * Gets the table size for a specified tag.
      * 
-     * @param sfntTag the sfnt tag.
-     * 
+     * @param sfntTag
+     *            the sfnt tag.
      * @return the table size for a specified tag.
      */
     public int getFontTableSize(int sfntTag);
 
 }
-
diff --git a/awt/java/awt/font/ShapeGraphicAttribute.java b/awt/java/awt/font/ShapeGraphicAttribute.java
index 45199fd..182bffd 100644
--- a/awt/java/awt/font/ShapeGraphicAttribute.java
+++ b/awt/java/awt/font/ShapeGraphicAttribute.java
@@ -18,6 +18,7 @@
  * @author Ilya S. Okomin
  * @version $Revision$
  */
+
 package java.awt.font;
 
 import java.awt.BasicStroke;
@@ -29,61 +30,75 @@
 
 import org.apache.harmony.misc.HashCode;
 
-
 /**
- * The ShapeGraphicAttribute class provides an opportunity to insert 
- * shapes to a text.
+ * The ShapeGraphicAttribute class provides an opportunity to insert shapes to a
+ * text.
+ * 
+ * @since Android 1.0
  */
 public final class ShapeGraphicAttribute extends GraphicAttribute {
 
     // shape to render
-    /** The shape. */
+    /**
+     * The shape.
+     */
     private Shape fShape;
-    
+
     // flag, if the shape should be stroked (true) or filled (false)
-    /** The stroke. */
+    /**
+     * The stroke.
+     */
     private boolean fStroke;
 
     // bounds of the shape
-    /** The bounds. */
+    /**
+     * The bounds.
+     */
     private Rectangle2D fBounds;
-    
+
     // X coordinate of the origin point
-    /** The origin x. */
+    /**
+     * The origin x.
+     */
     private float fOriginX;
-    
+
     // Y coordinate of the origin point
-    /** The origin y. */
+    /**
+     * The origin y.
+     */
     private float fOriginY;
 
     // width of the shape
-    /** The shape width. */
+    /**
+     * The shape width.
+     */
     private float fShapeWidth;
-    
+
     // height of the shape
-    /** The shape height. */
+    /**
+     * The shape height.
+     */
     private float fShapeHeight;
 
-    /** 
-     * The Constant STROKE indicates whether the Shape is stroked 
-     * or not. 
+    /**
+     * The Constant STROKE indicates whether the Shape is stroked or not.
      */
     public static final boolean STROKE = true;
 
-    /** 
-     * The Constant FILL indicates whether the Shape is filled 
-     * or not. */
+    /**
+     * The Constant FILL indicates whether the Shape is filled or not.
+     */
     public static final boolean FILL = false;
 
     /**
-     * Instantiates a new ShapeGraphicAttribute object for the specified 
-     * Shape.
+     * Instantiates a new ShapeGraphicAttribute object for the specified Shape.
      * 
-     * @param shape the shape to be rendered by this 
-     * ShapeGraphicAttribute.
-     * @param alignment the alignment of this ShapeGraphicAttribute.
-     * @param stroke true if the Shape is stroked,
-     *  false if the Shape is filled.
+     * @param shape
+     *            the shape to be rendered by this ShapeGraphicAttribute.
+     * @param alignment
+     *            the alignment of this ShapeGraphicAttribute.
+     * @param stroke
+     *            true if the Shape is stroked, false if the Shape is filled.
      */
     public ShapeGraphicAttribute(Shape shape, int alignment, boolean stroke) {
         super(alignment);
@@ -91,7 +106,7 @@
         this.fShape = shape;
         this.fStroke = stroke;
 
-        this.fBounds  = fShape.getBounds2D();
+        this.fBounds = fShape.getBounds2D();
 
         this.fOriginX = (float)fBounds.getMinX();
         this.fOriginY = (float)fBounds.getMinY();
@@ -118,10 +133,10 @@
      * Compares this ShapeGraphicAttribute object to the specified
      * ShapeGraphicAttribute object.
      * 
-     * @param sga the ShapeGraphicAttribute object to be compared.
-     * 
-     * @return true, if this ShapeGraphicAttribute object is equal
-     * to the specified ShapeGraphicAttribute object, false otherwise.
+     * @param sga
+     *            the ShapeGraphicAttribute object to be compared.
+     * @return true, if this ShapeGraphicAttribute object is equal to the
+     *         specified ShapeGraphicAttribute object, false otherwise.
      */
     public boolean equals(ShapeGraphicAttribute sga) {
         if (sga == null) {
@@ -132,27 +147,24 @@
             return true;
         }
 
-        return ( fStroke == sga.fStroke &&
-                getAlignment() == sga.getAlignment() &&
-                fShape.equals(sga.fShape));
+        return (fStroke == sga.fStroke && getAlignment() == sga.getAlignment() && fShape
+                .equals(sga.fShape));
 
     }
 
     /**
-     * Compares this ShapeGraphicAttribute object to the specified
-     * Object.
+     * Compares this ShapeGraphicAttribute object to the specified Object.
      * 
-     * @param obj the Object to be compared.
-     * 
-     * @return true, if this ShapeGraphicAttribute object is equal
-     * to the specified Object, false otherwise.
+     * @param obj
+     *            the Object to be compared.
+     * @return true, if this ShapeGraphicAttribute object is equal to the
+     *         specified Object, false otherwise.
      */
     @Override
     public boolean equals(Object obj) {
         try {
-            return equals((ShapeGraphicAttribute) obj);
-        }
-        catch(ClassCastException e) {
+            return equals((ShapeGraphicAttribute)obj);
+        } catch (ClassCastException e) {
             return false;
         }
     }
@@ -160,7 +172,7 @@
     @Override
     public void draw(Graphics2D g2, float x, float y) {
         AffineTransform at = AffineTransform.getTranslateInstance(x, y);
-        if (fStroke == STROKE){
+        if (fStroke == STROKE) {
             Stroke oldStroke = g2.getStroke();
             g2.setStroke(new BasicStroke());
             g2.draw(at.createTransformedShape(fShape));
@@ -192,4 +204,3 @@
     }
 
 }
-
diff --git a/awt/java/awt/font/TextHitInfo.java b/awt/java/awt/font/TextHitInfo.java
index 17bbf71..6460eba 100644
--- a/awt/java/awt/font/TextHitInfo.java
+++ b/awt/java/awt/font/TextHitInfo.java
@@ -23,29 +23,36 @@
 
 import org.apache.harmony.misc.HashCode;
 
-
 /**
- * The TextHitInfo class provides information about a caret position 
- * in a text model for insertion or deletion of a character in a text.
- * The TextHitInfo defines two biases of the character: leading or trailing.
- * Leading position means the left edge of the specified character 
- * (TextHitInfo.leading(2) method for "text" returns the left side of "x").
- * Trailing position means the right edge of the specified character
- * (TextHitInfo.trailing(2) method for "text" returns the right side of "x").
+ * The TextHitInfo class provides information about a caret position in a text
+ * model for insertion or deletion of a character in a text. The TextHitInfo
+ * defines two biases of the character: leading or trailing. Leading position
+ * means the left edge of the specified character (TextHitInfo.leading(2) method
+ * for "text" returns the left side of "x"). Trailing position means the right
+ * edge of the specified character (TextHitInfo.trailing(2) method for "text"
+ * returns the right side of "x").
+ * 
+ * @since Android 1.0
  */
 public final class TextHitInfo {
-    
-    /** The char idx. */
+
+    /**
+     * The char idx.
+     */
     private int charIdx; // Represents character index in the line
-    
-    /** The is trailing. */
+
+    /**
+     * The is trailing.
+     */
     private boolean isTrailing;
 
     /**
      * Instantiates a new text hit info.
      * 
-     * @param idx the idx
-     * @param isTrailing the is trailing
+     * @param idx
+     *            the idx.
+     * @param isTrailing
+     *            the is trailing.
      */
     private TextHitInfo(int idx, boolean isTrailing) {
         charIdx = idx;
@@ -53,90 +60,82 @@
     }
 
     /**
-     * To string.
+     * Returns the textual string representation of this TextHitInfo instance.
      * 
-     * @return the string
+     * @return the string representation.
      */
     @Override
     public String toString() {
-        return new String(
-                "TextHitInfo[" + charIdx + ", " + //$NON-NLS-1$ //$NON-NLS-2$
-                (isTrailing?"Trailing":"Leading") + "]" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+        return new String("TextHitInfo[" + charIdx + ", " + //$NON-NLS-1$ //$NON-NLS-2$
+                (isTrailing ? "Trailing" : "Leading") + "]" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
         );
     }
 
     /**
      * Compares this TextHitInfo object with the specified object.
      * 
-     * @param obj the Object to be compared.
-     * 
-     * @return true, if the specified object is a TextHitInfo object 
-     * with the same data values as this TextHitInfo, false otherwise.
+     * @param obj
+     *            the Object to be compared.
+     * @return true, if the specified object is a TextHitInfo object with the
+     *         same data values as this TextHitInfo, false otherwise.
      */
     @Override
     public boolean equals(Object obj) {
         if (obj instanceof TextHitInfo) {
-            return equals((TextHitInfo) obj);
+            return equals((TextHitInfo)obj);
         }
         return false;
     }
 
     /**
-     * Compares this TextHitInfo object with the specified TextHitInfo
-     * object.
+     * Compares this TextHitInfo object with the specified TextHitInfo object.
      * 
-     * @param thi the TextHitInfo object to be compared.
-     * 
+     * @param thi
+     *            the TextHitInfo object to be compared.
      * @return true, if this TextHitInfo object has the same data values as the
-     * specified TextHitInfo object, false otherwise.
+     *         specified TextHitInfo object, false otherwise.
      */
     public boolean equals(TextHitInfo thi) {
-        return
-                thi != null &&
-                thi.charIdx == charIdx &&
-                thi.isTrailing == isTrailing;
+        return thi != null && thi.charIdx == charIdx && thi.isTrailing == isTrailing;
     }
 
     /**
-     * Gets a TextHitInfo object with its character index 
-     * at the specified offset from the character index of 
-     * this TextHitInfo.
+     * Gets a TextHitInfo object with its character index at the specified
+     * offset from the character index of this TextHitInfo.
      * 
-     * @param offset the offset.
-     * 
-     * @return the TextHitInfo. 
+     * @param offset
+     *            the offset.
+     * @return the TextHitInfo.
      */
     public TextHitInfo getOffsetHit(int offset) {
         return new TextHitInfo(charIdx + offset, isTrailing);
     }
 
     /**
-     * Gets a TextHitInfo associated with the other side of 
-     * the insertion point. 
-     *  
+     * Gets a TextHitInfo associated with the other side of the insertion point.
+     * 
      * @return the other hit.
      */
     public TextHitInfo getOtherHit() {
-        return isTrailing ?
-                new TextHitInfo(charIdx+1, false) :
-                new TextHitInfo(charIdx-1, true);
+        return isTrailing ? new TextHitInfo(charIdx + 1, false)
+                : new TextHitInfo(charIdx - 1, true);
     }
 
     /**
-     * Returns true if the leading edge of the character is hit,
-     * false if the trailing edge of the character is hit.
+     * Returns true if the leading edge of the character is hit, false if the
+     * trailing edge of the character is hit.
      * 
-     * @return true if the leading edge of the character is hit,
-     * false if the trailing edge of the character is hit.
+     * @return true if the leading edge of the character is hit, false if the
+     *         trailing edge of the character is hit.
      */
     public boolean isLeadingEdge() {
         return !isTrailing;
     }
 
     /**
-     * Hash code.
+     * Returns the hash code value of this TextHitInfo instance.
      * 
-     * @return the int
+     * @return the hash code value.
      */
     @Override
     public int hashCode() {
@@ -146,11 +145,11 @@
     /**
      * Gets the insertion index.
      * 
-     * @return the insertion index: character index if the leading edge
-     * is hit, or character index + 1 if the trailing edge is hit.   
+     * @return the insertion index: character index if the leading edge is hit,
+     *         or character index + 1 if the trailing edge is hit.
      */
     public int getInsertionIndex() {
-        return isTrailing ? charIdx+1 : charIdx;
+        return isTrailing ? charIdx + 1 : charIdx;
     }
 
     /**
@@ -163,52 +162,52 @@
     }
 
     /**
-     * Returns a TextHitInfo associated with the trailing edge of 
-     * the character at the specified char index.
+     * Returns a TextHitInfo associated with the trailing edge of the character
+     * at the specified char index.
      * 
-     * @param charIndex the char index.
-     * 
-     * @return the TextHitInfo associated with the trailing edge of 
-     * the character at the specified char index.
+     * @param charIndex
+     *            the char index.
+     * @return the TextHitInfo associated with the trailing edge of the
+     *         character at the specified char index.
      */
     public static TextHitInfo trailing(int charIndex) {
         return new TextHitInfo(charIndex, true);
     }
 
     /**
-     * Returns a TextHitInfo object associated with the leading edge 
-     * of the character at the specified char index.
+     * Returns a TextHitInfo object associated with the leading edge of the
+     * character at the specified char index.
      * 
-     * @param charIndex the char index.
-     * 
-     * @return the TextHitInfo object associated with the leading edge 
-     * of the character at the specified char index.
+     * @param charIndex
+     *            the char index.
+     * @return the TextHitInfo object associated with the leading edge of the
+     *         character at the specified char index.
      */
     public static TextHitInfo leading(int charIndex) {
         return new TextHitInfo(charIndex, false);
     }
 
     /**
-     * Returns a (trailing) TextHitInfo object associated with the character 
+     * Returns a (trailing) TextHitInfo object associated with the character
      * before the specified offset.
      * 
-     * @param offset the offset.
-     * 
-     * @return the TextHitInfo object associated with the character 
-     * before the specified offset.
+     * @param offset
+     *            the offset.
+     * @return the TextHitInfo object associated with the character before the
+     *         specified offset.
      */
     public static TextHitInfo beforeOffset(int offset) {
-        return new TextHitInfo(offset-1, true);
+        return new TextHitInfo(offset - 1, true);
     }
 
     /**
-     * Returns a (leading) TextHitInfo object associated with the character 
+     * Returns a (leading) TextHitInfo object associated with the character
      * after the specified offset.
      * 
-     * @param offset the offset.
-     * 
-     * @return the TextHitInfo object associated with the character 
-     * after the specified offset.
+     * @param offset
+     *            the offset.
+     * @return the TextHitInfo object associated with the character after the
+     *         specified offset.
      */
     public static TextHitInfo afterOffset(int offset) {
         return new TextHitInfo(offset, false);
diff --git a/awt/java/awt/font/TextLayout.java b/awt/java/awt/font/TextLayout.java
index e80afd0..cc6f0ba 100644
--- a/awt/java/awt/font/TextLayout.java
+++ b/awt/java/awt/font/TextLayout.java
@@ -39,18 +39,19 @@
 
 /**
  * The TextLayout class defines the graphical representation of character data.
- * This class provides method for obtaining information about cursor 
- * positioning and movement, split cursors for text with different directions, 
- * logical and visual highlighting, multiple baselines, hits, justification, 
- * ascent, descent, and advance, and rendering. A TextLayout object can be 
- * rendered using Graphics context. 
+ * This class provides method for obtaining information about cursor positioning
+ * and movement, split cursors for text with different directions, logical and
+ * visual highlighting, multiple baselines, hits, justification, ascent,
+ * descent, and advance, and rendering. A TextLayout object can be rendered
+ * using Graphics context.
+ * 
+ * @since Android 1.0
  */
 public final class TextLayout implements Cloneable {
 
     /**
-     * The CaretPolicy class provides a policy for obtaining the 
-     * caret location. The single getStrongCaret method specifies 
-     * the policy.
+     * The CaretPolicy class provides a policy for obtaining the caret location.
+     * The single getStrongCaret method specifies the policy.
      */
     public static class CaretPolicy {
 
@@ -62,14 +63,15 @@
         }
 
         /**
-         * Returns whichever of the two specified TextHitInfo objects 
-         * has the stronger caret (higher character level) in the 
-         * specified TextLayout.
+         * Returns whichever of the two specified TextHitInfo objects has the
+         * stronger caret (higher character level) in the specified TextLayout.
          * 
-         * @param hit1 the first TextHitInfo of the specified TextLayout.
-         * @param hit2 the second TextHitInfo of the specified TextLayout.
-         * @param layout the TextLayout.
-         * 
+         * @param hit1
+         *            the first TextHitInfo of the specified TextLayout.
+         * @param hit2
+         *            the second TextHitInfo of the specified TextLayout.
+         * @param layout
+         *            the TextLayout.
          * @return the TextHitInfo with the stronger caret.
          */
         public TextHitInfo getStrongCaret(TextHitInfo hit1, TextHitInfo hit2, TextLayout layout) {
@@ -87,50 +89,64 @@
 
     }
 
-    /** 
+    /**
      * The Constant DEFAULT_CARET_POLICY indicates the default caret policy.
      */
     public static final TextLayout.CaretPolicy DEFAULT_CARET_POLICY = new CaretPolicy();
 
-    /** The breaker. */
+    /**
+     * The breaker.
+     */
     private TextRunBreaker breaker;
-    
-    /** The metrics valid. */
+
+    /**
+     * The metrics valid.
+     */
     private boolean metricsValid = false;
-    
-    /** The tmc. */
+
+    /**
+     * The tmc.
+     */
     private TextMetricsCalculator tmc;
-    
-    /** The metrics. */
+
+    /**
+     * The metrics.
+     */
     private BasicMetrics metrics;
-    
-    /** The caret manager. */
+
+    /**
+     * The caret manager.
+     */
     private CaretManager caretManager;
-    
-    /** The justification width. */
+
+    /**
+     * The justification width.
+     */
     float justificationWidth = -1;
 
     /**
-     * Instantiates a new TextLayout object from the specified string
-     * and Font.
+     * Instantiates a new TextLayout object from the specified string and Font.
      * 
-     * @param string the string to be displayed.
-     * @param font the font of the text.
-     * @param frc the FontRenderContext object for obtaining
-     * information about a graphics device.
+     * @param string
+     *            the string to be displayed.
+     * @param font
+     *            the font of the text.
+     * @param frc
+     *            the FontRenderContext object for obtaining information about a
+     *            graphics device.
      */
     public TextLayout(String string, Font font, FontRenderContext frc) {
-        if (string == null){
+        if (string == null) {
             // awt.01='{0}' parameter is null
             throw new IllegalArgumentException(Messages.getString("awt.01", "string")); //$NON-NLS-1$ //$NON-NLS-2$
         }
-        
-        if (font == null){
+
+        if (font == null) {
             // awt.01='{0}' parameter is null
             throw new IllegalArgumentException(Messages.getString("awt.01", "font")); //$NON-NLS-1$ //$NON-NLS-2$
         }
 
-        if (string.length() == 0){
+        if (string.length() == 0) {
             // awt.02='{0}' parameter has zero length
             throw new IllegalArgumentException(Messages.getString("awt.02", "string")); //$NON-NLS-1$ //$NON-NLS-2$
         }
@@ -142,35 +158,35 @@
     }
 
     /**
-     * Instantiates a new TextLayout from the specified text and 
-     * a map of attributes.
+     * Instantiates a new TextLayout from the specified text and a map of
+     * attributes.
      * 
-     * @param string the string to be displayed.
-     * @param attributes the attributes to be used for obtaining the text 
-     * style.
-     * @param frc the FontRenderContext object for obtaining
-     * information about a graphics device.
+     * @param string
+     *            the string to be displayed.
+     * @param attributes
+     *            the attributes to be used for obtaining the text style.
+     * @param frc
+     *            the FontRenderContext object for obtaining information about a
+     *            graphics device.
      */
-    public TextLayout(
-            String string,
+    public TextLayout(String string,
             Map<? extends java.text.AttributedCharacterIterator.Attribute, ?> attributes,
-            FontRenderContext frc ) {
-        if (string == null){
+            FontRenderContext frc) {
+        if (string == null) {
             // awt.01='{0}' parameter is null
             throw new IllegalArgumentException(Messages.getString("awt.01", "string")); //$NON-NLS-1$ //$NON-NLS-2$
         }
-        
-        if (attributes == null){
+
+        if (attributes == null) {
             // awt.01='{0}' parameter is null
             throw new IllegalArgumentException(Messages.getString("awt.01", "attributes")); //$NON-NLS-1$ //$NON-NLS-2$
         }
-        
-        if (string.length() == 0){
+
+        if (string.length() == 0) {
             // awt.02='{0}' parameter has zero length
             throw new IllegalArgumentException(Messages.getString("awt.02", "string")); //$NON-NLS-1$ //$NON-NLS-2$
         }
-        
-        
+
         AttributedString as = new AttributedString(string);
         as.addAttributes(attributes, 0, string.length());
         this.breaker = new TextRunBreaker(as.getIterator(), frc);
@@ -180,17 +196,19 @@
     /**
      * Instantiates a new TextLayout from the AttributedCharacterIterator.
      * 
-     * @param text the AttributedCharacterIterator.
-     * @param frc the FontRenderContext object for obtaining
-     * information about a graphics device.
+     * @param text
+     *            the AttributedCharacterIterator.
+     * @param frc
+     *            the FontRenderContext object for obtaining information about a
+     *            graphics device.
      */
     public TextLayout(AttributedCharacterIterator text, FontRenderContext frc) {
-        if (text == null){
+        if (text == null) {
             // awt.03='{0}' iterator parameter is null
             throw new IllegalArgumentException(Messages.getString("awt.03", "text")); //$NON-NLS-1$ //$NON-NLS-2$
         }
-        
-        if (text.getBeginIndex() == text.getEndIndex()){
+
+        if (text.getBeginIndex() == text.getEndIndex()) {
             // awt.04='{0}' iterator parameter has zero length
             throw new IllegalArgumentException(Messages.getString("awt.04", "text")); //$NON-NLS-1$ //$NON-NLS-2$
         }
@@ -202,7 +220,8 @@
     /**
      * Instantiates a new text layout.
      * 
-     * @param breaker the breaker
+     * @param breaker
+     *            the breaker.
      */
     TextLayout(TextRunBreaker breaker) {
         this.breaker = breaker;
@@ -226,7 +245,7 @@
      */
     @Override
     protected Object clone() {
-        TextLayout res = new TextLayout((TextRunBreaker) breaker.clone());
+        TextLayout res = new TextLayout((TextRunBreaker)breaker.clone());
 
         if (justificationWidth >= 0) {
             res.handleJustify(justificationWidth);
@@ -238,10 +257,10 @@
     /**
      * Compares this TextLayout object to the specified TextLayout object.
      * 
-     * @param layout the TextLayout object to be compared.
-     * 
-     * @return true, if this TextLayout object is equal to 
-     * the specified TextLayout object, false otherwise.
+     * @param layout
+     *            the TextLayout object to be compared.
+     * @return true, if this TextLayout object is equal to the specified
+     *         TextLayout object, false otherwise.
      */
     public boolean equals(TextLayout layout) {
         if (layout == null) {
@@ -253,14 +272,14 @@
     /**
      * Compares this TextLayout object to the specified Object.
      * 
-     * @param obj the Object to be compared.
-     * 
-     * @return true, if this TextLayout object is equal to 
-     * the specified Object, false otherwise.
+     * @param obj
+     *            the Object to be compared.
+     * @return true, if this TextLayout object is equal to the specified Object,
+     *         false otherwise.
      */
     @Override
     public boolean equals(Object obj) {
-        return obj instanceof TextLayout ? equals((TextLayout) obj) : false;
+        return obj instanceof TextLayout ? equals((TextLayout)obj) : false;
     }
 
     /**
@@ -274,16 +293,19 @@
     }
 
     /**
-     * Draws this TextLayout at the specified location with the 
-     * specified Graphics2D context. 
+     * Draws this TextLayout at the specified location with the specified
+     * Graphics2D context.
      * 
-     * @param g2d the Graphics2D object which renders this TextLayout.
-     * @param x the X coordinate of the TextLayout origin. 
-     * @param y the Y coordinate of the TextLayout origin.
+     * @param g2d
+     *            the Graphics2D object which renders this TextLayout.
+     * @param x
+     *            the X coordinate of the TextLayout origin.
+     * @param y
+     *            the Y coordinate of the TextLayout origin.
      */
     public void draw(Graphics2D g2d, float x, float y) {
         updateMetrics();
-        breaker.drawSegments(g2d, x ,y);
+        breaker.drawSegments(g2d, x, y);
     }
 
     /**
@@ -325,15 +347,15 @@
      */
     public byte getBaseline() {
         updateMetrics();
-        return (byte) metrics.getBaseLineIndex();
+        return (byte)metrics.getBaseLineIndex();
     }
 
     /**
-     * Gets the float array of offsets for the baselines which 
-     * are used in this TextLayout.
+     * Gets the float array of offsets for the baselines which are used in this
+     * TextLayout.
      * 
-     * @return the float array of offsets for the baselines which 
-     * are used in this TextLayout.
+     * @return the float array of offsets for the baselines which are used in
+     *         this TextLayout.
      */
     public float[] getBaselineOffsets() {
         updateMetrics();
@@ -341,14 +363,15 @@
     }
 
     /**
-     * Gets the black box bounds of the characters in the specified area. 
-     * The black box bounds is an Shape which contains all 
-     * bounding boxes of all the glyphs of the characters 
-     * between firstEndpoint and secondEndpoint parameters values.     
-     *  
-     * @param firstEndpoint the first point of the area.
-     * @param secondEndpoint the second point of the area.
+     * Gets the black box bounds of the characters in the specified area. The
+     * black box bounds is an Shape which contains all bounding boxes of all the
+     * glyphs of the characters between firstEndpoint and secondEndpoint
+     * parameters values.
      * 
+     * @param firstEndpoint
+     *            the first point of the area.
+     * @param secondEndpoint
+     *            the second point of the area.
      * @return the Shape which contains black box bounds.
      */
     public Shape getBlackBoxBounds(int firstEndpoint, int secondEndpoint) {
@@ -372,8 +395,8 @@
     /**
      * Gets information about the caret of the specified TextHitInfo.
      * 
-     * @param hitInfo the TextHitInfo.
-     * 
+     * @param hitInfo
+     *            the TextHitInfo.
      * @return the information about the caret of the specified TextHitInfo.
      */
     public float[] getCaretInfo(TextHitInfo hitInfo) {
@@ -382,12 +405,13 @@
     }
 
     /**
-     * Gets information about the caret of the specified TextHitInfo
-     * of a character in this TextLayout.
+     * Gets information about the caret of the specified TextHitInfo of a
+     * character in this TextLayout.
      * 
-     * @param hitInfo the TextHitInfo of a character in this TextLayout.
-     * @param bounds the bounds to which the caret info is constructed.
-     * 
+     * @param hitInfo
+     *            the TextHitInfo of a character in this TextLayout.
+     * @param bounds
+     *            the bounds to which the caret info is constructed.
      * @return the caret of the specified TextHitInfo.
      */
     public float[] getCaretInfo(TextHitInfo hitInfo, Rectangle2D bounds) {
@@ -396,12 +420,13 @@
     }
 
     /**
-     * Gets a Shape which represents the caret of the specified TextHitInfo
-     * in the bounds of this TextLayout.
+     * Gets a Shape which represents the caret of the specified TextHitInfo in
+     * the bounds of this TextLayout.
      * 
-     * @param hitInfo the TextHitInfo.
-     * @param bounds the bounds to which the caret info is constructed.
-     * 
+     * @param hitInfo
+     *            the TextHitInfo.
+     * @param bounds
+     *            the bounds to which the caret info is constructed.
      * @return the Shape which represents the caret.
      */
     public Shape getCaretShape(TextHitInfo hitInfo, Rectangle2D bounds) {
@@ -410,11 +435,11 @@
     }
 
     /**
-     * Gets a Shape which represents the caret of the specified TextHitInfo
-     * in the bounds of this TextLayout.
+     * Gets a Shape which represents the caret of the specified TextHitInfo in
+     * the bounds of this TextLayout.
      * 
-     * @param hitInfo the TextHitInfo.
-     * 
+     * @param hitInfo
+     *            the TextHitInfo.
      * @return the Shape which represents the caret.
      */
     public Shape getCaretShape(TextHitInfo hitInfo) {
@@ -423,45 +448,47 @@
     }
 
     /**
-     * Gets two Shapes for the strong and weak carets with
-     * default caret policy and null bounds: the first element 
-     * is the strong caret, the second is the weak caret or null. 
+     * Gets two Shapes for the strong and weak carets with default caret policy
+     * and null bounds: the first element is the strong caret, the second is the
+     * weak caret or null.
      * 
-     * @param offset an offset in the TextLayout.
-     * 
-     * @return an array of two Shapes corresponded to the strong
-     * and weak carets.
+     * @param offset
+     *            an offset in the TextLayout.
+     * @return an array of two Shapes corresponded to the strong and weak
+     *         carets.
      */
     public Shape[] getCaretShapes(int offset) {
         return getCaretShapes(offset, null, TextLayout.DEFAULT_CARET_POLICY);
     }
 
     /**
-     * Gets two Shapes for the strong and weak carets with
-     * the default caret policy: the first element is the strong 
-     * caret, the second is the weak caret or null.
+     * Gets two Shapes for the strong and weak carets with the default caret
+     * policy: the first element is the strong caret, the second is the weak
+     * caret or null.
      * 
-     * @param offset an offset in the TextLayout.
-     * @param bounds the bounds to which to extend the carets.
-     * 
-     * @return an array of two Shapes corresponded to the strong
-     * and weak carets.
+     * @param offset
+     *            an offset in the TextLayout.
+     * @param bounds
+     *            the bounds to which to extend the carets.
+     * @return an array of two Shapes corresponded to the strong and weak
+     *         carets.
      */
     public Shape[] getCaretShapes(int offset, Rectangle2D bounds) {
         return getCaretShapes(offset, bounds, TextLayout.DEFAULT_CARET_POLICY);
     }
 
     /**
-     * Gets two Shapes for the strong and weak carets: the first
-     * element is the strong caret, the second is the weak caret 
-     * or null.
+     * Gets two Shapes for the strong and weak carets: the first element is the
+     * strong caret, the second is the weak caret or null.
      * 
-     * @param offset an offset in the TextLayout.
-     * @param bounds the bounds to which to extend the carets.
-     * @param policy the specified CaretPolicy.
-     * 
-     * @return an array of two Shapes corresponded to the strong
-     * and weak carets.
+     * @param offset
+     *            an offset in the TextLayout.
+     * @param bounds
+     *            the bounds to which to extend the carets.
+     * @param policy
+     *            the specified CaretPolicy.
+     * @return an array of two Shapes corresponded to the strong and weak
+     *         carets.
      */
     public Shape[] getCaretShapes(int offset, Rectangle2D bounds, TextLayout.CaretPolicy policy) {
         if (offset < 0 || offset > breaker.getCharCount()) {
@@ -483,15 +510,15 @@
     }
 
     /**
-     * Gets the level of the character with the specified index. 
-     *  
-     * @param index the specified index of the character.
+     * Gets the level of the character with the specified index.
      * 
+     * @param index
+     *            the specified index of the character.
      * @return the level of the character.
      */
     public byte getCharacterLevel(int index) {
         if (index == -1 || index == getCharacterCount()) {
-            return (byte) breaker.getBaseLevel();
+            return (byte)breaker.getBaseLevel();
         }
         return breaker.getLevel(index);
     }
@@ -507,16 +534,15 @@
     }
 
     /**
-     * Gets the TextLayout wich is justified with the specified
-     * width related to this TextLayout.
+     * Gets the TextLayout wich is justified with the specified width related to
+     * this TextLayout.
      * 
-     * @param justificationWidth the width which is used 
-     * for justification.
-     * 
+     * @param justificationWidth
+     *            the width which is used for justification.
      * @return a TextLayout justified to the specified width.
-     * 
-     * @throws Error the error occures if this TextLayout has been
-     * already justified.
+     * @throws Error
+     *             the error occures if this TextLayout has been already
+     *             justified.
      */
     public TextLayout getJustifiedLayout(float justificationWidth) throws Error {
         float justification = breaker.getJustification();
@@ -528,7 +554,7 @@
             return this;
         }
 
-        TextLayout justifiedLayout = new TextLayout((TextRunBreaker) breaker.clone());
+        TextLayout justifiedLayout = new TextLayout((TextRunBreaker)breaker.clone());
         justifiedLayout.handleJustify(justificationWidth);
         return justifiedLayout;
     }
@@ -544,15 +570,15 @@
     }
 
     /**
-     * Gets a Shape representing the logical selection betweeen 
-     * the specified endpoints and extended to the natural 
-     * bounds of this TextLayout.
+     * Gets a Shape representing the logical selection betweeen the specified
+     * endpoints and extended to the natural bounds of this TextLayout.
      * 
-     * @param firstEndpoint the first selected endpoint within the area of characters
-     * @param secondEndpoint the second selected endpoint within the area of characters
-     * 
-     * @return a Shape represented the logical selection betweeen 
-     * the specified endpoints.
+     * @param firstEndpoint
+     *            the first selected endpoint within the area of characters
+     * @param secondEndpoint
+     *            the second selected endpoint within the area of characters
+     * @return a Shape represented the logical selection betweeen the specified
+     *         endpoints.
      */
     public Shape getLogicalHighlightShape(int firstEndpoint, int secondEndpoint) {
         updateMetrics();
@@ -560,22 +586,19 @@
     }
 
     /**
-     * Gets a Shape representing the logical selection betweeen 
-     * the specified endpoints and extended to the specified 
-     * bounds of this TextLayout.
+     * Gets a Shape representing the logical selection betweeen the specified
+     * endpoints and extended to the specified bounds of this TextLayout.
      * 
-     * @param firstEndpoint the first selected endpoint within the area of characters
-     * @param secondEndpoint the second selected endpoint within the area of characters
-     * @param bounds the specified bounds of this TextLayout.
-     * 
-     * @return a Shape represented the logical selection betweeen 
-     * the specified endpoints.
+     * @param firstEndpoint
+     *            the first selected endpoint within the area of characters
+     * @param secondEndpoint
+     *            the second selected endpoint within the area of characters
+     * @param bounds
+     *            the specified bounds of this TextLayout.
+     * @return a Shape represented the logical selection betweeen the specified
+     *         endpoints.
      */
-    public Shape getLogicalHighlightShape(
-            int firstEndpoint,
-            int secondEndpoint,
-            Rectangle2D bounds
-    ) {
+    public Shape getLogicalHighlightShape(int firstEndpoint, int secondEndpoint, Rectangle2D bounds) {
         updateMetrics();
 
         if (firstEndpoint > secondEndpoint) {
@@ -583,62 +606,51 @@
                 // awt.197=Endpoints are out of range
                 throw new IllegalArgumentException(Messages.getString("awt.197")); //$NON-NLS-1$
             }
-            return caretManager.getLogicalHighlightShape(
-                    secondEndpoint,
-                    firstEndpoint,
-                    bounds,
-                    this
-            );
+            return caretManager.getLogicalHighlightShape(secondEndpoint, firstEndpoint, bounds,
+                    this);
         }
         if (firstEndpoint < 0 || secondEndpoint > breaker.getCharCount()) {
             // awt.197=Endpoints are out of range
             throw new IllegalArgumentException(Messages.getString("awt.197")); //$NON-NLS-1$
         }
-        return caretManager.getLogicalHighlightShape(
-                firstEndpoint,
-                secondEndpoint,
-                bounds,
-                this
-        );
+        return caretManager.getLogicalHighlightShape(firstEndpoint, secondEndpoint, bounds, this);
     }
 
     /**
-     * Gets the logical ranges of text which corresponds to a visual 
-     * selection.
+     * Gets the logical ranges of text which corresponds to a visual selection.
      * 
-     * @param hit1 the first endpoint of the visual range.
-     * @param hit2 the second endpoint of the visual range.
-     * 
-     * @return the logical ranges of text which corresponds to a visual 
-     * selection.
+     * @param hit1
+     *            the first endpoint of the visual range.
+     * @param hit2
+     *            the second endpoint of the visual range.
+     * @return the logical ranges of text which corresponds to a visual
+     *         selection.
      */
     public int[] getLogicalRangesForVisualSelection(TextHitInfo hit1, TextHitInfo hit2) {
         return caretManager.getLogicalRangesForVisualSelection(hit1, hit2);
     }
 
     /**
-     * Gets the TextHitInfo for the next caret to the left (or
-     * up at the end of the line) of the specified offset. 
+     * Gets the TextHitInfo for the next caret to the left (or up at the end of
+     * the line) of the specified offset.
      * 
-     * @param offset the offset in this TextLayout.
-     * 
-     * @return the TextHitInfo for the next caret to the left (or
-     * up at the end of the line) of the specified hit, or null 
-     * if there is no hit.
+     * @param offset
+     *            the offset in this TextLayout.
+     * @return the TextHitInfo for the next caret to the left (or up at the end
+     *         of the line) of the specified hit, or null if there is no hit.
      */
     public TextHitInfo getNextLeftHit(int offset) {
         return getNextLeftHit(offset, DEFAULT_CARET_POLICY);
     }
 
     /**
-     * Gets the TextHitInfo for the next caret to the left (or
-     * up at the end of the line) of the specified hit. 
+     * Gets the TextHitInfo for the next caret to the left (or up at the end of
+     * the line) of the specified hit.
      * 
-     * @param hitInfo the initial hit.
-     * 
-     * @return the TextHitInfo for the next caret to the left (or
-     * up at the end of the line) of the specified hit, or null 
-     * if there is no hit.
+     * @param hitInfo
+     *            the initial hit.
+     * @return the TextHitInfo for the next caret to the left (or up at the end
+     *         of the line) of the specified hit, or null if there is no hit.
      */
     public TextHitInfo getNextLeftHit(TextHitInfo hitInfo) {
         breaker.createAllSegments();
@@ -646,15 +658,15 @@
     }
 
     /**
-     * Gets the TextHitInfo for the next caret to the left (or
-     * up at the end of the line) of the specified offset, given the 
-     * specified caret policy. 
+     * Gets the TextHitInfo for the next caret to the left (or up at the end of
+     * the line) of the specified offset, given the specified caret policy.
      * 
-     * @param offset the offset in this TextLayout.
-     * @param policy the policy to be used for obtaining the strong caret.
-     * 
-     * @return the TextHitInfo for the next caret to the left of the 
-     * specified offset, or null if there is no hit.
+     * @param offset
+     *            the offset in this TextLayout.
+     * @param policy
+     *            the policy to be used for obtaining the strong caret.
+     * @return the TextHitInfo for the next caret to the left of the specified
+     *         offset, or null if there is no hit.
      */
     public TextHitInfo getNextLeftHit(int offset, TextLayout.CaretPolicy policy) {
         if (offset < 0 || offset > breaker.getCharCount()) {
@@ -673,14 +685,14 @@
     }
 
     /**
-     * Gets the TextHitInfo for the next caret to the right (or
-     * down at the end of the line) of the specified hit. 
+     * Gets the TextHitInfo for the next caret to the right (or down at the end
+     * of the line) of the specified hit.
      * 
-     * @param hitInfo the initial hit.
-     * 
-     * @return the TextHitInfo for the next caret to the right (or
-     * down at the end of the line) of the specified hit, or null 
-     * if there is no hit.
+     * @param hitInfo
+     *            the initial hit.
+     * @return the TextHitInfo for the next caret to the right (or down at the
+     *         end of the line) of the specified hit, or null if there is no
+     *         hit.
      */
     public TextHitInfo getNextRightHit(TextHitInfo hitInfo) {
         breaker.createAllSegments();
@@ -688,28 +700,28 @@
     }
 
     /**
-     * Gets the TextHitInfo for the next caret to the right (or
-     * down at the end of the line) of the specified offset. 
+     * Gets the TextHitInfo for the next caret to the right (or down at the end
+     * of the line) of the specified offset.
      * 
-     * @param offset the offset in this TextLayout.
-     * 
-     * @return the TextHitInfo for the next caret to the right of the 
-     * specified offset, or null if there is no hit.
+     * @param offset
+     *            the offset in this TextLayout.
+     * @return the TextHitInfo for the next caret to the right of the specified
+     *         offset, or null if there is no hit.
      */
     public TextHitInfo getNextRightHit(int offset) {
         return getNextRightHit(offset, DEFAULT_CARET_POLICY);
     }
 
     /**
-     * Gets the TextHitInfo for the next caret to the right (or
-     * down at the end of the line) of the specified offset, given the 
-     * specified caret policy. 
+     * Gets the TextHitInfo for the next caret to the right (or down at the end
+     * of the line) of the specified offset, given the specified caret policy.
      * 
-     * @param offset the offset in this TextLayout.
-     * @param policy the policy to be used for obtaining the strong caret.
-     * 
-     * @return the TextHitInfo for the next caret to the right of the 
-     * specified offset, or null if there is no hit.
+     * @param offset
+     *            the offset in this TextLayout.
+     * @param policy
+     *            the policy to be used for obtaining the strong caret.
+     * @return the TextHitInfo for the next caret to the right of the specified
+     *         offset, or null if there is no hit.
      */
     public TextHitInfo getNextRightHit(int offset, TextLayout.CaretPolicy policy) {
         if (offset < 0 || offset > breaker.getCharCount()) {
@@ -730,10 +742,9 @@
     /**
      * Gets the outline of this TextLayout as a Shape.
      * 
-     * @param xform the AffineTransform to be used to transform 
-     * the outline before returning it, or null if no transformation
-     * is desired.
-     * 
+     * @param xform
+     *            the AffineTransform to be used to transform the outline before
+     *            returning it, or null if no transformation is desired.
      * @return the outline of this TextLayout as a Shape.
      */
     public Shape getOutline(AffineTransform xform) {
@@ -749,8 +760,8 @@
     }
 
     /**
-     * Gets the visible advance of this TextLayout which is defined as
-     * diffence between leading (advance) and trailing whitespace.
+     * Gets the visible advance of this TextLayout which is defined as diffence
+     * between leading (advance) and trailing whitespace.
      * 
      * @return the visible advance of this TextLayout.
      */
@@ -764,15 +775,13 @@
 
         if (lastNonWhitespace < 0) {
             return 0;
-        } else if (lastNonWhitespace == getCharacterCount()-1) {
+        } else if (lastNonWhitespace == getCharacterCount() - 1) {
             return getAdvance();
         } else if (justificationWidth >= 0) { // Layout is justified
             return justificationWidth;
         } else {
-            breaker.pushSegments(
-                    breaker.getACI().getBeginIndex(),
-                    lastNonWhitespace + breaker.getACI().getBeginIndex() + 1
-            );
+            breaker.pushSegments(breaker.getACI().getBeginIndex(), lastNonWhitespace
+                    + breaker.getACI().getBeginIndex() + 1);
 
             breaker.createAllSegments();
 
@@ -784,14 +793,16 @@
     }
 
     /**
-     * Gets a Shape which corresponds to the highlighted (selected) area
-     * based on two hit locations within the text and extends to the bounds.
+     * Gets a Shape which corresponds to the highlighted (selected) area based
+     * on two hit locations within the text and extends to the bounds.
      * 
-     * @param hit1 the first text hit location.
-     * @param hit2 the second text hit location.
-     * @param bounds the rectangle that the highlighted area should be 
-     * extended or restricted to.
-     * 
+     * @param hit1
+     *            the first text hit location.
+     * @param hit2
+     *            the second text hit location.
+     * @param bounds
+     *            the rectangle that the highlighted area should be extended or
+     *            restricted to.
      * @return a Shape which corresponds to the highlighted (selected) area.
      */
     public Shape getVisualHighlightShape(TextHitInfo hit1, TextHitInfo hit2, Rectangle2D bounds) {
@@ -799,12 +810,13 @@
     }
 
     /**
-     * Gets a Shape which corresponds to the highlighted (selected) area
-     * based on two hit locations within the text.
+     * Gets a Shape which corresponds to the highlighted (selected) area based
+     * on two hit locations within the text.
      * 
-     * @param hit1 the first text hit location.
-     * @param hit2 the second text hit location.
-     * 
+     * @param hit1
+     *            the first text hit location.
+     * @param hit2
+     *            the second text hit location.
      * @return a Shape which corresponds to the highlighted (selected) area.
      */
     public Shape getVisualHighlightShape(TextHitInfo hit1, TextHitInfo hit2) {
@@ -813,23 +825,23 @@
     }
 
     /**
-     * Gets the TextHitInfo for a hit on the opposite side of the 
-     * specified hit's caret.
+     * Gets the TextHitInfo for a hit on the opposite side of the specified
+     * hit's caret.
      * 
-     * @param hitInfo the specified TextHitInfo.
-     * 
-     * @return the TextHitInfo for a hit on the opposite side of the 
-     * specified hit's caret.
+     * @param hitInfo
+     *            the specified TextHitInfo.
+     * @return the TextHitInfo for a hit on the opposite side of the specified
+     *         hit's caret.
      */
     public TextHitInfo getVisualOtherHit(TextHitInfo hitInfo) {
         return caretManager.getVisualOtherHit(hitInfo);
     }
 
     /**
-     * Justifies the text; this method should be overridden
-     * by subclasses.
+     * Justifies the text; this method should be overridden by subclasses.
      * 
-     * @param justificationWidth the width for justification.
+     * @param justificationWidth
+     *            the width for justification.
      */
     protected void handleJustify(float justificationWidth) {
         float justification = breaker.getJustification();
@@ -851,54 +863,54 @@
     }
 
     /**
-     * Returns a TextHitInfo object that gives information on which 
-     * division point (between two characters) is corresponds to a 
-     * hit (such as a mouse click) at the specified coordinates.
+     * Returns a TextHitInfo object that gives information on which division
+     * point (between two characters) is corresponds to a hit (such as a mouse
+     * click) at the specified coordinates.
      * 
-     * @param x the X coordinate in this TextLayout.
-     * @param y the Y coordinate in this TextLayout.
-     * 
-     * TextHitInfo object cooresponding to the given coordinates
-     * within the text.
+     * @param x
+     *            the X coordinate in this TextLayout.
+     * @param y
+     *            the Y coordinate in this TextLayout. TextHitInfo object
+     *            corresponding to the given coordinates within the text.
+     * @return the information about the character at the specified position.
      */
     public TextHitInfo hitTestChar(float x, float y) {
         return hitTestChar(x, y, getBounds());
     }
 
     /**
-     * Returns a TextHitInfo object that gives information on which 
-     * division point (between two characters) is corresponds to a 
-     * hit (such as a mouse click) at the specified coordinates within 
-     * the specified text rectangle.
+     * Returns a TextHitInfo object that gives information on which division
+     * point (between two characters) is corresponds to a hit (such as a mouse
+     * click) at the specified coordinates within the specified text rectangle.
      * 
-     * @param x the X coordinate in this TextLayout.
-     * @param y the Y coordinate in this TextLayout.
-     * @param bounds the bounds of the text area.
-     * 
-     * TextHitInfo object cooresponding to the given coordinates
-     * within the text.
+     * @param x
+     *            the X coordinate in this TextLayout.
+     * @param y
+     *            the Y coordinate in this TextLayout.
+     * @param bounds
+     *            the bounds of the text area. TextHitInfo object corresponding
+     *            to the given coordinates within the text.
+     * @return the information about the character at the specified position.
      */
     public TextHitInfo hitTestChar(float x, float y, Rectangle2D bounds) {
         if (x > bounds.getMaxX()) {
-            return breaker.isLTR() ?
-                    TextHitInfo.trailing(breaker.getCharCount() - 1) : TextHitInfo.leading(0);
+            return breaker.isLTR() ? TextHitInfo.trailing(breaker.getCharCount() - 1) : TextHitInfo
+                    .leading(0);
         }
 
         if (x < bounds.getMinX()) {
-            return breaker.isLTR() ?
-                    TextHitInfo.leading(0) : TextHitInfo.trailing(breaker.getCharCount() - 1);
+            return breaker.isLTR() ? TextHitInfo.leading(0) : TextHitInfo.trailing(breaker
+                    .getCharCount() - 1);
         }
 
         return breaker.hitTest(x, y);
     }
 
     /**
-     * Returns true if this TextLayout has a "left to right" 
-     * direction.
+     * Returns true if this TextLayout has a "left to right" direction.
      * 
-     * @return true if this TextLayout has a "left to right" 
-     * direction, false if this TextLayout has a "right to left" 
-     * direction. 
+     * @return true if this TextLayout has a "left to right" direction, false if
+     *         this TextLayout has a "right to left" direction.
      */
     public boolean isLeftToRight() {
         return breaker.isLTR();
@@ -913,4 +925,3 @@
         return false;
     }
 }
-
diff --git a/awt/java/awt/font/TextMeasurer.java b/awt/java/awt/font/TextMeasurer.java
index 017f3d9..9741f59 100644
--- a/awt/java/awt/font/TextMeasurer.java
+++ b/awt/java/awt/font/TextMeasurer.java
@@ -21,7 +21,6 @@
 
 package java.awt.font;
 
-
 import java.text.AttributedCharacterIterator;
 
 import org.apache.harmony.awt.gl.font.TextMetricsCalculator;
@@ -29,26 +28,38 @@
 
 /**
  * The TextMeasurer class provides utilities for line break operations.
+ * 
+ * @since Android 1.0
  */
 public final class TextMeasurer implements Cloneable {
-    
-    /** The aci. */
+
+    /**
+     * The aci.
+     */
     AttributedCharacterIterator aci;
-    
-    /** The frc. */
+
+    /**
+     * The frc.
+     */
     FontRenderContext frc;
-    
-    /** The breaker. */
+
+    /**
+     * The breaker.
+     */
     TextRunBreaker breaker = null;
-    
-    /** The tmc. */
+
+    /**
+     * The tmc.
+     */
     TextMetricsCalculator tmc = null;
 
     /**
      * Instantiates a new text measurer from the specified text.
      * 
-     * @param text the source text.
-     * @param frc the FontRenderContext.
+     * @param text
+     *            the source text.
+     * @param frc
+     *            the FontRenderContext.
      */
     public TextMeasurer(AttributedCharacterIterator text, FontRenderContext frc) {
         this.aci = text;
@@ -58,17 +69,19 @@
     }
 
     /**
-     * Replaces the current text with the new text, inserting a break
-     * character at the specified insert position.  
+     * Replaces the current text with the new text, inserting a break character
+     * at the specified insert position.
      * 
-     * @param newParagraph the new paragraph text. 
-     * @param insertPos the position in the text where the character is inserted. 
+     * @param newParagraph
+     *            the new paragraph text.
+     * @param insertPos
+     *            the position in the text where the character is inserted.
      */
     public void insertChar(AttributedCharacterIterator newParagraph, int insertPos) {
         AttributedCharacterIterator oldAci = aci;
         aci = newParagraph;
-        if ((oldAci.getEndIndex() - oldAci.getBeginIndex()) -
-           (aci.getEndIndex() - aci.getBeginIndex()) != -1) {
+        if ((oldAci.getEndIndex() - oldAci.getBeginIndex())
+                - (aci.getEndIndex() - aci.getBeginIndex()) != -1) {
             breaker = new TextRunBreaker(aci, this.frc);
             tmc = new TextMetricsCalculator(breaker);
         } else {
@@ -77,17 +90,19 @@
     }
 
     /**
-     * Replaces the current text with the new text and deletes a
-     * character at the specified position.  
+     * Replaces the current text with the new text and deletes a character at
+     * the specified position.
      * 
-     * @param newParagraph the paragraph text after deletion. 
-     * @param deletePos the position in the text where the character is removed. 
+     * @param newParagraph
+     *            the paragraph text after deletion.
+     * @param deletePos
+     *            the position in the text where the character is removed.
      */
     public void deleteChar(AttributedCharacterIterator newParagraph, int deletePos) {
         AttributedCharacterIterator oldAci = aci;
         aci = newParagraph;
-        if ((oldAci.getEndIndex() - oldAci.getBeginIndex()) -
-           (aci.getEndIndex() - aci.getBeginIndex()) != 1) {
+        if ((oldAci.getEndIndex() - oldAci.getBeginIndex())
+                - (aci.getEndIndex() - aci.getBeginIndex()) != 1) {
             breaker = new TextRunBreaker(aci, this.frc);
             tmc = new TextMetricsCalculator(breaker);
         } else {
@@ -102,39 +117,39 @@
      */
     @Override
     protected Object clone() {
-        return new TextMeasurer((AttributedCharacterIterator) aci.clone(), frc);
+        return new TextMeasurer((AttributedCharacterIterator)aci.clone(), frc);
     }
 
     /**
      * Returns a TextLayout of the specified character range.
      * 
-     * @param start the index of the first character.
-     * @param limit the index after the last character. 
-     * 
-     * @return a TextLayout for the characters beginning at "start" up 
-     * to "end".
+     * @param start
+     *            the index of the first character.
+     * @param limit
+     *            the index after the last character.
+     * @return a TextLayout for the characters beginning at "start" up to "end".
      */
     public TextLayout getLayout(int start, int limit) {
         breaker.pushSegments(start - aci.getBeginIndex(), limit - aci.getBeginIndex());
 
         breaker.createAllSegments();
-        TextLayout layout = new TextLayout((TextRunBreaker) breaker.clone());
+        TextLayout layout = new TextLayout((TextRunBreaker)breaker.clone());
 
         breaker.popSegments();
         return layout;
     }
 
     /**
-     * Returns the graphical width of a line beginning at "start" 
-     * parameter and including characters up to "end" parameter. 
-     * "start" and "end" are absolute indices, not relative to the 
-     * "start" of the paragraph.
+     * Returns the graphical width of a line beginning at "start" parameter and
+     * including characters up to "end" parameter. "start" and "end" are
+     * absolute indices, not relative to the "start" of the paragraph.
      * 
-     * @param start the character index at which to start measuring.
-     * @param end the character index at which to stop measuring.
-     * 
-     * @return the graphical width of a line beginning at "start"  
-     * and including characters up to "end".
+     * @param start
+     *            the character index at which to start measuring.
+     * @param end
+     *            the character index at which to stop measuring.
+     * @return the graphical width of a line beginning at "start" and including
+     *         characters up to "end".
      */
     public float getAdvanceBetween(int start, int end) {
         breaker.pushSegments(start - aci.getBeginIndex(), end - aci.getBeginIndex());
@@ -147,21 +162,21 @@
     }
 
     /**
-     * Returns the index of the first character which is not fit on 
-     * a line beginning at start and possible measuring up to maxAdvance 
-     * in graphical width.
-     * 
-     * @param start he character index at which to start measuring. 
-     * @param maxAdvance the graphical width in which the line must fit. 
-     * 
-     * @return the index after the last character that is fit on a line 
-     * beginning at start, which is not longer than maxAdvance in graphical
+     * Returns the index of the first character which is not fit on a line
+     * beginning at start and possible measuring up to maxAdvance in graphical
      * width.
+     * 
+     * @param start
+     *            he character index at which to start measuring.
+     * @param maxAdvance
+     *            the graphical width in which the line must fit.
+     * @return the index after the last character that is fit on a line
+     *         beginning at start, which is not longer than maxAdvance in
+     *         graphical width.
      */
     public int getLineBreakIndex(int start, float maxAdvance) {
         breaker.createAllSegments();
-        return breaker.getLineBreakIndex(
-                start - aci.getBeginIndex(), maxAdvance) + aci.getBeginIndex();
+        return breaker.getLineBreakIndex(start - aci.getBeginIndex(), maxAdvance)
+                + aci.getBeginIndex();
     }
 }
-
diff --git a/awt/java/awt/font/TransformAttribute.java b/awt/java/awt/font/TransformAttribute.java
index 7c9b0bd..ff2caa2 100644
--- a/awt/java/awt/font/TransformAttribute.java
+++ b/awt/java/awt/font/TransformAttribute.java
@@ -18,6 +18,7 @@
  * @author Ilya S. Okomin
  * @version $Revision$
  */
+
 package java.awt.font;
 
 import java.awt.geom.AffineTransform;
@@ -28,28 +29,34 @@
 /**
  * The TransformAttribute class is a wrapper for the AffineTransform class in
  * order to use it as attribute.
+ * 
+ * @since Android 1.0
  */
 public final class TransformAttribute implements Serializable {
-    
-    /** The Constant serialVersionUID. */
+
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = 3356247357827709530L;
 
     // affine transform of this TransformAttribute instance
-    /** The transform. */
+    /**
+     * The transform.
+     */
     private AffineTransform fTransform;
 
     /**
-     * Instantiates a new TransformAttribute from the specified
-     * AffineTransform.
+     * Instantiates a new TransformAttribute from the specified AffineTransform.
      * 
-     * @param transform the AffineTransform to be wrapped.
+     * @param transform
+     *            the AffineTransform to be wrapped.
      */
     public TransformAttribute(AffineTransform transform) {
         if (transform == null) {
             // awt.94=transform can not be null
             throw new IllegalArgumentException(Messages.getString("awt.94")); //$NON-NLS-1$
         }
-        if (!transform.isIdentity()){
+        if (!transform.isIdentity()) {
             this.fTransform = new AffineTransform(transform);
         }
     }
@@ -60,7 +67,7 @@
      * @return the initial AffineTransform which is wrapped.
      */
     public AffineTransform getTransform() {
-        if (fTransform != null){
+        if (fTransform != null) {
             return new AffineTransform(fTransform);
         }
         return new AffineTransform();
@@ -69,12 +76,11 @@
     /**
      * Checks if this transform is an identity transform.
      * 
-     * @return true, if this transform is an identity transform,
-     * false otherwise.
+     * @return true, if this transform is an identity transform, false
+     *         otherwise.
      */
     public boolean isIdentity() {
         return (fTransform == null);
     }
 
 }
-
diff --git a/awt/java/awt/font/package.html b/awt/java/awt/font/package.html
new file mode 100644
index 0000000..788dcc0
--- /dev/null
+++ b/awt/java/awt/font/package.html
@@ -0,0 +1,8 @@
+<html>
+  <body>
+    <p>
+      This package contains classes to support the representation of different types of fonts for example TrueType fonts.
+    </p>
+    @since Android 1.0
+  </body>
+</html>
diff --git a/awt/java/awt/geom/AffineTransform.java b/awt/java/awt/geom/AffineTransform.java
index 5fd3934..8a6938c 100644
--- a/awt/java/awt/geom/AffineTransform.java
+++ b/awt/java/awt/geom/AffineTransform.java
@@ -18,6 +18,7 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt.geom;
 
 import java.awt.Shape;
@@ -28,76 +29,118 @@
 import org.apache.harmony.misc.HashCode;
 
 /**
- * The Class AffineTransform represents a linear transformation 
- * (rotation, scaling, or shear) followed by a translation that 
- * acts on a coordinate space. It preserves colinearity of points 
- * and ratios of distances between collinear points: so if A, B, 
- * and C are on a line, then after the space has been transformed 
- * via the affine transform, the images of the three points will 
- * still be on a line, and the ratio of the distance from A to B
- * with the distance from B to C will be the same as the corresponding
- * ratio in the image space.
+ * The Class AffineTransform represents a linear transformation (rotation,
+ * scaling, or shear) followed by a translation that acts on a coordinate space.
+ * It preserves collinearity of points and ratios of distances between collinear
+ * points: so if A, B, and C are on a line, then after the space has been
+ * transformed via the affine transform, the images of the three points will
+ * still be on a line, and the ratio of the distance from A to B with the
+ * distance from B to C will be the same as the corresponding ratio in the image
+ * space.
+ * 
+ * @since Android 1.0
  */
 public class AffineTransform implements Cloneable, Serializable {
 
-    /** The Constant serialVersionUID. */
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = 1330973210523860834L;
 
-    /** The Constant TYPE_IDENTITY. */
+    /**
+     * The Constant TYPE_IDENTITY.
+     */
     public static final int TYPE_IDENTITY = 0;
-    
-    /** The Constant TYPE_TRANSLATION. */
+
+    /**
+     * The Constant TYPE_TRANSLATION.
+     */
     public static final int TYPE_TRANSLATION = 1;
-    
-    /** The Constant TYPE_UNIFORM_SCALE. */
+
+    /**
+     * The Constant TYPE_UNIFORM_SCALE.
+     */
     public static final int TYPE_UNIFORM_SCALE = 2;
-    
-    /** The Constant TYPE_GENERAL_SCALE. */
+
+    /**
+     * The Constant TYPE_GENERAL_SCALE.
+     */
     public static final int TYPE_GENERAL_SCALE = 4;
-    
-    /** The Constant TYPE_QUADRANT_ROTATION. */
+
+    /**
+     * The Constant TYPE_QUADRANT_ROTATION.
+     */
     public static final int TYPE_QUADRANT_ROTATION = 8;
-    
-    /** The Constant TYPE_GENERAL_ROTATION. */
+
+    /**
+     * The Constant TYPE_GENERAL_ROTATION.
+     */
     public static final int TYPE_GENERAL_ROTATION = 16;
-    
-    /** The Constant TYPE_GENERAL_TRANSFORM. */
+
+    /**
+     * The Constant TYPE_GENERAL_TRANSFORM.
+     */
     public static final int TYPE_GENERAL_TRANSFORM = 32;
-    
-    /** The Constant TYPE_FLIP. */
+
+    /**
+     * The Constant TYPE_FLIP.
+     */
     public static final int TYPE_FLIP = 64;
-    
-    /** The Constant TYPE_MASK_SCALE. */
+
+    /**
+     * The Constant TYPE_MASK_SCALE.
+     */
     public static final int TYPE_MASK_SCALE = TYPE_UNIFORM_SCALE | TYPE_GENERAL_SCALE;
-    
-    /** The Constant TYPE_MASK_ROTATION. */
+
+    /**
+     * The Constant TYPE_MASK_ROTATION.
+     */
     public static final int TYPE_MASK_ROTATION = TYPE_QUADRANT_ROTATION | TYPE_GENERAL_ROTATION;
 
-    /** The <code>TYPE_UNKNOWN</code> is an initial type value. */
+    /**
+     * The <code>TYPE_UNKNOWN</code> is an initial type value.
+     */
     static final int TYPE_UNKNOWN = -1;
-    
-    /** The min value equivalent to zero. If absolute value less then ZERO it considered as zero. */
+
+    /**
+     * The min value equivalent to zero. If absolute value less then ZERO it
+     * considered as zero.
+     */
     static final double ZERO = 1E-10;
-   
-    /** The values of transformation matrix. */
+
+    /**
+     * The values of transformation matrix.
+     */
     double m00;
-    
-    /** The m10. */
+
+    /**
+     * The m10.
+     */
     double m10;
-    
-    /** The m01. */
+
+    /**
+     * The m01.
+     */
     double m01;
-    
-    /** The m11. */
+
+    /**
+     * The m11.
+     */
     double m11;
-    
-    /** The m02. */
+
+    /**
+     * The m02.
+     */
     double m02;
-    
-    /** The m12. */
+
+    /**
+     * The m12.
+     */
     double m12;
 
-    /** The transformation <code>type</code>. */
+    /**
+     * The transformation <code>type</code>.
+     */
     transient int type;
 
     /**
@@ -111,10 +154,11 @@
     }
 
     /**
-     * Instantiates a new affine transform that has the same data as
-     * the given AffineTransform.
+     * Instantiates a new affine transform that has the same data as the given
+     * AffineTransform.
      * 
-     * @param t the transform to copy.
+     * @param t
+     *            the transform to copy.
      */
     public AffineTransform(AffineTransform t) {
         this.type = t.type;
@@ -128,15 +172,21 @@
 
     /**
      * Instantiates a new affine transform by specifying the values of the 2x3
-     * transformation matrix as floats. The type is set to the default
-     * type: <code>TYPE_UNKNOWN</code>
+     * transformation matrix as floats. The type is set to the default type:
+     * <code>TYPE_UNKNOWN</code>
      * 
-     * @param m00 the m00 entry in the transformation matrix.
-     * @param m10 the m10 entry in the transformation matrix.
-     * @param m01 the m01 entry in the transformation matrix.
-     * @param m11 the m11 entry in the transformation matrix.
-     * @param m02 the m02 entry in the transformation matrix.
-     * @param m12 the m12 entry in the transformation matrix.
+     * @param m00
+     *            the m00 entry in the transformation matrix.
+     * @param m10
+     *            the m10 entry in the transformation matrix.
+     * @param m01
+     *            the m01 entry in the transformation matrix.
+     * @param m11
+     *            the m11 entry in the transformation matrix.
+     * @param m02
+     *            the m02 entry in the transformation matrix.
+     * @param m12
+     *            the m12 entry in the transformation matrix.
      */
     public AffineTransform(float m00, float m10, float m01, float m11, float m02, float m12) {
         this.type = TYPE_UNKNOWN;
@@ -150,15 +200,21 @@
 
     /**
      * Instantiates a new affine transform by specifying the values of the 2x3
-     * transformation matrix as doubles. The type is set to the default
-     * type: <code>TYPE_UNKNOWN</code>
+     * transformation matrix as doubles. The type is set to the default type:
+     * <code>TYPE_UNKNOWN</code>
      * 
-     * @param m00 the m00 entry in the transformation matrix.
-     * @param m10 the m10 entry in the transformation matrix.
-     * @param m01 the m01 entry in the transformation matrix.
-     * @param m11 the m11 entry in the transformation matrix.
-     * @param m02 the m02 entry in the transformation matrix.
-     * @param m12 the m12 entry in the transformation matrix.
+     * @param m00
+     *            the m00 entry in the transformation matrix.
+     * @param m10
+     *            the m10 entry in the transformation matrix.
+     * @param m01
+     *            the m01 entry in the transformation matrix.
+     * @param m11
+     *            the m11 entry in the transformation matrix.
+     * @param m02
+     *            the m02 entry in the transformation matrix.
+     * @param m12
+     *            the m12 entry in the transformation matrix.
      */
     public AffineTransform(double m00, double m10, double m01, double m11, double m02, double m12) {
         this.type = TYPE_UNKNOWN;
@@ -171,20 +227,20 @@
     }
 
     /**
-     * Instantiates a new affine transform by reading the values of the 
-     * transformation matrix from an array of floats. The mapping from the
-     * array to the matrix starts with <code>matrix[0]</code> giving the 
-     * top-left entry of the matrix and 
-     * proceeds with the usual left-to-right and top-down ordering.
+     * Instantiates a new affine transform by reading the values of the
+     * transformation matrix from an array of floats. The mapping from the array
+     * to the matrix starts with <code>matrix[0]</code> giving the top-left
+     * entry of the matrix and proceeds with the usual left-to-right and
+     * top-down ordering.
      * <p>
-     * If the array has only four entries, then the two entries of the 
-     * last row of the transformation matrix default to zero.
+     * If the array has only four entries, then the two entries of the last row
+     * of the transformation matrix default to zero.
      * 
-     * @param matrix the array of four or six floats giving the values 
-     * of the matrix.
-     * 
-     * @throws ArrayIndexOutOfBoundsException if the size of the array
-     * is 0, 1, 2, 3, or 5.
+     * @param matrix
+     *            the array of four or six floats giving the values of the
+     *            matrix.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if the size of the array is 0, 1, 2, 3, or 5.
      */
     public AffineTransform(float[] matrix) {
         this.type = TYPE_UNKNOWN;
@@ -199,20 +255,20 @@
     }
 
     /**
-     * Instantiates a new affine transform by reading the values of the 
+     * Instantiates a new affine transform by reading the values of the
      * transformation matrix from an array of doubles. The mapping from the
-     * array to the matrix starts with <code>matrix[0]</code> giving the 
-     * top-left entry of the matrix and 
-     * proceeds with the usual left-to-right and top-down ordering.
+     * array to the matrix starts with <code>matrix[0]</code> giving the
+     * top-left entry of the matrix and proceeds with the usual left-to-right
+     * and top-down ordering.
      * <p>
-     * If the array has only four entries, then the two entries of the 
-     * last row of the transformation matrix default to zero.
+     * If the array has only four entries, then the two entries of the last row
+     * of the transformation matrix default to zero.
      * 
-     * @param matrix the array of four or six doubles giving the values 
-     * of the matrix.
-     * 
-     * @throws ArrayIndexOutOfBoundsException if the size of the array
-     * is 0, 1, 2, 3, or 5.
+     * @param matrix
+     *            the array of four or six doubles giving the values of the
+     *            matrix.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if the size of the array is 0, 1, 2, 3, or 5.
      */
     public AffineTransform(double[] matrix) {
         this.type = TYPE_UNKNOWN;
@@ -226,27 +282,26 @@
         }
     }
 
-
     /**
      * Returns type of the affine transformation.
      * <p>
-     * The type is computed as follows: Label the entries of the 
-     * transformation matrix as three rows (m00, m01), (m10, m11), and
-     * (m02, m12). Then if the original basis vectors are (1, 0) and (0, 1), 
-     * the new basis vectors after transformation are given by (m00, m01) 
-     * and (m10, m11), and the translation vector is (m02, m12).
+     * The type is computed as follows: Label the entries of the transformation
+     * matrix as three rows (m00, m01), (m10, m11), and (m02, m12). Then if the
+     * original basis vectors are (1, 0) and (0, 1), the new basis vectors after
+     * transformation are given by (m00, m01) and (m10, m11), and the
+     * translation vector is (m02, m12).
      * <p>
-     * The types are classified as follows: <br/> 
-     *   TYPE_IDENTITY - no change<br/>
-     *   TYPE_TRANSLATION - The translation vector isn't zero<br/>
-     *   TYPE_UNIFORM_SCALE - The new basis vectors have equal length<br/>
-     *   TYPE_GENERAL_SCALE - The new basis vectors dont' have equal length<br/>
-     *   TYPE_FLIP - The new basis vector orientation differs from the original one<br/>
-     *   TYPE_QUADRANT_ROTATION - The new basis is a rotation of the original by 90, 180, 270, or 360 degrees<br/>   
-     *   TYPE_GENERAL_ROTATION - The new basis is a rotation of the original by an arbitrary angle<br/>
-     *   TYPE_GENERAL_TRANSFORM - The transformation can't be inverted.<br/>
-     *   <p>
-     * Note that multiple types are possible, thus the types can be combined 
+     * The types are classified as follows: <br/> TYPE_IDENTITY - no change<br/>
+     * TYPE_TRANSLATION - The translation vector isn't zero<br/>
+     * TYPE_UNIFORM_SCALE - The new basis vectors have equal length<br/>
+     * TYPE_GENERAL_SCALE - The new basis vectors dont' have equal length<br/>
+     * TYPE_FLIP - The new basis vector orientation differs from the original
+     * one<br/> TYPE_QUADRANT_ROTATION - The new basis is a rotation of the
+     * original by 90, 180, 270, or 360 degrees<br/> TYPE_GENERAL_ROTATION - The
+     * new basis is a rotation of the original by an arbitrary angle<br/>
+     * TYPE_GENERAL_TRANSFORM - The transformation can't be inverted.<br/>
+     * <p>
+     * Note that multiple types are possible, thus the types can be combined
      * using bitwise combinations.
      * 
      * @return the type of the Affine Transform.
@@ -265,11 +320,10 @@
 
         if (m02 != 0.0 || m12 != 0.0) {
             type |= TYPE_TRANSLATION;
-        } else
-            if (m00 == 1.0 && m11 == 1.0 && m01 == 0.0 && m10 == 0.0) {
-                type = TYPE_IDENTITY;
-                return type;
-            }
+        } else if (m00 == 1.0 && m11 == 1.0 && m01 == 0.0 && m10 == 0.0) {
+            type = TYPE_IDENTITY;
+            return type;
+        }
 
         if (m00 * m11 - m01 * m10 < 0.0) {
             type |= TYPE_FLIP;
@@ -279,26 +333,22 @@
         double dy = m01 * m01 + m11 * m11;
         if (dx != dy) {
             type |= TYPE_GENERAL_SCALE;
-        } else
-            if (dx != 1.0) {
-                type |= TYPE_UNIFORM_SCALE;
-            }
+        } else if (dx != 1.0) {
+            type |= TYPE_UNIFORM_SCALE;
+        }
 
-        if ((m00 == 0.0 && m11 == 0.0) ||
-            (m10 == 0.0 && m01 == 0.0 && (m00 < 0.0 || m11 < 0.0)))
-        {
+        if ((m00 == 0.0 && m11 == 0.0) || (m10 == 0.0 && m01 == 0.0 && (m00 < 0.0 || m11 < 0.0))) {
             type |= TYPE_QUADRANT_ROTATION;
-        } else
-            if (m01 != 0.0 || m10 != 0.0) {
-                type |= TYPE_GENERAL_ROTATION;
-            }
+        } else if (m01 != 0.0 || m10 != 0.0) {
+            type |= TYPE_GENERAL_ROTATION;
+        }
 
         return type;
     }
 
     /**
-     * Gets the scale x entry of the transformation matrix
-     * (the upper left matrix entry).
+     * Gets the scale x entry of the transformation matrix (the upper left
+     * matrix entry).
      * 
      * @return the scale x value.
      */
@@ -307,8 +357,8 @@
     }
 
     /**
-     * Gets the scale y entry of the transformation matrix
-     * (the lower right entry of the linear transformation).
+     * Gets the scale y entry of the transformation matrix (the lower right
+     * entry of the linear transformation).
      * 
      * @return the scale y value.
      */
@@ -317,8 +367,8 @@
     }
 
     /**
-     * Gets the shear x entry of the transformation matrix
-     * (the upper right entry of the linear transformation).
+     * Gets the shear x entry of the transformation matrix (the upper right
+     * entry of the linear transformation).
      * 
      * @return the shear x value.
      */
@@ -327,8 +377,8 @@
     }
 
     /**
-     * Gets the shear y entry of the transformation matrix
-     * (the lower left entry of the linear transformation).
+     * Gets the shear y entry of the transformation matrix (the lower left entry
+     * of the linear transformation).
      * 
      * @return the shear y value.
      */
@@ -364,15 +414,15 @@
     }
 
     /**
-     * Writes the values of the transformation matrix into the given 
-     * array of doubles. If the array has length 4, only the linear
-     * transformation part will be written into it. If it has length 
-     * greater than 4, the translation vector will be included as well.
+     * Writes the values of the transformation matrix into the given array of
+     * doubles. If the array has length 4, only the linear transformation part
+     * will be written into it. If it has length greater than 4, the translation
+     * vector will be included as well.
      * 
-     * @param matrix the array to fill with the values of the matrix.
-     * 
-     * @throws ArrayIndexOutOfBoundsException if the size of the array
-     * is 0, 1, 2, 3, or 5.
+     * @param matrix
+     *            the array to fill with the values of the matrix.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if the size of the array is 0, 1, 2, 3, or 5.
      */
     public void getMatrix(double[] matrix) {
         matrix[0] = m00;
@@ -397,12 +447,18 @@
     /**
      * Sets the transform in terms of a list of double values.
      * 
-     * @param m00 the m00 coordinate of the transformation matrix.
-     * @param m10 the m10 coordinate of the transformation matrix.
-     * @param m01 the m01 coordinate of the transformation matrix.
-     * @param m11 the m11 coordinate of the transformation matrix.
-     * @param m02 the m02 coordinate of the transformation matrix.
-     * @param m12 the m12 coordinate of the transformation matrix.
+     * @param m00
+     *            the m00 coordinate of the transformation matrix.
+     * @param m10
+     *            the m10 coordinate of the transformation matrix.
+     * @param m01
+     *            the m01 coordinate of the transformation matrix.
+     * @param m11
+     *            the m11 coordinate of the transformation matrix.
+     * @param m02
+     *            the m02 coordinate of the transformation matrix.
+     * @param m12
+     *            the m12 coordinate of the transformation matrix.
      */
     public void setTransform(double m00, double m10, double m01, double m11, double m02, double m12) {
         this.type = TYPE_UNKNOWN;
@@ -415,10 +471,11 @@
     }
 
     /**
-     * Sets the transform's data to match the data of the transform 
-     * sent as a parameter.
+     * Sets the transform's data to match the data of the transform sent as a
+     * parameter.
      * 
-     * @param t the transform that gives the new values.
+     * @param t
+     *            the transform that gives the new values.
      */
     public void setTransform(AffineTransform t) {
         type = t.type;
@@ -435,15 +492,16 @@
     }
 
     /**
-     * Sets the transformation to a translation alone.
-     * Sets the linear part of the transformation to identity 
-     * and the translation vector to the values sent as parameters.
-     * Sets the type to <code>TYPE_IDENTITY</code>
-     * if the resulting AffineTransformation is the identity 
-     * transformation, otherwise sets it to <code>TYPE_TRANSLATION</code>.
+     * Sets the transformation to a translation alone. Sets the linear part of
+     * the transformation to identity and the translation vector to the values
+     * sent as parameters. Sets the type to <code>TYPE_IDENTITY</code> if the
+     * resulting AffineTransformation is the identity transformation, otherwise
+     * sets it to <code>TYPE_TRANSLATION</code>.
      * 
-     * @param mx the distance to translate in the x direction.
-     * @param my the distance to translate in the y direction.
+     * @param mx
+     *            the distance to translate in the x direction.
+     * @param my
+     *            the distance to translate in the y direction.
      */
     public void setToTranslation(double mx, double my) {
         m00 = m11 = 1.0;
@@ -458,14 +516,15 @@
     }
 
     /**
-     * Sets the transformation to being a scale alone, eliminating 
-     * rotation, shear, and translation elements.
-     * Sets the type to <code>TYPE_IDENTITY</code>
-     * if the resulting AffineTransformation is the identity 
-     * transformation, otherwise sets it to <code>TYPE_UNKNOWN</code>.
+     * Sets the transformation to being a scale alone, eliminating rotation,
+     * shear, and translation elements. Sets the type to
+     * <code>TYPE_IDENTITY</code> if the resulting AffineTransformation is the
+     * identity transformation, otherwise sets it to <code>TYPE_UNKNOWN</code>.
      * 
-     * @param scx the scaling factor in the x direction.
-     * @param scy the scaling factor in the y direction.
+     * @param scx
+     *            the scaling factor in the x direction.
+     * @param scy
+     *            the scaling factor in the y direction.
      */
     public void setToScale(double scx, double scy) {
         m00 = scx;
@@ -479,14 +538,15 @@
     }
 
     /**
-     * Sets the transformation to being a shear alone, eliminating 
-     * rotation, scaling, and translation elements.
-     * Sets the type to <code>TYPE_IDENTITY</code>
-     * if the resulting AffineTransformation is the identity 
-     * transformation, otherwise sets it to <code>TYPE_UNKNOWN</code>.
+     * Sets the transformation to being a shear alone, eliminating rotation,
+     * scaling, and translation elements. Sets the type to
+     * <code>TYPE_IDENTITY</code> if the resulting AffineTransformation is the
+     * identity transformation, otherwise sets it to <code>TYPE_UNKNOWN</code>.
      * 
-     * @param shx the shearing factor in the x direction.
-     * @param shy the shearing factor in the y direction.
+     * @param shx
+     *            the shearing factor in the x direction.
+     * @param shy
+     *            the shearing factor in the y direction.
      */
     public void setToShear(double shx, double shy) {
         m00 = m11 = 1.0;
@@ -501,13 +561,13 @@
     }
 
     /**
-     * Sets the transformation to being a rotation alone, eliminating 
-     * shearing, scaling, and translation elements.
-     * Sets the type to <code>TYPE_IDENTITY</code>
-     * if the resulting AffineTransformation is the identity 
-     * transformation, otherwise sets it to <code>TYPE_UNKNOWN</code>.
+     * Sets the transformation to being a rotation alone, eliminating shearing,
+     * scaling, and translation elements. Sets the type to
+     * <code>TYPE_IDENTITY</code> if the resulting AffineTransformation is the
+     * identity transformation, otherwise sets it to <code>TYPE_UNKNOWN</code>.
      * 
-     * @param angle the angle of rotation in radians.
+     * @param angle
+     *            the angle of rotation in radians.
      */
     public void setToRotation(double angle) {
         double sin = Math.sin(angle);
@@ -515,11 +575,10 @@
         if (Math.abs(cos) < ZERO) {
             cos = 0.0;
             sin = sin > 0.0 ? 1.0 : -1.0;
-        } else
-            if (Math.abs(sin) < ZERO) {
-                sin = 0.0;
-                cos = cos > 0.0 ? 1.0 : -1.0;
-            }
+        } else if (Math.abs(sin) < ZERO) {
+            sin = 0.0;
+            cos = cos > 0.0 ? 1.0 : -1.0;
+        }
         m00 = m11 = cos;
         m01 = -sin;
         m10 = sin;
@@ -528,13 +587,15 @@
     }
 
     /**
-     * Sets the transformation to being a rotation followed by a 
-     * translation. 
+     * Sets the transformation to being a rotation followed by a translation.
      * Sets the type to <code>TYPE_UNKNOWN</code>.
      * 
-     * @param angle the angle of rotation in radians.
-     * @param px the distance to translate in the x direction.
-     * @param py the distance to translate in the y direction.
+     * @param angle
+     *            the angle of rotation in radians.
+     * @param px
+     *            the distance to translate in the x direction.
+     * @param py
+     *            the distance to translate in the y direction.
      */
     public void setToRotation(double angle, double px, double py) {
         setToRotation(angle);
@@ -544,15 +605,16 @@
     }
 
     /**
-     * Creates a new AffineTransformation that is a translation alone
-     * with the translation vector given by the values sent as parameters.
-     * The new transformation's type is <code>TYPE_IDENTITY</code>
-     * if the AffineTransformation is the identity 
-     * transformation, otherwise it's <code>TYPE_TRANSLATION</code>.
+     * Creates a new AffineTransformation that is a translation alone with the
+     * translation vector given by the values sent as parameters. The new
+     * transformation's type is <code>TYPE_IDENTITY</code> if the
+     * AffineTransformation is the identity transformation, otherwise it's
+     * <code>TYPE_TRANSLATION</code>.
      * 
-     * @param mx the distance to translate in the x direction.
-     * @param my the distance to translate in the y direction.
-
+     * @param mx
+     *            the distance to translate in the x direction.
+     * @param my
+     *            the distance to translate in the y direction.
      * @return the new AffineTransformation.
      */
     public static AffineTransform getTranslateInstance(double mx, double my) {
@@ -562,14 +624,15 @@
     }
 
     /**
-     * Creates a new AffineTransformation that is a scale alone.
-     * The new transformation's type is <code>TYPE_IDENTITY</code>
-     * if the AffineTransformation is the identity 
-     * transformation, otherwise it's <code>TYPE_UNKNOWN</code>.
+     * Creates a new AffineTransformation that is a scale alone. The new
+     * transformation's type is <code>TYPE_IDENTITY</code> if the
+     * AffineTransformation is the identity transformation, otherwise it's
+     * <code>TYPE_UNKNOWN</code>.
      * 
-     * @param scx the scaling factor in the x direction.
-     * @param scY the scaling factor in the y direction.
-     * 
+     * @param scx
+     *            the scaling factor in the x direction.
+     * @param scY
+     *            the scaling factor in the y direction.
      * @return the new AffineTransformation.
      */
     public static AffineTransform getScaleInstance(double scx, double scY) {
@@ -579,14 +642,15 @@
     }
 
     /**
-     * Creates a new AffineTransformation that is a shear alone.
-     * The new transformation's type is <code>TYPE_IDENTITY</code>
-     * if the AffineTransformation is the identity 
-     * transformation, otherwise it's <code>TYPE_UNKNOWN</code>.
+     * Creates a new AffineTransformation that is a shear alone. The new
+     * transformation's type is <code>TYPE_IDENTITY</code> if the
+     * AffineTransformation is the identity transformation, otherwise it's
+     * <code>TYPE_UNKNOWN</code>.
      * 
-     * @param shx the shearing factor in the x direction.
-     * @param shy the shearing factor in the y direction.
-     * 
+     * @param shx
+     *            the shearing factor in the x direction.
+     * @param shy
+     *            the shearing factor in the y direction.
      * @return the new AffineTransformation.
      */
     public static AffineTransform getShearInstance(double shx, double shy) {
@@ -596,13 +660,13 @@
     }
 
     /**
-     * Creates a new AffineTransformation that is a rotation alone.
-     * The new transformation's type is <code>TYPE_IDENTITY</code>
-     * if the AffineTransformation is the identity 
-     * transformation, otherwise it's <code>TYPE_UNKNOWN</code>.
+     * Creates a new AffineTransformation that is a rotation alone. The new
+     * transformation's type is <code>TYPE_IDENTITY</code> if the
+     * AffineTransformation is the identity transformation, otherwise it's
+     * <code>TYPE_UNKNOWN</code>.
      * 
-     * @param angle the angle of rotation in radians.
-     * 
+     * @param angle
+     *            the angle of rotation in radians.
      * @return the new AffineTransformation.
      */
     public static AffineTransform getRotateInstance(double angle) {
@@ -612,14 +676,15 @@
     }
 
     /**
-     * Creates a new AffineTransformation that is a rotation followed by a 
-     * translation. 
-     * Sets the type to <code>TYPE_UNKNOWN</code>.
+     * Creates a new AffineTransformation that is a rotation followed by a
+     * translation. Sets the type to <code>TYPE_UNKNOWN</code>.
      * 
-     * @param angle the angle of rotation in radians.
-     * @param x the distance to translate in the x direction.
-     * @param y the distance to translate in the y direction.
-     * 
+     * @param angle
+     *            the angle of rotation in radians.
+     * @param x
+     *            the distance to translate in the x direction.
+     * @param y
+     *            the distance to translate in the y direction.
      * @return the new AffineTransformation.
      */
     public static AffineTransform getRotateInstance(double angle, double x, double y) {
@@ -631,8 +696,10 @@
     /**
      * Applies a translation to this AffineTransformation.
      * 
-     * @param mx the distance to translate in the x direction.
-     * @param my the distance to translate in the y direction.
+     * @param mx
+     *            the distance to translate in the x direction.
+     * @param my
+     *            the distance to translate in the y direction.
      */
     public void translate(double mx, double my) {
         concatenate(AffineTransform.getTranslateInstance(mx, my));
@@ -641,8 +708,10 @@
     /**
      * Applies a scaling transformation to this AffineTransformation.
      * 
-     * @param scx the scaling factor in the x direction.
-     * @param scy the scaling factor in the y direction.
+     * @param scx
+     *            the scaling factor in the x direction.
+     * @param scy
+     *            the scaling factor in the y direction.
      */
     public void scale(double scx, double scy) {
         concatenate(AffineTransform.getScaleInstance(scx, scy));
@@ -651,8 +720,10 @@
     /**
      * Applies a shearing transformation to this AffineTransformation.
      * 
-     * @param shx the shearing factor in the x direction.
-     * @param shy the shearing factor in the y direction.
+     * @param shx
+     *            the shearing factor in the x direction.
+     * @param shy
+     *            the shearing factor in the y direction.
      */
     public void shear(double shx, double shy) {
         concatenate(AffineTransform.getShearInstance(shx, shy));
@@ -661,19 +732,23 @@
     /**
      * Applies a rotation transformation to this AffineTransformation.
      * 
-     * @param angle the angle of rotation in radians.
+     * @param angle
+     *            the angle of rotation in radians.
      */
     public void rotate(double angle) {
         concatenate(AffineTransform.getRotateInstance(angle));
     }
 
     /**
-     * Applies a rotation and translation transformation to this 
+     * Applies a rotation and translation transformation to this
      * AffineTransformation.
      * 
-     * @param angle the angle of rotation in radians.
-     * @param px the distance to translate in the x direction.
-     * @param py the distance to translate in the y direction.
+     * @param angle
+     *            the angle of rotation in radians.
+     * @param px
+     *            the distance to translate in the x direction.
+     * @param py
+     *            the distance to translate in the y direction.
      */
     public void rotate(double angle, double px, double py) {
         concatenate(AffineTransform.getRotateInstance(angle, px, py));
@@ -682,36 +757,40 @@
     /**
      * Multiplies the matrix representations of two AffineTransform objects.
      * 
-     * @param t1 - the AffineTransform object is a multiplicand
-     * @param t2 - the AffineTransform object is a multiplier
-     * 
-     * @return an AffineTransform object that is the result of t1 multiplied by the matrix t2.
+     * @param t1
+     *            - the AffineTransform object is a multiplicand
+     * @param t2
+     *            - the AffineTransform object is a multiplier
+     * @return an AffineTransform object that is the result of t1 multiplied by
+     *         the matrix t2.
      */
     AffineTransform multiply(AffineTransform t1, AffineTransform t2) {
-        return new AffineTransform(
-                t1.m00 * t2.m00 + t1.m10 * t2.m01,          // m00
-                t1.m00 * t2.m10 + t1.m10 * t2.m11,          // m01
-                t1.m01 * t2.m00 + t1.m11 * t2.m01,          // m10
-                t1.m01 * t2.m10 + t1.m11 * t2.m11,          // m11
+        return new AffineTransform(t1.m00 * t2.m00 + t1.m10 * t2.m01, // m00
+                t1.m00 * t2.m10 + t1.m10 * t2.m11, // m01
+                t1.m01 * t2.m00 + t1.m11 * t2.m01, // m10
+                t1.m01 * t2.m10 + t1.m11 * t2.m11, // m11
                 t1.m02 * t2.m00 + t1.m12 * t2.m01 + t2.m02, // m02
                 t1.m02 * t2.m10 + t1.m12 * t2.m11 + t2.m12);// m12
     }
 
     /**
-     * Applies the given AffineTransform to this AffineTransform
-     * via matrix multiplication.
+     * Applies the given AffineTransform to this AffineTransform via matrix
+     * multiplication.
      * 
-     * @param t the AffineTransform to apply to this AffineTransform.
+     * @param t
+     *            the AffineTransform to apply to this AffineTransform.
      */
     public void concatenate(AffineTransform t) {
         setTransform(multiply(t, this));
     }
 
     /**
-     * Changes the current AffineTransform the one obtained by 
-     * taking the transform t and applying this AffineTransform to it.
+     * Changes the current AffineTransform the one obtained by taking the
+     * transform t and applying this AffineTransform to it.
      * 
-     * @param t the AffineTransform that this AffineTransform is multiplied by.
+     * @param t
+     *            the AffineTransform that this AffineTransform is multiplied
+     *            by.
      */
     public void preConcatenate(AffineTransform t) {
         setTransform(multiply(this, t));
@@ -721,9 +800,9 @@
      * Creates an AffineTransform that is the inverse of this transform.
      * 
      * @return the affine transform that is the inverse of this AffineTransform.
-     * 
-     * @throws NoninvertibleTransformException if this AffineTransform cannot be 
-     * inverted (the determinant of the linear transformation part is zero).
+     * @throws NoninvertibleTransformException
+     *             if this AffineTransform cannot be inverted (the determinant
+     *             of the linear transformation part is zero).
      */
     public AffineTransform createInverse() throws NoninvertibleTransformException {
         double det = getDeterminant();
@@ -731,25 +810,26 @@
             // awt.204=Determinant is zero
             throw new NoninvertibleTransformException(Messages.getString("awt.204")); //$NON-NLS-1$
         }
-        return new AffineTransform(
-                 m11 / det, // m00
+        return new AffineTransform(m11 / det, // m00
                 -m10 / det, // m10
                 -m01 / det, // m01
-                 m00 / det, // m11
+                m00 / det, // m11
                 (m01 * m12 - m11 * m02) / det, // m02
-                (m10 * m02 - m00 * m12) / det  // m12
+                (m10 * m02 - m00 * m12) / det // m12
         );
     }
 
     /**
      * Apply the current AffineTransform to the point.
      * 
-     * @param src the original point.
-     * @param dst Point2D object to be filled with the destination
-     * coordinates (where the original point is sent by this AffineTransform). May be null.
-     * 
-     * @return the point in the AffineTransform's image space where the
-     * original point is sent.
+     * @param src
+     *            the original point.
+     * @param dst
+     *            Point2D object to be filled with the destination coordinates
+     *            (where the original point is sent by this AffineTransform).
+     *            May be null.
+     * @return the point in the AffineTransform's image space where the original
+     *         point is sent.
      */
     public Point2D transform(Point2D src, Point2D dst) {
         if (dst == null) {
@@ -770,25 +850,29 @@
     /**
      * Applies this AffineTransform to an array of points.
      * 
-     * @param src the array of points to be transformed.
-     * @param srcOff the offset in the source point array of the first point
-     * to be transformed.
-     * @param dst the point array where the images of the points (after 
-     * applying the AffineTransformation) should be placed.
-     * @param dstOff the offset in the destination array where the new 
-     * values should be written.
-     * @param length the number of points to transform.
-     * 
-     * @throws ArrayIndexOutOfBoundsException if 
-     * <code>srcOff + length > src.length</code> or
-     * <code>dstOff + length > dst.length</code>.
+     * @param src
+     *            the array of points to be transformed.
+     * @param srcOff
+     *            the offset in the source point array of the first point to be
+     *            transformed.
+     * @param dst
+     *            the point array where the images of the points (after applying
+     *            the AffineTransformation) should be placed.
+     * @param dstOff
+     *            the offset in the destination array where the new values
+     *            should be written.
+     * @param length
+     *            the number of points to transform.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if <code>srcOff + length > src.length</code> or
+     *             <code>dstOff + length > dst.length</code>.
      */
     public void transform(Point2D[] src, int srcOff, Point2D[] dst, int dstOff, int length) {
         while (--length >= 0) {
-            Point2D srcPoint = src[srcOff++]; 
+            Point2D srcPoint = src[srcOff++];
             double x = srcPoint.getX();
             double y = srcPoint.getY();
-            Point2D dstPoint = dst[dstOff]; 
+            Point2D dstPoint = dst[dstOff];
             if (dstPoint == null) {
                 if (srcPoint instanceof Point2D.Double) {
                     dstPoint = new Point2D.Double();
@@ -800,27 +884,31 @@
             dst[dstOff++] = dstPoint;
         }
     }
-    
+
     /**
-     * Applies this AffineTransform to a set of points given 
-     * as an array of double values where every two values in the array 
-     * give the coordinates of a point; the even-indexed values giving the
-     * x coordinates and the odd-indexed values giving the y coordinates.
+     * Applies this AffineTransform to a set of points given as an array of
+     * double values where every two values in the array give the coordinates of
+     * a point; the even-indexed values giving the x coordinates and the
+     * odd-indexed values giving the y coordinates.
      * 
-     * @param src the array of points to be transformed.
-     * @param srcOff the offset in the source point array of the first point
-     * to be transformed.
-     * @param dst the point array where the images of the points (after 
-     * applying the AffineTransformation) should be placed.
-     * @param dstOff the offset in the destination array where the new 
-     * values should be written.
-     * @param length the number of points to transform.
-     * 
-     * @throws ArrayIndexOutOfBoundsException if 
-     * <code>srcOff + length*2 > src.length</code> or
-     * <code>dstOff + length*2 > dst.length</code>.
+     * @param src
+     *            the array of points to be transformed.
+     * @param srcOff
+     *            the offset in the source point array of the first point to be
+     *            transformed.
+     * @param dst
+     *            the point array where the images of the points (after applying
+     *            the AffineTransformation) should be placed.
+     * @param dstOff
+     *            the offset in the destination array where the new values
+     *            should be written.
+     * @param length
+     *            the number of points to transform.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if <code>srcOff + length*2 > src.length</code> or
+     *             <code>dstOff + length*2 > dst.length</code>.
      */
-     public void transform(double[] src, int srcOff, double[] dst, int dstOff, int length) {
+    public void transform(double[] src, int srcOff, double[] dst, int dstOff, int length) {
         int step = 2;
         if (src == dst && srcOff < dstOff && dstOff < srcOff + length * 2) {
             srcOff = srcOff + length * 2 - 2;
@@ -838,23 +926,27 @@
     }
 
     /**
-     * Applies this AffineTransform to a set of points given 
-     * as an array of float values where every two values in the array 
-     * give the coordinates of a point; the even-indexed values giving the
-     * x coordinates and the odd-indexed values giving the y coordinates.
+     * Applies this AffineTransform to a set of points given as an array of
+     * float values where every two values in the array give the coordinates of
+     * a point; the even-indexed values giving the x coordinates and the
+     * odd-indexed values giving the y coordinates.
      * 
-     * @param src the array of points to be transformed.
-     * @param srcOff the offset in the source point array of the first point
-     * to be transformed.
-     * @param dst the point array where the images of the points (after 
-     * applying the AffineTransformation) should be placed.
-     * @param dstOff the offset in the destination array where the new 
-     * values should be written.
-     * @param length the number of points to transform.
-     * 
-     * @throws ArrayIndexOutOfBoundsException if 
-     * <code>srcOff + length*2 > src.length</code> or
-     * <code>dstOff + length*2 > dst.length</code>.
+     * @param src
+     *            the array of points to be transformed.
+     * @param srcOff
+     *            the offset in the source point array of the first point to be
+     *            transformed.
+     * @param dst
+     *            the point array where the images of the points (after applying
+     *            the AffineTransformation) should be placed.
+     * @param dstOff
+     *            the offset in the destination array where the new values
+     *            should be written.
+     * @param length
+     *            the number of points to transform.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if <code>srcOff + length*2 > src.length</code> or
+     *             <code>dstOff + length*2 > dst.length</code>.
      */
     public void transform(float[] src, int srcOff, float[] dst, int dstOff, int length) {
         int step = 2;
@@ -872,26 +964,30 @@
             dstOff += step;
         }
     }
-    
+
     /**
-     * Applies this AffineTransform to a set of points given 
-     * as an array of float values where every two values in the array 
-     * give the coordinates of a point; the even-indexed values giving the
-     * x coordinates and the odd-indexed values giving the y coordinates.
-     * The destination coordinates are given as values of type <code>double</code>.
+     * Applies this AffineTransform to a set of points given as an array of
+     * float values where every two values in the array give the coordinates of
+     * a point; the even-indexed values giving the x coordinates and the
+     * odd-indexed values giving the y coordinates. The destination coordinates
+     * are given as values of type <code>double</code>.
      * 
-     * @param src the array of points to be transformed.
-     * @param srcOff the offset in the source point array of the first point
-     * to be transformed.
-     * @param dst the point array where the images of the points (after 
-     * applying the AffineTransformation) should be placed.
-     * @param dstOff the offset in the destination array where the new 
-     * values should be written.
-     * @param length the number of points to transform.
-     * 
-     * @throws ArrayIndexOutOfBoundsException if 
-     * <code>srcOff + length*2 > src.length</code> or
-     * <code>dstOff + length*2 > dst.length</code>.
+     * @param src
+     *            the array of points to be transformed.
+     * @param srcOff
+     *            the offset in the source point array of the first point to be
+     *            transformed.
+     * @param dst
+     *            the point array where the images of the points (after applying
+     *            the AffineTransformation) should be placed.
+     * @param dstOff
+     *            the offset in the destination array where the new values
+     *            should be written.
+     * @param length
+     *            the number of points to transform.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if <code>srcOff + length*2 > src.length</code> or
+     *             <code>dstOff + length*2 > dst.length</code>.
      */
     public void transform(float[] src, int srcOff, double[] dst, int dstOff, int length) {
         while (--length >= 0) {
@@ -903,24 +999,28 @@
     }
 
     /**
-     * Applies this AffineTransform to a set of points given 
-     * as an array of double values where every two values in the array 
-     * give the coordinates of a point; the even-indexed values giving the
-     * x coordinates and the odd-indexed values giving the y coordinates.
-     * The destination coordinates are given as values of type <code>float</code>.
+     * Applies this AffineTransform to a set of points given as an array of
+     * double values where every two values in the array give the coordinates of
+     * a point; the even-indexed values giving the x coordinates and the
+     * odd-indexed values giving the y coordinates. The destination coordinates
+     * are given as values of type <code>float</code>.
      * 
-     * @param src the array of points to be transformed.
-     * @param srcOff the offset in the source point array of the first point
-     * to be transformed.
-     * @param dst the point array where the images of the points (after 
-     * applying the AffineTransformation) should be placed.
-     * @param dstOff the offset in the destination array where the new 
-     * values should be written.
-     * @param length the number of points to transform.
-     * 
-     * @throws ArrayIndexOutOfBoundsException if 
-     * <code>srcOff + length*2 > src.length</code> or
-     * <code>dstOff + length*2 > dst.length</code>.
+     * @param src
+     *            the array of points to be transformed.
+     * @param srcOff
+     *            the offset in the source point array of the first point to be
+     *            transformed.
+     * @param dst
+     *            the point array where the images of the points (after applying
+     *            the AffineTransformation) should be placed.
+     * @param dstOff
+     *            the offset in the destination array where the new values
+     *            should be written.
+     * @param length
+     *            the number of points to transform.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if <code>srcOff + length*2 > src.length</code> or
+     *             <code>dstOff + length*2 > dst.length</code>.
      */
     public void transform(double[] src, int srcOff, float[] dst, int dstOff, int length) {
         while (--length >= 0) {
@@ -932,15 +1032,16 @@
     }
 
     /**
-     * Transforms the point according to the linear transformation
-     * part of this AffineTransformation (without applying the translation).
+     * Transforms the point according to the linear transformation part of this
+     * AffineTransformation (without applying the translation).
      * 
-     * @param src the original point.
-     * @param dst the point object where the result of the delta transform
-     * is written.
-     * 
-     * @return the result of applying the delta transform (linear part 
-     * only) to the original point.
+     * @param src
+     *            the original point.
+     * @param dst
+     *            the point object where the result of the delta transform is
+     *            written.
+     * @return the result of applying the delta transform (linear part only) to
+     *         the original point.
      */
     // TODO: is this right? if dst is null, we check what it's an
     // instance of? Shouldn't it be src instanceof Point2D.Double?
@@ -961,24 +1062,28 @@
     }
 
     /**
-     * Applies the linear transformation part of this AffineTransform 
-     * (ignoring the translation part) to a set of points given 
-     * as an array of double values where every two values in the array 
-     * give the coordinates of a point; the even-indexed values giving the
-     * x coordinates and the odd-indexed values giving the y coordinates.
+     * Applies the linear transformation part of this AffineTransform (ignoring
+     * the translation part) to a set of points given as an array of double
+     * values where every two values in the array give the coordinates of a
+     * point; the even-indexed values giving the x coordinates and the
+     * odd-indexed values giving the y coordinates.
      * 
-     * @param src the array of points to be transformed.
-     * @param srcOff the offset in the source point array of the first point
-     * to be transformed.
-     * @param dst the point array where the images of the points (after 
-     * applying the delta transformation) should be placed.
-     * @param dstOff the offset in the destination array where the new 
-     * values should be written.
-     * @param length the number of points to transform.
-     * 
-     * @throws ArrayIndexOutOfBoundsException if 
-     * <code>srcOff + length*2 > src.length</code> or
-     * <code>dstOff + length*2 > dst.length</code>.
+     * @param src
+     *            the array of points to be transformed.
+     * @param srcOff
+     *            the offset in the source point array of the first point to be
+     *            transformed.
+     * @param dst
+     *            the point array where the images of the points (after applying
+     *            the delta transformation) should be placed.
+     * @param dstOff
+     *            the offset in the destination array where the new values
+     *            should be written.
+     * @param length
+     *            the number of points to transform.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if <code>srcOff + length*2 > src.length</code> or
+     *             <code>dstOff + length*2 > dst.length</code>.
      */
     public void deltaTransform(double[] src, int srcOff, double[] dst, int dstOff, int length) {
         while (--length >= 0) {
@@ -990,19 +1095,21 @@
     }
 
     /**
-     * Transforms the point according to the inverse of this AffineTransformation.
+     * Transforms the point according to the inverse of this
+     * AffineTransformation.
      * 
-     * @param src the original point.
-     * @param dst the point object where the result of the inverse transform
-     * is written (may be null).
-     * 
-     * @return the result of applying the inverse transform.
-     * Inverse transform.
-     * 
-     * @throws NoninvertibleTransformException if this AffineTransform cannot be 
-     * inverted (the determinant of the linear transformation part is zero).
+     * @param src
+     *            the original point.
+     * @param dst
+     *            the point object where the result of the inverse transform is
+     *            written (may be null).
+     * @return the result of applying the inverse transform. Inverse transform.
+     * @throws NoninvertibleTransformException
+     *             if this AffineTransform cannot be inverted (the determinant
+     *             of the linear transformation part is zero).
      */
-    public Point2D inverseTransform(Point2D src, Point2D dst) throws NoninvertibleTransformException {
+    public Point2D inverseTransform(Point2D src, Point2D dst)
+            throws NoninvertibleTransformException {
         double det = getDeterminant();
         if (Math.abs(det) < ZERO) {
             // awt.204=Determinant is zero
@@ -1025,29 +1132,33 @@
     }
 
     /**
-     * Applies the inverse of this AffineTransform to a set of points given 
-     * as an array of double values where every two values in the array 
-     * give the coordinates of a point; the even-indexed values giving the
-     * x coordinates and the odd-indexed values giving the y coordinates.
+     * Applies the inverse of this AffineTransform to a set of points given as
+     * an array of double values where every two values in the array give the
+     * coordinates of a point; the even-indexed values giving the x coordinates
+     * and the odd-indexed values giving the y coordinates.
      * 
-     * @param src the array of points to be transformed.
-     * @param srcOff the offset in the source point array of the first point
-     * to be transformed.
-     * @param dst the point array where the images of the points (after 
-     * applying the inverse of the AffineTransformation) should be placed.
-     * @param dstOff the offset in the destination array where the new 
-     * values should be written.
-     * @param length the number of points to transform.
-     * 
-     * @throws ArrayIndexOutOfBoundsException if 
-     * <code>srcOff + length*2 > src.length</code> or
-     * <code>dstOff + length*2 > dst.length</code>.
-     * @throws NoninvertibleTransformException if this AffineTransform cannot be 
-     * inverted (the determinant of the linear transformation part is zero).
+     * @param src
+     *            the array of points to be transformed.
+     * @param srcOff
+     *            the offset in the source point array of the first point to be
+     *            transformed.
+     * @param dst
+     *            the point array where the images of the points (after applying
+     *            the inverse of the AffineTransformation) should be placed.
+     * @param dstOff
+     *            the offset in the destination array where the new values
+     *            should be written.
+     * @param length
+     *            the number of points to transform.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if <code>srcOff + length*2 > src.length</code> or
+     *             <code>dstOff + length*2 > dst.length</code>.
+     * @throws NoninvertibleTransformException
+     *             if this AffineTransform cannot be inverted (the determinant
+     *             of the linear transformation part is zero).
      */
     public void inverseTransform(double[] src, int srcOff, double[] dst, int dstOff, int length)
-        throws NoninvertibleTransformException
-    {
+            throws NoninvertibleTransformException {
         double det = getDeterminant();
         if (Math.abs(det) < ZERO) {
             // awt.204=Determinant is zero
@@ -1063,13 +1174,13 @@
     }
 
     /**
-     * Creates a new shape whose data is given by applying this 
-     * AffineTransform to the specified shape.
+     * Creates a new shape whose data is given by applying this AffineTransform
+     * to the specified shape.
      * 
-     * @param src the original shape whose data is to be transformed.
-     * 
-     * @return the new shape found by applying this AffineTransform to 
-     * the original shape.
+     * @param src
+     *            the original shape whose data is to be transformed.
+     * @return the new shape found by applying this AffineTransform to the
+     *         original shape.
      */
     public Shape createTransformedShape(Shape src) {
         if (src == null) {
@@ -1086,9 +1197,7 @@
 
     @Override
     public String toString() {
-        return
-            getClass().getName() +
-            "[[" + m00 + ", " + m01 + ", " + m02 + "], [" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+        return getClass().getName() + "[[" + m00 + ", " + m01 + ", " + m02 + "], [" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
                 + m10 + ", " + m11 + ", " + m12 + "]]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
     }
 
@@ -1120,39 +1229,39 @@
         }
         if (obj instanceof AffineTransform) {
             AffineTransform t = (AffineTransform)obj;
-            return
-                m00 == t.m00 && m01 == t.m01 &&
-                m02 == t.m02 && m10 == t.m10 &&
-                m11 == t.m11 && m12 == t.m12;
+            return m00 == t.m00 && m01 == t.m01 && m02 == t.m02 && m10 == t.m10 && m11 == t.m11
+                    && m12 == t.m12;
         }
         return false;
     }
 
-    
     /**
      * Writes the AffineTrassform object to the output steam.
      * 
-     * @param stream - the output stream
-     * 
-     * @throws IOException - if there are I/O errors while writing to the output strem
+     * @param stream
+     *            - the output stream.
+     * @throws IOException
+     *             - if there are I/O errors while writing to the output stream.
      */
     private void writeObject(java.io.ObjectOutputStream stream) throws IOException {
         stream.defaultWriteObject();
     }
 
-    
     /**
      * Read the AffineTransform object from the input stream.
      * 
-     * @param stream - the input steam
-     * 
-     * @throws IOException - if there are I/O errors while reading from the input strem
-     * @throws ClassNotFoundException - if class could not be found
+     * @param stream
+     *            - the input stream.
+     * @throws IOException
+     *             - if there are I/O errors while reading from the input
+     *             stream.
+     * @throws ClassNotFoundException
+     *             - if class could not be found.
      */
-    private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException {
+    private void readObject(java.io.ObjectInputStream stream) throws IOException,
+            ClassNotFoundException {
         stream.defaultReadObject();
         type = TYPE_UNKNOWN;
     }
 
 }
-
diff --git a/awt/java/awt/geom/Arc2D.java b/awt/java/awt/geom/Arc2D.java
index bc1e95c..56f5cd3 100644
--- a/awt/java/awt/geom/Arc2D.java
+++ b/awt/java/awt/geom/Arc2D.java
@@ -18,6 +18,7 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt.geom;
 
 import java.util.NoSuchElementException;
@@ -25,59 +26,77 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Class Arc2D represents a segment of a curve inscribed 
- * in a rectangle. The curve is defined by a start angle and an 
- * extent angle (the end angle minus the start angle) as 
- * a pie wedge whose point is in the center of the rectangle.
- * The Arc2D as a shape may be either OPEN (including nothing 
- * but the curved arc segment itself), CHORD (the curved arc
- * segment closed by a connecting segment from the end to the 
- * beginning of the arc, or PIE (the segments from the end 
- * of the arc to the center of the rectangle and from the
- * center of the rectangle back to the arc's start point are 
- * included).
+ * The Class Arc2D represents a segment of a curve inscribed in a rectangle. The
+ * curve is defined by a start angle and an extent angle (the end angle minus
+ * the start angle) as a pie wedge whose point is in the center of the
+ * rectangle. The Arc2D as a shape may be either OPEN (including nothing but the
+ * curved arc segment itself), CHORD (the curved arc segment closed by a
+ * connecting segment from the end to the beginning of the arc, or PIE (the
+ * segments from the end of the arc to the center of the rectangle and from the
+ * center of the rectangle back to the arc's start point are included).
+ * 
+ * @since Android 1.0
  */
 public abstract class Arc2D extends RectangularShape {
 
-    /** The arc type OPEN indicates that the shape includes only the 
-     * curved arc segment. */
+    /**
+     * The arc type OPEN indicates that the shape includes only the curved arc
+     * segment.
+     */
     public final static int OPEN = 0;
-    
-    /** The arc type CHORD indicates that as a shape the connecting
-     * segment from the end point of the curved arc to the beginning
-     * point is included. */
+
+    /**
+     * The arc type CHORD indicates that as a shape the connecting segment from
+     * the end point of the curved arc to the beginning point is included.
+     */
     public final static int CHORD = 1;
-    
-    /** The arc type PIE indicates that as a shape the two segments 
-     * from the arc's endpoint to the center of the rectangle and from 
-     * the center of the rectangle to the arc's endpoint are included. */
+
+    /**
+     * The arc type PIE indicates that as a shape the two segments from the
+     * arc's endpoint to the center of the rectangle and from the center of the
+     * rectangle to the arc's endpoint are included.
+     */
     public final static int PIE = 2;
 
     /**
-     * The Class Float is a subclass of Arc2D in which all of the 
-     * data values are given as floats.
+     * The Class Float is a subclass of Arc2D in which all of the data values
+     * are given as floats.
+     * 
      * @see Arc2D.Double
+     * @since Android 1.0
      */
     public static class Float extends Arc2D {
 
-        /** The x coordinate of the upper left corner of the rectangle that
-         * contains the arc. */
+        /**
+         * The x coordinate of the upper left corner of the rectangle that
+         * contains the arc.
+         */
         public float x;
-        
-        /** The y coordinate of the upper left corner of the rectangle that
-         * contains the arc. */
+
+        /**
+         * The y coordinate of the upper left corner of the rectangle that
+         * contains the arc.
+         */
         public float y;
-        
-        /** The width of the rectangle that contains the arc. */
+
+        /**
+         * The width of the rectangle that contains the arc.
+         */
         public float width;
-        
-        /** The height of the rectangle that contains the arc. */
+
+        /**
+         * The height of the rectangle that contains the arc.
+         */
         public float height;
-        
-        /** The start angle of the arc in degrees. */
+
+        /**
+         * The start angle of the arc in degrees.
+         */
         public float start;
-        
-        /** The width angle of the arc in degrees. */
+
+        /**
+         * The width angle of the arc in degrees.
+         */
         public float extent;
 
         /**
@@ -90,8 +109,9 @@
         /**
          * Instantiates a new Arc2D of the specified type with float values.
          * 
-         * @param type the type of the new Arc2D, either {@link Arc2D#OPEN}, 
-         * {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
+         * @param type
+         *            the type of the new Arc2D, either {@link Arc2D#OPEN},
+         *            {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
          */
         public Float(int type) {
             super(type);
@@ -100,20 +120,26 @@
         /**
          * Instantiates a Arc2D with the specified float-valued data.
          * 
-         * @param x the x coordinate of the upper left corner of the rectangle that
-         * contains the arc.
-         * @param y the y coordinate of the upper left corner of the rectangle that
-         * contains the arc.
-         * @param width the width of the rectangle that
-         * contains the arc.
-         * @param height the height of the rectangle that
-         * contains the arc.
-         * @param start the start angle of the arc in degrees.
-         * @param extent the width angle of the arc in degrees.
-         * @param type the type of the new Arc2D, either {@link Arc2D#OPEN}, 
-         * {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
+         * @param x
+         *            the x coordinate of the upper left corner of the rectangle
+         *            that contains the arc.
+         * @param y
+         *            the y coordinate of the upper left corner of the rectangle
+         *            that contains the arc.
+         * @param width
+         *            the width of the rectangle that contains the arc.
+         * @param height
+         *            the height of the rectangle that contains the arc.
+         * @param start
+         *            the start angle of the arc in degrees.
+         * @param extent
+         *            the width angle of the arc in degrees.
+         * @param type
+         *            the type of the new Arc2D, either {@link Arc2D#OPEN},
+         *            {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
          */
-        public Float(float x, float y, float width, float height, float start, float extent, int type) {
+        public Float(float x, float y, float width, float height, float start, float extent,
+                int type) {
             super(type);
             this.x = x;
             this.y = y;
@@ -124,14 +150,18 @@
         }
 
         /**
-         * Instantiates a new Angle2D with the specified float-valued data
-         * and the bounding rectangle given by the parameter bounds.
+         * Instantiates a new Angle2D with the specified float-valued data and
+         * the bounding rectangle given by the parameter bounds.
          * 
-         * @param bounds the bounding rectangle of the Angle2D.
-         * @param start the start angle of the arc in degrees.
-         * @param extent the width angle of the arc in degrees.
-         * @param type the type of the new Arc2D, either {@link Arc2D#OPEN}, 
-         * {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
+         * @param bounds
+         *            the bounding rectangle of the Angle2D.
+         * @param start
+         *            the start angle of the arc in degrees.
+         * @param extent
+         *            the width angle of the arc in degrees.
+         * @param type
+         *            the type of the new Arc2D, either {@link Arc2D#OPEN},
+         *            {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
          */
         public Float(Rectangle2D bounds, float start, float extent, int type) {
             super(type);
@@ -148,8 +178,8 @@
             return x;
         }
 
-       @Override
-       public double getY() {
+        @Override
+        public double getY() {
             return y;
         }
 
@@ -179,9 +209,8 @@
         }
 
         @Override
-        public void setArc(double x, double y, double width, double height,
-                double start, double extent, int type)
-        {
+        public void setArc(double x, double y, double width, double height, double start,
+                double extent, int type) {
             this.setArcType(type);
             this.x = (float)x;
             this.y = (float)y;
@@ -209,30 +238,44 @@
     }
 
     /**
-     * The Class Double is a subclass of Arc2D in which all of the 
-     * data values are given as doubles.
+     * The Class Double is a subclass of Arc2D in which all of the data values
+     * are given as doubles.
+     * 
      * @see Arc2D.Float
+     * @since Android 1.0
      */
     public static class Double extends Arc2D {
 
-        /** The x coordinate of the upper left corner of the rectangle that
-         * contains the arc. */
+        /**
+         * The x coordinate of the upper left corner of the rectangle that
+         * contains the arc.
+         */
         public double x;
-        
-        /** The y coordinate of the upper left corner of the rectangle that
-         * contains the arc. */
+
+        /**
+         * The y coordinate of the upper left corner of the rectangle that
+         * contains the arc.
+         */
         public double y;
-        
-        /** The width of the rectangle that contains the arc. */
+
+        /**
+         * The width of the rectangle that contains the arc.
+         */
         public double width;
-        
-        /** The height of the rectangle that contains the arc. */
+
+        /**
+         * The height of the rectangle that contains the arc.
+         */
         public double height;
-        
-        /** The start angle of the arc in degrees. */
+
+        /**
+         * The start angle of the arc in degrees.
+         */
         public double start;
-        
-        /** The width angle of the arc in degrees. */
+
+        /**
+         * The width angle of the arc in degrees.
+         */
         public double extent;
 
         /**
@@ -245,8 +288,9 @@
         /**
          * Instantiates a new Arc2D of the specified type with double values.
          * 
-         * @param type the type of the new Arc2D, either {@link Arc2D#OPEN}, 
-         * {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
+         * @param type
+         *            the type of the new Arc2D, either {@link Arc2D#OPEN},
+         *            {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
          */
         public Double(int type) {
             super(type);
@@ -255,22 +299,26 @@
         /**
          * Instantiates a Arc2D with the specified double-valued data.
          * 
-         * @param x the x coordinate of the upper left corner of the rectangle that
-         * contains the arc.
-         * @param y the y coordinate of the upper left corner of the rectangle that
-         * contains the arc.
-         * @param width the width of the rectangle that
-         * contains the arc.
-         * @param height the height of the rectangle that
-         * contains the arc.
-         * @param start the start angle of the arc in degrees.
-         * @param extent the width angle of the arc in degrees.
-         * @param type the type of the new Arc2D, either {@link Arc2D#OPEN}, 
-         * {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
+         * @param x
+         *            the x coordinate of the upper left corner of the rectangle
+         *            that contains the arc.
+         * @param y
+         *            the y coordinate of the upper left corner of the rectangle
+         *            that contains the arc.
+         * @param width
+         *            the width of the rectangle that contains the arc.
+         * @param height
+         *            the height of the rectangle that contains the arc.
+         * @param start
+         *            the start angle of the arc in degrees.
+         * @param extent
+         *            the width angle of the arc in degrees.
+         * @param type
+         *            the type of the new Arc2D, either {@link Arc2D#OPEN},
+         *            {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
          */
-        public Double(double x, double y, double width, double height,
-                double start, double extent, int type)
-        {
+        public Double(double x, double y, double width, double height, double start, double extent,
+                int type) {
             super(type);
             this.x = x;
             this.y = y;
@@ -281,14 +329,18 @@
         }
 
         /**
-         * Instantiates a new Angle2D with the specified float-valued data
-         * and the bounding rectangle given by the parameter bounds.
+         * Instantiates a new Angle2D with the specified float-valued data and
+         * the bounding rectangle given by the parameter bounds.
          * 
-         * @param bounds the bounding rectangle of the Angle2D.
-         * @param start the start angle of the arc in degrees.
-         * @param extent the width angle of the arc in degrees.
-         * @param type the type of the new Arc2D, either {@link Arc2D#OPEN}, 
-         * {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
+         * @param bounds
+         *            the bounding rectangle of the Angle2D.
+         * @param start
+         *            the start angle of the arc in degrees.
+         * @param extent
+         *            the width angle of the arc in degrees.
+         * @param type
+         *            the type of the new Arc2D, either {@link Arc2D#OPEN},
+         *            {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
          */
         public Double(Rectangle2D bounds, double start, double extent, int type) {
             super(type);
@@ -336,9 +388,8 @@
         }
 
         @Override
-        public void setArc(double x, double y, double width, double height,
-                double start, double extent, int type)
-        {
+        public void setArc(double x, double y, double width, double height, double start,
+                double extent, int type) {
             this.setArcType(type);
             this.x = x;
             this.y = y;
@@ -366,73 +417,116 @@
     }
 
     /**
-     * The Class Iterator is the subclass of PathIterator that is used to 
+     * The Class Iterator is the subclass of PathIterator that is used to
      * traverse the boundary of a shape of type Arc2D.
      */
     class Iterator implements PathIterator {
 
-        /** The x coordinate of the center of the arc's bounding rectangle. */
+        /**
+         * The x coordinate of the center of the arc's bounding rectangle.
+         */
         double x;
 
-        /** The y coordinate of the center of the arc's bounding rectangle. */
+        /**
+         * The y coordinate of the center of the arc's bounding rectangle.
+         */
         double y;
 
-        /** Half of the width of the arc's bounding rectangle (the radius in the case of a circular arc). */
+        /**
+         * Half of the width of the arc's bounding rectangle (the radius in the
+         * case of a circular arc).
+         */
         double width;
-        
-        /** Half of the height of the arc's bounding rectangle (the radius in the case of a circular arc). */
+
+        /**
+         * Half of the height of the arc's bounding rectangle (the radius in the
+         * case of a circular arc).
+         */
         double height;
-        
-        /** The start angle of the arc in degrees. */
+
+        /**
+         * The start angle of the arc in degrees.
+         */
         double angle;
-        
-        /** The angle extent in degrees. */
+
+        /**
+         * The angle extent in degrees.
+         */
         double extent;
-         
-        /** The closure type of the arc. */
+
+        /**
+         * The closure type of the arc.
+         */
         int type;
-        
-        /** The path iterator transformation. */
+
+        /**
+         * The path iterator transformation.
+         */
         AffineTransform t;
-        
-        /** The current segment index. */
+
+        /**
+         * The current segment index.
+         */
         int index;
-        
-        /** The number of arc segments the source arc subdivided to be approximated by Bezier curves. Depends on extent value. */
+
+        /**
+         * The number of arc segments the source arc subdivided to be
+         * approximated by Bezier curves. Depends on extent value.
+         */
         int arcCount;
-        
-        /** The number of line segments. Depends on closure type. */
+
+        /**
+         * The number of line segments. Depends on closure type.
+         */
         int lineCount;
-        
-        /** The step to calculate next arc subdivision point. */
+
+        /**
+         * The step to calculate next arc subdivision point.
+         */
         double step;
-        
-        /** The temporary value of cosinus of the current angle. */
+
+        /**
+         * The temporary value of cosinus of the current angle.
+         */
         double cos;
 
-        /** The temporary value of sinus of the current angle. */
+        /**
+         * The temporary value of sinus of the current angle.
+         */
         double sin;
-        
+
         /** The coefficient to calculate control points of Bezier curves. */
         double k;
-        
-        /** The temporary value of x coordinate of the Bezier curve control vector. */
+
+        /**
+         * The temporary value of x coordinate of the Bezier curve control
+         * vector.
+         */
         double kx;
 
-        /** The temporary value of y coordinate of the Bezier curve control vector. */
+        /**
+         * The temporary value of y coordinate of the Bezier curve control
+         * vector.
+         */
         double ky;
-        
-        /** The x coordinate of the first path point (MOVE_TO). */
+
+        /**
+         * The x coordinate of the first path point (MOVE_TO).
+         */
         double mx;
-        
-        /** The y coordinate of the first path point (MOVE_TO). */
+
+        /**
+         * The y coordinate of the first path point (MOVE_TO).
+         */
         double my;
 
         /**
          * Constructs a new Arc2D.Iterator for given line and transformation
          * 
-         * @param a - the source Arc2D object
-         * @param t the AffineTransformation.
+         * @param a
+         *            the source Arc2D object.
+         * @param t
+         *            the AffineTransformation.
          */
         Iterator(Arc2D a, AffineTransform t) {
             if (width < 0 || height < 0) {
@@ -462,8 +556,7 @@
             } else {
                 arcCount = (int)Math.rint(Math.abs(extent) / 90.0);
                 step = Math.toRadians(extent / arcCount);
-                k = 4.0 / 3.0 * (1.0 - Math.cos(step / 2.0))
-                        / Math.sin(step / 2.0);
+                k = 4.0 / 3.0 * (1.0 - Math.cos(step / 2.0)) / Math.sin(step / 2.0);
             }
 
             lineCount = 0;
@@ -578,13 +671,16 @@
 
     }
 
-    /** The closure type of the arc. */
+    /**
+     * The closure type of the arc.
+     */
     private int type;
 
     /**
      * Instantiates a new arc2D.
      * 
-     * @param type the closure type.
+     * @param type
+     *            the closure type.
      */
     protected Arc2D(int type) {
         setArcType(type);
@@ -595,11 +691,16 @@
      * object with values either of type float or of type double depending on
      * whether this Arc2D instance is of type Float or Double.
      * 
-     * @param x the x coordinate of the upper left corner of the bounding rectangle.
-     * @param y the y coordinate of the upper left corner of the bounding rectangle.
-     * @param width the width of the bounding rectangle.
-     * @param height the height of the bounding rectangle.
-     * 
+     * @param x
+     *            the x coordinate of the upper left corner of the bounding
+     *            rectangle.
+     * @param y
+     *            the y coordinate of the upper left corner of the bounding
+     *            rectangle.
+     * @param width
+     *            the width of the bounding rectangle.
+     * @param height
+     *            the height of the bounding rectangle.
      * @return the corresponding Rectangle2D object.
      */
     protected abstract Rectangle2D makeBounds(double x, double y, double width, double height);
@@ -621,39 +722,46 @@
     /**
      * Sets the start angle.
      * 
-     * @param start the new start angle.
+     * @param start
+     *            the new start angle.
      */
     public abstract void setAngleStart(double start);
 
     /**
      * Sets the width angle.
      * 
-     * @param extent the new width angle.
+     * @param extent
+     *            the new width angle.
      */
     public abstract void setAngleExtent(double extent);
 
     /**
      * Sets the data values that define the arc.
      * 
-     * @param x the x coordinate of the upper left corner of the rectangle that
-     * contains the arc.
-     * @param y the y coordinate of the upper left corner of the rectangle that
-     * contains the arc.
-     * @param width the width of the rectangle that
-     * contains the arc.
-     * @param height the height of the rectangle that
-     * contains the arc.
-     * @param start the start angle of the arc in degrees.
-     * @param extent the width angle of the arc in degrees.
-     * @param type the type of the new Arc2D, either {@link Arc2D#OPEN}, 
-     * {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
+     * @param x
+     *            the x coordinate of the upper left corner of the rectangle
+     *            that contains the arc.
+     * @param y
+     *            the y coordinate of the upper left corner of the rectangle
+     *            that contains the arc.
+     * @param width
+     *            the width of the rectangle that contains the arc.
+     * @param height
+     *            the height of the rectangle that contains the arc.
+     * @param start
+     *            the start angle of the arc in degrees.
+     * @param extent
+     *            the width angle of the arc in degrees.
+     * @param type
+     *            the type of the new Arc2D, either {@link Arc2D#OPEN},
+     *            {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
      */
-    public abstract void setArc(double x, double y, double width,
-            double height, double start, double extent, int type);
+    public abstract void setArc(double x, double y, double width, double height, double start,
+            double extent, int type);
 
     /**
-     * Gets the arc type, either {@link Arc2D#OPEN}, 
-     * {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
+     * Gets the arc type, either {@link Arc2D#OPEN}, {@link Arc2D#CHORD}, or
+     * {@link Arc2D#PIE}.
      * 
      * @return the arc type.
      */
@@ -662,10 +770,11 @@
     }
 
     /**
-     * Sets the arc type, either {@link Arc2D#OPEN}, 
-     * {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
+     * Sets the arc type, either {@link Arc2D#OPEN}, {@link Arc2D#CHORD}, or
+     * {@link Arc2D#PIE}.
      * 
-     * @param type the new arc type.
+     * @param type
+     *            the new arc type.
      */
     public void setArcType(int type) {
         if (type != OPEN && type != CHORD && type != PIE) {
@@ -682,9 +791,8 @@
      */
     public Point2D getStartPoint() {
         double a = Math.toRadians(getAngleStart());
-        return new Point2D.Double(
-                getX() + (1.0 + Math.cos(a)) * getWidth() / 2.0,
-                getY() + (1.0 - Math.sin(a)) * getHeight() / 2.0);
+        return new Point2D.Double(getX() + (1.0 + Math.cos(a)) * getWidth() / 2.0, getY()
+                + (1.0 - Math.sin(a)) * getHeight() / 2.0);
     }
 
     /**
@@ -694,9 +802,8 @@
      */
     public Point2D getEndPoint() {
         double a = Math.toRadians(getAngleStart() + getAngleExtent());
-        return new Point2D.Double(
-                getX() + (1.0 + Math.cos(a)) * getWidth() / 2.0,
-                getY() + (1.0 - Math.sin(a)) * getHeight() / 2.0);
+        return new Point2D.Double(getX() + (1.0 + Math.cos(a)) * getWidth() / 2.0, getY()
+                + (1.0 - Math.sin(a)) * getHeight() / 2.0);
     }
 
     public Rectangle2D getBounds2D() {
@@ -712,8 +819,8 @@
         Point2D p2 = getEndPoint();
 
         double bx1 = containsAngle(180.0) ? rx1 : Math.min(p1.getX(), p2.getX());
-        double by1 = containsAngle(90.0)  ? ry1 : Math.min(p1.getY(), p2.getY());
-        double bx2 = containsAngle(0.0)   ? rx2 : Math.max(p1.getX(), p2.getX());
+        double by1 = containsAngle(90.0) ? ry1 : Math.min(p1.getY(), p2.getY());
+        double bx2 = containsAngle(0.0) ? rx2 : Math.max(p1.getX(), p2.getX());
         double by2 = containsAngle(270.0) ? ry2 : Math.max(p1.getY(), p2.getY());
 
         if (type == PIE) {
@@ -735,12 +842,17 @@
     /**
      * Sets the data that defines the arc.
      * 
-     * @param point the upper left corner of the bounding rectangle.
-     * @param size the size of the bounding rectangle.
-     * @param start the start angle of the arc in degrees.
-     * @param extent the angle witdth of the arc in degrees.
-     * @param type the closure type, either {@link Arc2D#OPEN}, 
-     * {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
+     * @param point
+     *            the upper left corner of the bounding rectangle.
+     * @param size
+     *            the size of the bounding rectangle.
+     * @param start
+     *            the start angle of the arc in degrees.
+     * @param extent
+     *            the angle width of the arc in degrees.
+     * @param type
+     *            the closure type, either {@link Arc2D#OPEN},
+     *            {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
      */
     public void setArc(Point2D point, Dimension2D size, double start, double extent, int type) {
         setArc(point.getX(), point.getY(), size.getWidth(), size.getHeight(), start, extent, type);
@@ -749,11 +861,15 @@
     /**
      * Sets the data that defines the arc.
      * 
-     * @param rect the arc's bounding rectangle.
-     * @param start the start angle of the arc in degrees.
-     * @param extent the angle witdth of the arc in degrees.
-     * @param type the closure type, either {@link Arc2D#OPEN}, 
-     * {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
+     * @param rect
+     *            the arc's bounding rectangle.
+     * @param start
+     *            the start angle of the arc in degrees.
+     * @param extent
+     *            the angle width of the arc in degrees.
+     * @param type
+     *            the closure type, either {@link Arc2D#OPEN},
+     *            {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
      */
     public void setArc(Rectangle2D rect, double start, double extent, int type) {
         setArc(rect.getX(), rect.getY(), rect.getWidth(), rect.getHeight(), start, extent, type);
@@ -762,47 +878,60 @@
     /**
      * Sets the data that defines the arc by copying it from another Arc2D.
      * 
-     * @param arc the arc whose data is copied into this arc.
+     * @param arc
+     *            the arc whose data is copied into this arc.
      */
     public void setArc(Arc2D arc) {
-        setArc(arc.getX(), arc.getY(), arc.getWidth(), arc.getHeight(), arc
-                .getAngleStart(), arc.getAngleExtent(), arc.getArcType());
+        setArc(arc.getX(), arc.getY(), arc.getWidth(), arc.getHeight(), arc.getAngleStart(), arc
+                .getAngleExtent(), arc.getArcType());
     }
 
     /**
      * Sets the data for a circular arc by giving its center and radius.
      * 
-     * @param x the x coordinate of the center of the circle.
-     * @param y the y coordinate of the center of the circle.
-     * @param radius the radius of the circle.
-     * @param start the start angle of the arc in degrees.
-     * @param extent the angle witdth of the arc in degrees.
-     * @param type the closure type, either {@link Arc2D#OPEN}, 
-     * {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
+     * @param x
+     *            the x coordinate of the center of the circle.
+     * @param y
+     *            the y coordinate of the center of the circle.
+     * @param radius
+     *            the radius of the circle.
+     * @param start
+     *            the start angle of the arc in degrees.
+     * @param extent
+     *            the angle width of the arc in degrees.
+     * @param type
+     *            the closure type, either {@link Arc2D#OPEN},
+     *            {@link Arc2D#CHORD}, or {@link Arc2D#PIE}.
      */
-    public void setArcByCenter(double x, double y, double radius, double start, double extent, int type) {
+    public void setArcByCenter(double x, double y, double radius, double start, double extent,
+            int type) {
         setArc(x - radius, y - radius, radius * 2.0, radius * 2.0, start, extent, type);
     }
 
     /**
-     * Sets the arc data for a circular arc based on two tangent lines
-     * and the radius. The two tangent lines are the lines from p1 
-     * to p2 and from p2 to p3, which determine a unique circle 
-     * with the given radius. The start and end points of the arc 
-     * are the points where the circle touches the two lines, and 
-     * the arc itself is the shorter of the two circle segments 
-     * determined by the two points (in other words, it is the 
-     * piece of the circle that is closer to the lines' intersection 
-     * point p2 and forms a concave shape with the segments from p1 to p2 
-     * and from p2 to p3).
+     * Sets the arc data for a circular arc based on two tangent lines and the
+     * radius. The two tangent lines are the lines from p1 to p2 and from p2 to
+     * p3, which determine a unique circle with the given radius. The start and
+     * end points of the arc are the points where the circle touches the two
+     * lines, and the arc itself is the shorter of the two circle segments
+     * determined by the two points (in other words, it is the piece of the
+     * circle that is closer to the lines' intersection point p2 and forms a
+     * concave shape with the segments from p1 to p2 and from p2 to p3).
      * 
-     * @param p1 a point which determines one of the two tanget lines (with p2).
-     * @param p2 the point of intersection of the two tangent lines.
-     * @param p3 a point which determines one of the two tanget lines (with p2).
-     * @param radius the radius of the circular arc.
+     * @param p1
+     *            a point which determines one of the two tangent lines (with
+     *            p2).
+     * @param p2
+     *            the point of intersection of the two tangent lines.
+     * @param p3
+     *            a point which determines one of the two tangent lines (with
+     *            p2).
+     * @param radius
+     *            the radius of the circular arc.
      */
     public void setArcByTangent(Point2D p1, Point2D p2, Point2D p3, double radius) {
-        // Used simple geometric calculations of arc center, radius and angles by tangents
+        // Used simple geometric calculations of arc center, radius and angles
+        // by tangents
         double a1 = -Math.atan2(p1.getY() - p2.getY(), p1.getX() - p2.getX());
         double a2 = -Math.atan2(p3.getY() - p2.getY(), p3.getX() - p2.getX());
         double am = (a1 + a2) / 2.0;
@@ -821,10 +950,11 @@
     }
 
     /**
-     * Sets a new start angle to be the angle given by the the vector 
-     * from the current center point to the specified point.
+     * Sets a new start angle to be the angle given by the the vector from the
+     * current center point to the specified point.
      * 
-     * @param point the point that determines the new start angle.
+     * @param point
+     *            the point that determines the new start angle.
      */
     public void setAngleStart(Point2D point) {
         double angle = Math.atan2(point.getY() - getCenterY(), point.getX() - getCenterX());
@@ -832,20 +962,23 @@
     }
 
     /**
-     * Sets the angles in terms of vectors from the current arc center 
-     * to the points (x1, y1) and (x2, y2). The start angle is given 
-     * by the vector from the current center to the point (x1, y1) and
-     * the end angle is given by the vector from the center to the point
-     * (x2, y2).
+     * Sets the angles in terms of vectors from the current arc center to the
+     * points (x1, y1) and (x2, y2). The start angle is given by the vector from
+     * the current center to the point (x1, y1) and the end angle is given by
+     * the vector from the center to the point (x2, y2).
      * 
-     * @param x1 the x coordinate of the point whose vector from the center
-     * point determines the new start angle of the arc.
-     * @param y1 the y coordinate of the point whose vector from the center
-     * point determines the new start angle of the arc.
-     * @param x2 the x coordinate of the point whose vector from the center
-     * point determines the new end angle of the arc.
-     * @param y2 the y coordinate of the point whose vector from the center
-     * point determines the new end angle of the arc.
+     * @param x1
+     *            the x coordinate of the point whose vector from the center
+     *            point determines the new start angle of the arc.
+     * @param y1
+     *            the y coordinate of the point whose vector from the center
+     *            point determines the new start angle of the arc.
+     * @param x2
+     *            the x coordinate of the point whose vector from the center
+     *            point determines the new end angle of the arc.
+     * @param y2
+     *            the y coordinate of the point whose vector from the center
+     *            point determines the new end angle of the arc.
      */
     public void setAngles(double x1, double y1, double x2, double y2) {
         double cx = getCenterX();
@@ -861,29 +994,30 @@
     }
 
     /**
-     * Sets the angles in terms of vectors from the current arc center 
-     * to the points p1 and p2. The start angle is given 
-     * by the vector from the current center to the point p1 and
-     * the end angle is given by the vector from the center to the point
-     * p2.
+     * Sets the angles in terms of vectors from the current arc center to the
+     * points p1 and p2. The start angle is given by the vector from the current
+     * center to the point p1 and the end angle is given by the vector from the
+     * center to the point p2.
      * 
-     * @param p1 the point whose vector from the center
-     * point determines the new start angle of the arc.
-     * @param p2 the point whose vector from the center
-     * point determines the new end angle of the arc.
+     * @param p1
+     *            the point whose vector from the center point determines the
+     *            new start angle of the arc.
+     * @param p2
+     *            the point whose vector from the center point determines the
+     *            new end angle of the arc.
      */
     public void setAngles(Point2D p1, Point2D p2) {
         setAngles(p1.getX(), p1.getY(), p2.getX(), p2.getY());
     }
 
     /**
-     * Normalizes the angle by removing extra winding (past 360 degrees)
-     * and placing it in the positive degree range.
+     * Normalizes the angle by removing extra winding (past 360 degrees) and
+     * placing it in the positive degree range.
      * 
-     * @param angle - the source angle in degrees
-     * 
-     * @return an angle between 0 and 360 degrees which corresponds
-     * to the same direction vector as the source angle.
+     * @param angle
+     *            the source angle in degrees.
+     * @return an angle between 0 and 360 degrees which corresponds to the same
+     *         direction vector as the source angle.
      */
     double getNormAngle(double angle) {
         double n = Math.floor(angle / 360.0);
@@ -893,10 +1027,10 @@
     /**
      * Determines whether the given angle is contained in the span of the arc.
      * 
-     * @param angle the angle to test in degrees.
-     * 
-     * @return true, if the given angle is between the start angle and 
-     * the end angle of the arc.
+     * @param angle
+     *            the angle to test in degrees.
+     * @return true, if the given angle is between the start angle and the end
+     *         angle of the arc.
      */
     public boolean containsAngle(double angle) {
         double extent = getAngleExtent();
@@ -912,8 +1046,7 @@
         if (a2 < 0.0) {
             return angle >= a2 + 360.0 || angle <= a1;
         }
-        return extent > 0.0 ? a1 <= angle && angle <= a2 : a2 <= angle
-                && angle <= a1;
+        return extent > 0.0 ? a1 <= angle && angle <= a2 : a2 <= angle && angle <= a1;
     }
 
     public boolean contains(double px, double py) {
@@ -931,8 +1064,7 @@
             return true;
         }
 
-        boolean containsAngle = containsAngle(Math.toDegrees(-Math
-                .atan2(ny, nx)));
+        boolean containsAngle = containsAngle(Math.toDegrees(-Math.atan2(ny, nx)));
         if (type == PIE) {
             return containsAngle;
         }
@@ -943,14 +1075,13 @@
         Line2D l = new Line2D.Double(getStartPoint(), getEndPoint());
         int ccw1 = l.relativeCCW(px, py);
         int ccw2 = l.relativeCCW(getCenterX(), getCenterY());
-        return ccw1 == 0 || ccw2 == 0
-                || ((ccw1 + ccw2) == 0 ^ absExtent > 180.0);
+        return ccw1 == 0 || ccw2 == 0 || ((ccw1 + ccw2) == 0 ^ absExtent > 180.0);
     }
 
     public boolean contains(double rx, double ry, double rw, double rh) {
 
-        if (!(contains(rx, ry) && contains(rx + rw, ry)
-                && contains(rx + rw, ry + rh) && contains(rx, ry + rh))) {
+        if (!(contains(rx, ry) && contains(rx + rw, ry) && contains(rx + rw, ry + rh) && contains(
+                rx, ry + rh))) {
             return false;
         }
 
@@ -1003,9 +1134,8 @@
         }
 
         if (type == PIE) {
-            if (r.intersectsLine(p1.getX(), p1.getY(), cx, cy) ||
-                r.intersectsLine(p2.getX(), p2.getY(), cx, cy))
-            {
+            if (r.intersectsLine(p1.getX(), p1.getY(), cx, cy)
+                    || r.intersectsLine(p2.getX(), p2.getY(), cx, cy)) {
                 return true;
             }
         } else {
@@ -1025,4 +1155,3 @@
     }
 
 }
-
diff --git a/awt/java/awt/geom/Area.java b/awt/java/awt/geom/Area.java
index bc27d4e..e6619e3 100644
--- a/awt/java/awt/geom/Area.java
+++ b/awt/java/awt/geom/Area.java
@@ -18,6 +18,7 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt.geom;
 
 import java.awt.Rectangle;
@@ -27,13 +28,18 @@
 import java.util.NoSuchElementException;
 
 import org.apache.harmony.awt.internal.nls.Messages;
+import org.apache.harmony.luni.util.NotImplementedException;
 
 /**
  * The Class Area provides a minimal implementation for a generic shape.
+ * 
+ * @since Android 1.0
  */
 public class Area implements Shape, Cloneable {
 
-    /** The source Shape object. */
+    /**
+     * The source Shape object.
+     */
     Shape s;
 
     /**
@@ -80,7 +86,8 @@
     /**
      * Instantiates a new area with data given by the specified shape.
      * 
-     * @param s the shape that gives the data for this Area
+     * @param s
+     *            the shape that gives the data for this Area.
      */
     public Area(Shape s) {
         if (s == null) {
@@ -114,11 +121,11 @@
     /**
      * Tests whether the object is equal to this Area.
      * 
-     * @param obj the object to compare
-     * 
-     * @return true, if successful
-     * 
-     * @throws NotImplementedException if this method is not implemented
+     * @param obj
+     *            the object to compare.
+     * @return true, if successful.
+     * @throws NotImplementedException
+     *             if this method is not implemented.
      */
     public boolean equals(Area obj) throws org.apache.harmony.luni.util.NotImplementedException {
         throw new RuntimeException("Not implemented"); //$NON-NLS-1$
@@ -140,7 +147,7 @@
     }
 
     public Rectangle2D getBounds2D() {
-        return s == null ? new Rectangle2D.Double(): s.getBounds2D();
+        return s == null ? new Rectangle2D.Double() : s.getBounds2D();
     }
 
     public PathIterator getPathIterator(AffineTransform t) {
@@ -154,32 +161,34 @@
     /**
      * Adds the specified area to this area.
      * 
-     * @param area the area to add to this area
-     * 
-     * @throws NotImplementedException if this method is not implemented
+     * @param area
+     *            the area to add to this area.
+     * @throws NotImplementedException
+     *             if this method is not implemented.
      */
     public void add(Area area) throws org.apache.harmony.luni.util.NotImplementedException {
         throw new RuntimeException("Not implemented"); //$NON-NLS-1$
     }
 
     /**
-     * Performs an exclusive or operation between this shape and the
-     * specified shape.
+     * Performs an exclusive or operation between this shape and the specified
+     * shape.
      * 
-     * @param area the area to XOR against this area
-     * 
-     * @throws NotImplementedException if this method is not implemented
+     * @param area
+     *            the area to XOR against this area.
+     * @throws NotImplementedException
+     *             if this method is not implemented.
      */
     public void exclusiveOr(Area area) throws org.apache.harmony.luni.util.NotImplementedException {
         throw new RuntimeException("Not implemented"); //$NON-NLS-1$
     }
 
     /**
-     * Extracts a Rectangle2D from the source shape if the underlying shape
-     * data describes a rectangle.
+     * Extracts a Rectangle2D from the source shape if the underlying shape data
+     * describes a rectangle.
      * 
-     * @return a Rectangle2D object if the source shape is rectangle, 
-     * or null if shape is empty or not rectangle.
+     * @return a Rectangle2D object if the source shape is rectangle, or null if
+     *         shape is empty or not rectangle.
      */
     Rectangle2D extractRectangle() {
         if (s == null) {
@@ -189,7 +198,7 @@
         int count = 0;
         PathIterator p = s.getPathIterator(null);
         float[] coords = new float[6];
-        while(!p.isDone()) {
+        while (!p.isDone()) {
             int type = p.currentSegment(coords);
             if (count > 12 || type == PathIterator.SEG_QUADTO || type == PathIterator.SEG_CUBICTO) {
                 return null;
@@ -198,21 +207,22 @@
             points[count++] = coords[1];
             p.next();
         }
-        if (points[0] == points[6] && points[6] == points[8] && points[2] == points[4] &&
-            points[1] == points[3] && points[3] == points[9] && points[5] == points[7])
-        {
-            return new Rectangle2D.Float(points[0], points[1], points[2] - points[0], points[7] - points[1]);
+        if (points[0] == points[6] && points[6] == points[8] && points[2] == points[4]
+                && points[1] == points[3] && points[3] == points[9] && points[5] == points[7]) {
+            return new Rectangle2D.Float(points[0], points[1], points[2] - points[0], points[7]
+                    - points[1]);
         }
         return null;
     }
-    
+
     /**
-     * Reduces the size of this Area by intersecting it with the 
-     * specified Area if they are both rectangles.
+     * Reduces the size of this Area by intersecting it with the specified Area
+     * if they are both rectangles.
      * 
-     * @see java.awt.geom.Rectangle2D#intersect(Rectangle2D, Rectangle2D, Rectangle2D)
-     * 
-     * @param area the area
+     * @see java.awt.geom.Rectangle2D#intersect(Rectangle2D, Rectangle2D,
+     *      Rectangle2D)
+     * @param area
+     *            the area.
      */
     public void intersect(Area area) {
         Rectangle2D src1 = extractRectangle();
@@ -225,9 +235,10 @@
     /**
      * Subtract the specified area from this area.
      * 
-     * @param area the area to subtract
-     * 
-     * @throws NotImplementedException if this method is not implemented
+     * @param area
+     *            the area to subtract.
+     * @throws NotImplementedException
+     *             if this method is not implemented.
      */
     public void subtract(Area area) throws org.apache.harmony.luni.util.NotImplementedException {
         throw new RuntimeException("Not implemented"); //$NON-NLS-1$
@@ -236,9 +247,9 @@
     /**
      * Checks if this Area is empty.
      * 
-     * @return true, if this Area is empty
-     * 
-     * @throws NotImplementedException if this method is not implemented
+     * @return true, if this Area is empty.
+     * @throws NotImplementedException
+     *             if this method is not implemented.
      */
     public boolean isEmpty() throws org.apache.harmony.luni.util.NotImplementedException {
         throw new RuntimeException("Not implemented"); //$NON-NLS-1$
@@ -247,9 +258,9 @@
     /**
      * Checks if this Area is polygonal.
      * 
-     * @return true, if this Area is polygonal
-     * 
-     * @throws NotImplementedException if this method is not implemented
+     * @return true, if this Area is polygonal.
+     * @throws NotImplementedException
+     *             if this method is not implemented.
      */
     public boolean isPolygonal() throws org.apache.harmony.luni.util.NotImplementedException {
         throw new RuntimeException("Not implemented"); //$NON-NLS-1$
@@ -258,9 +269,9 @@
     /**
      * Checks if this Area is rectangular.
      * 
-     * @return true, if this Area is rectangular
-     * 
-     * @throws NotImplementedException if this method is not implemented
+     * @return true, if this Area is rectangular.
+     * @throws NotImplementedException
+     *             if this method is not implemented.
      */
     public boolean isRectangular() throws org.apache.harmony.luni.util.NotImplementedException {
         throw new RuntimeException("Not implemented"); //$NON-NLS-1$
@@ -269,9 +280,9 @@
     /**
      * Checks if this Area is singular.
      * 
-     * @return true, if this Area is singular
-     * 
-     * @throws NotImplementedException if this method is not implemented
+     * @return true, if this Area is singular.
+     * @throws NotImplementedException
+     *             if this method is not implemented.
      */
     public boolean isSingular() throws org.apache.harmony.luni.util.NotImplementedException {
         throw new RuntimeException("Not implemented"); //$NON-NLS-1$
@@ -280,30 +291,32 @@
     /**
      * Resets the data of this Area.
      * 
-     * @throws NotImplementedException if this method is not implemented
+     * @throws NotImplementedException
+     *             if this method is not implemented.
      */
     public void reset() throws org.apache.harmony.luni.util.NotImplementedException {
         throw new RuntimeException("Not implemented"); //$NON-NLS-1$
     }
 
     /**
-     * Transforms the data of this Area according to the specified 
+     * Transforms the data of this Area according to the specified
      * AffineTransform.
      * 
-     * @param t the transform to use to transform the data
+     * @param t
+     *            the transform to use to transform the data.
      */
     public void transform(AffineTransform t) {
         s = t.createTransformedShape(s);
     }
 
     /**
-     * Creates a new Area that is the result of transforming the data 
-     * of this Area according to the specified AffineTransform.
+     * Creates a new Area that is the result of transforming the data of this
+     * Area according to the specified AffineTransform.
      * 
-     * @param t the transform to use to transform the data
-     * 
-     * @return the new Area that is the result of transforming the data 
-     * of this Area according to the specified AffineTransform.
+     * @param t
+     *            the transform to use to transform the data.
+     * @return the new Area that is the result of transforming the data of this
+     *         Area according to the specified AffineTransform.
      */
     public Area createTransformedArea(AffineTransform t) {
         return s == null ? new Area() : new Area(t.createTransformedShape(s));
diff --git a/awt/java/awt/geom/CubicCurve2D.java b/awt/java/awt/geom/CubicCurve2D.java
index 3e440c8..1ddedf3 100644
--- a/awt/java/awt/geom/CubicCurve2D.java
+++ b/awt/java/awt/geom/CubicCurve2D.java
@@ -18,6 +18,7 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt.geom;
 
 import java.awt.Rectangle;
@@ -28,49 +29,69 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Class CubicCurve2D is a Shape that represents a segment of a 
- * quadratic (Bezier) curve. The curved segment is determined by four points:
- * a start point, an end point, and two control points. 
- * The control points give information about the tangent and next 
- * derivative at the endpoints according to the standard theory of 
- * Bezier curves. For more information on Bezier curves, 
- * see <a href="http://en.wikipedia.org/wiki/B%C3%A9zier_curve">this article</a>.
+ * The Class CubicCurve2D is a Shape that represents a segment of a quadratic
+ * (Bezier) curve. The curved segment is determined by four points: a start
+ * point, an end point, and two control points. The control points give
+ * information about the tangent and next derivative at the endpoints according
+ * to the standard theory of Bezier curves. For more information on Bezier
+ * curves, see <a href="http://en.wikipedia.org/wiki/B%C3%A9zier_curve">this
+ * article</a>.
+ * 
+ * @since Android 1.0
  */
 public abstract class CubicCurve2D implements Shape, Cloneable {
 
     /**
-     * The Class Float is the subclass of CubicCurve2D that has all 
-     * of its data values stored with float-level precision.
+     * The Class Float is the subclass of CubicCurve2D that has all of its data
+     * values stored with float-level precision.
+     * 
+     * @since Android 1.0
      */
     public static class Float extends CubicCurve2D {
 
-        /** The x coordinate of the starting point. */
+        /**
+         * The x coordinate of the starting point.
+         */
         public float x1;
-        
-        /** The y coordinate of the starting point. */
+
+        /**
+         * The y coordinate of the starting point.
+         */
         public float y1;
-        
-        /** The x coordinate of the first control point. */
+
+        /**
+         * The x coordinate of the first control point.
+         */
         public float ctrlx1;
-        
-        /** The y coordinate of the first control point. */
+
+        /**
+         * The y coordinate of the first control point.
+         */
         public float ctrly1;
-        
-        /** The x coordinate of the second control point. */
+
+        /**
+         * The x coordinate of the second control point.
+         */
         public float ctrlx2;
-        
-        /** The y coordinate of the second control point. */
+
+        /**
+         * The y coordinate of the second control point.
+         */
         public float ctrly2;
-        
-        /** The x coordinate of the end point. */
+
+        /**
+         * The x coordinate of the end point.
+         */
         public float x2;
-        
-        /** The y coordinate of the end point. */
+
+        /**
+         * The y coordinate of the end point.
+         */
         public float y2;
 
         /**
-         * Instantiates a new float-valued CubicCurve2D with all coordinate values
-         * set to zero.
+         * Instantiates a new float-valued CubicCurve2D with all coordinate
+         * values set to zero.
          */
         public Float() {
         }
@@ -79,16 +100,25 @@
          * Instantiates a new float-valued CubicCurve2D with the specified
          * coordinate values.
          * 
-         * @param x1 the x coordinate of the starting point
-         * @param y1 the y coordinate of the starting point
-         * @param ctrlx1 the x coordinate of the first control point
-         * @param ctrly1 the y coordinate of the first control point
-         * @param ctrlx2 the x coordinate of the second control point
-         * @param ctrly2 the y coordinate of the second control point
-         * @param x2 the x coordinate of the end point
-         * @param y2 the y coordinate of the end point
+         * @param x1
+         *            the x coordinate of the starting point.
+         * @param y1
+         *            the y coordinate of the starting point.
+         * @param ctrlx1
+         *            the x coordinate of the first control point.
+         * @param ctrly1
+         *            the y coordinate of the first control point.
+         * @param ctrlx2
+         *            the x coordinate of the second control point.
+         * @param ctrly2
+         *            the y coordinate of the second control point.
+         * @param x2
+         *            the x coordinate of the end point.
+         * @param y2
+         *            the y coordinate of the end point.
          */
-        public Float(float x1, float y1, float ctrlx1, float ctrly1, float ctrlx2, float ctrly2, float x2, float y2) {
+        public Float(float x1, float y1, float ctrlx1, float ctrly1, float ctrlx2, float ctrly2,
+                float x2, float y2) {
             setCurve(x1, y1, ctrlx1, ctrly1, ctrlx2, ctrly2, x2, y2);
         }
 
@@ -153,9 +183,8 @@
         }
 
         @Override
-        public void setCurve(double x1, double y1, double ctrlx1, double ctrly1,
-                double ctrlx2, double ctrly2, double x2, double y2)
-        {
+        public void setCurve(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2,
+                double ctrly2, double x2, double y2) {
             this.x1 = (float)x1;
             this.y1 = (float)y1;
             this.ctrlx1 = (float)ctrlx1;
@@ -169,18 +198,25 @@
         /**
          * Sets the data values of the curve.
          * 
-         * @param x1 the x coordinate of the starting point
-         * @param y1 the y coordinate of the starting point
-         * @param ctrlx1 the x coordinate of the first control point
-         * @param ctrly1 the y coordinate of the first control point
-         * @param ctrlx2 the x coordinate of the second control point
-         * @param ctrly2 the y coordinate of the second control point
-         * @param x2 the x coordinate of the end point
-         * @param y2 the y coordinate of the end point
+         * @param x1
+         *            the x coordinate of the starting point.
+         * @param y1
+         *            the y coordinate of the starting point.
+         * @param ctrlx1
+         *            the x coordinate of the first control point.
+         * @param ctrly1
+         *            the y coordinate of the first control point.
+         * @param ctrlx2
+         *            the x coordinate of the second control point.
+         * @param ctrly2
+         *            the y coordinate of the second control point.
+         * @param x2
+         *            the x coordinate of the end point.
+         * @param y2
+         *            the y coordinate of the end point.
          */
-        public void setCurve(float x1, float y1, float ctrlx1, float ctrly1,
-                float ctrlx2, float ctrly2, float x2, float y2)
-        {
+        public void setCurve(float x1, float y1, float ctrlx1, float ctrly1, float ctrlx2,
+                float ctrly2, float x2, float y2) {
             this.x1 = x1;
             this.y1 = y1;
             this.ctrlx1 = ctrlx1;
@@ -201,38 +237,56 @@
     }
 
     /**
-     * The Class Double is the subclass of CubicCurve2D that has all 
-     * of its data values stored with double-level precision.
+     * The Class Double is the subclass of CubicCurve2D that has all of its data
+     * values stored with double-level precision.
+     * 
+     * @since Android 1.0
      */
     public static class Double extends CubicCurve2D {
 
-        /** The x coordinate of the starting point. */
+        /**
+         * The x coordinate of the starting point.
+         */
         public double x1;
-        
-        /** The y coordinate of the starting point. */
+
+        /**
+         * The y coordinate of the starting point.
+         */
         public double y1;
-        
-        /** The x coordinate of the first control point. */
+
+        /**
+         * The x coordinate of the first control point.
+         */
         public double ctrlx1;
-        
-        /** The y coordinate of the first control point. */
+
+        /**
+         * The y coordinate of the first control point.
+         */
         public double ctrly1;
-        
-        /** The x coordinate of the second control point. */
+
+        /**
+         * The x coordinate of the second control point.
+         */
         public double ctrlx2;
-        
-        /** The y coordinate of the second control point. */
+
+        /**
+         * The y coordinate of the second control point.
+         */
         public double ctrly2;
-        
-        /** The x coordinate of the end point. */
+
+        /**
+         * The x coordinate of the end point.
+         */
         public double x2;
-        
-        /** The y coordinate of the end point. */
+
+        /**
+         * The y coordinate of the end point.
+         */
         public double y2;
 
         /**
-         * Instantiates a new double-valued CubicCurve2D with all coordinate values
-         * set to zero.
+         * Instantiates a new double-valued CubicCurve2D with all coordinate
+         * values set to zero.
          */
         public Double() {
         }
@@ -241,17 +295,25 @@
          * Instantiates a new double-valued CubicCurve2D with the specified
          * coordinate values.
          * 
-         * @param x1 the x coordinate of the starting point
-         * @param y1 the y coordinate of the starting point
-         * @param ctrlx1 the x coordinate of the first control point
-         * @param ctrly1 the y coordinate of the first control point
-         * @param ctrlx2 the x coordinate of the second control point
-         * @param ctrly2 the y coordinate of the second control point
-         * @param x2 the x coordinate of the end point
-         * @param y2 the y coordinate of the end point
+         * @param x1
+         *            the x coordinate of the starting point.
+         * @param y1
+         *            the y coordinate of the starting point.
+         * @param ctrlx1
+         *            the x coordinate of the first control point.
+         * @param ctrly1
+         *            the y coordinate of the first control point.
+         * @param ctrlx2
+         *            the x coordinate of the second control point.
+         * @param ctrly2
+         *            the y coordinate of the second control point.
+         * @param x2
+         *            the x coordinate of the end point.
+         * @param y2
+         *            the y coordinate of the end point.
          */
-        public Double(double x1, double y1, double ctrlx1, double ctrly1,
-                double ctrlx2, double ctrly2, double x2, double y2) {
+        public Double(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2,
+                double ctrly2, double x2, double y2) {
             setCurve(x1, y1, ctrlx1, ctrly1, ctrlx2, ctrly2, x2, y2);
         }
 
@@ -316,9 +378,8 @@
         }
 
         @Override
-        public void setCurve(double x1, double y1, double ctrlx1, double ctrly1,
-                double ctrlx2, double ctrly2, double x2, double y2)
-        {
+        public void setCurve(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2,
+                double ctrly2, double x2, double y2) {
             this.x1 = x1;
             this.y1 = y1;
             this.ctrlx1 = ctrlx1;
@@ -339,27 +400,36 @@
     }
 
     /*
-     * CubicCurve2D path iterator 
+     * CubicCurve2D path iterator
      */
     /**
      * The Iterator class for the Shape CubicCurve2D.
      */
     class Iterator implements PathIterator {
 
-        /** The source CubicCurve2D object. */
+        /**
+         * The source CubicCurve2D object.
+         */
         CubicCurve2D c;
-        
-        /** The path iterator transformation. */
+
+        /**
+         * The path iterator transformation.
+         */
         AffineTransform t;
-        
-        /** The current segmenet index. */
+
+        /**
+         * The current segment index.
+         */
         int index;
 
         /**
-         * Constructs a new CubicCurve2D.Iterator for given line and transformation
+         * Constructs a new CubicCurve2D.Iterator for given line and
+         * transformation
          * 
-         * @param c - the source CubicCurve2D object
-         * @param t the t
+         * @param c
+         *            the source CubicCurve2D object.
+         * @param t
+         *            the affine transformation object.
          */
         Iterator(CubicCurve2D c, AffineTransform t) {
             this.c = c;
@@ -443,42 +513,42 @@
     /**
      * Gets the x coordinate of the starting point.
      * 
-     * @return the x coordinate of the starting point
+     * @return the x coordinate of the starting point.
      */
     public abstract double getX1();
 
     /**
      * Gets the y coordinate of the starting point.
      * 
-     * @return the y coordinate of the starting point
+     * @return the y coordinate of the starting point.
      */
     public abstract double getY1();
 
     /**
      * Gets the starting point.
      * 
-     * @return the starting point
+     * @return the starting point.
      */
     public abstract Point2D getP1();
 
     /**
      * Gets the x coordinate of the first control point.
      * 
-     * @return the x coordinate of the first control point
+     * @return the x coordinate of the first control point.
      */
     public abstract double getCtrlX1();
 
     /**
      * Gets the y coordinate of the first control point.
      * 
-     * @return the y coordinate of the first control point
+     * @return the y coordinate of the first control point.
      */
     public abstract double getCtrlY1();
 
     /**
      * Gets the second control point.
      * 
-     * @return the second control point
+     * @return the second control point.
      */
     public abstract Point2D getCtrlP1();
 
@@ -499,42 +569,50 @@
     /**
      * Gets the second control point.
      * 
-     * @return the second control point
+     * @return the second control point.
      */
     public abstract Point2D getCtrlP2();
 
     /**
      * Gets the x coordinate of the end point.
      * 
-     * @return the x coordinate of the end point
+     * @return the x coordinate of the end point.
      */
     public abstract double getX2();
 
     /**
      * Gets the y coordinate of the end point.
      * 
-     * @return the y coordinate of the end point
+     * @return the y coordinate of the end point.
      */
     public abstract double getY2();
 
     /**
      * Gets the end point.
      * 
-     * @return the end point
+     * @return the end point.
      */
     public abstract Point2D getP2();
 
     /**
      * Sets the data of the curve.
      * 
-     * @param x1 the x coordinate of the starting point
-     * @param y1 the y coordinate of the starting point
-     * @param ctrlx1 the x coordinate of the first control point
-     * @param ctrly1 the y coordinate of the first control point
-     * @param ctrlx2 the x coordinate of the second control point
-     * @param ctrly2 the y coordinate of the second control point
-     * @param x2 the x coordinate of the end point
-     * @param y2 the y coordinate of the end point
+     * @param x1
+     *            the x coordinate of the starting point.
+     * @param y1
+     *            the y coordinate of the starting point.
+     * @param ctrlx1
+     *            the x coordinate of the first control point.
+     * @param ctrly1
+     *            the y coordinate of the first control point.
+     * @param ctrlx2
+     *            the x coordinate of the second control point.
+     * @param ctrly2
+     *            the y coordinate of the second control point.
+     * @param x2
+     *            the x coordinate of the end point.
+     * @param y2
+     *            the y coordinate of the end point.
      */
     public abstract void setCurve(double x1, double y1, double ctrlx1, double ctrly1,
             double ctrlx2, double ctrly2, double x2, double y2);
@@ -542,224 +620,238 @@
     /**
      * Sets the data of the curve as point objects.
      * 
-     * @param p1 the starting point
-     * @param cp1 the first control point
-     * @param cp2 the second control point
-     * @param p2 the end point
-     * 
-     * @throws NullPointerException if any of the points is null.
+     * @param p1
+     *            the starting point.
+     * @param cp1
+     *            the first control point.
+     * @param cp2
+     *            the second control point.
+     * @param p2
+     *            the end point.
+     * @throws NullPointerException
+     *             if any of the points is null.
      */
     public void setCurve(Point2D p1, Point2D cp1, Point2D cp2, Point2D p2) {
-        setCurve(
-                p1.getX(), p1.getY(),
-                cp1.getX(), cp1.getY(),
-                cp2.getX(), cp2.getY(),
-                p2.getX(), p2.getY());
+        setCurve(p1.getX(), p1.getY(), cp1.getX(), cp1.getY(), cp2.getX(), cp2.getY(), p2.getX(),
+                p2.getY());
     }
 
     /**
-     * Sets the data of the curve by reading the data from an array
-     * of values. The values are read in the same order as the arguments
-     * of the method {@link CubicCurve2D#setCurve(double, double, double, double, double, double, double, double)}.
+     * Sets the data of the curve by reading the data from an array of values.
+     * The values are read in the same order as the arguments of the method
+     * {@link CubicCurve2D#setCurve(double, double, double, double, double, double, double, double)}
+     * .
      * 
-     * @param coords the array of values containing the new coordinates
-     * @param offset the offset of the data to read within the array
-     * 
-     * @throws ArrayIndexOutOfBoundsException if coords.length < offset + 8.
-     * @throws NullPointerException if the coordinate array is null.
+     * @param coords
+     *            the array of values containing the new coordinates.
+     * @param offset
+     *            the offset of the data to read within the array.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if {@code coords.length} < offset + 8.
+     * @throws NullPointerException
+     *             if the coordinate array is null.
      */
     public void setCurve(double[] coords, int offset) {
-        setCurve(
-                coords[offset + 0], coords[offset + 1],
-                coords[offset + 2], coords[offset + 3],
-                coords[offset + 4], coords[offset + 5],
-                coords[offset + 6], coords[offset + 7]);
+        setCurve(coords[offset + 0], coords[offset + 1], coords[offset + 2], coords[offset + 3],
+                coords[offset + 4], coords[offset + 5], coords[offset + 6], coords[offset + 7]);
     }
 
     /**
-     * Sets the data of the curve by reading the data from an array
-     * of points. The values are read in the same order as the arguments
-     * of the method {@link CubicCurve2D#setCurve(Point2D, Point2D, Point2D, Point2D)}
+     * Sets the data of the curve by reading the data from an array of points.
+     * The values are read in the same order as the arguments of the method
+     * {@link CubicCurve2D#setCurve(Point2D, Point2D, Point2D, Point2D)}
      * 
-     * @param points the array of points containing the new coordinates
-     * @param offset the offset of the data to read within the array
-     * 
-     * @throws ArrayIndexOutOfBoundsException if points.length < offset + .
-     * @throws NullPointerException if the point array is null.
+     * @param points
+     *            the array of points containing the new coordinates.
+     * @param offset
+     *            the offset of the data to read within the array.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if {@code points.length} < offset + .
+     * @throws NullPointerException
+     *             if the point array is null.
      */
     public void setCurve(Point2D[] points, int offset) {
-        setCurve(
-                points[offset + 0].getX(), points[offset + 0].getY(),
-                points[offset + 1].getX(), points[offset + 1].getY(),
-                points[offset + 2].getX(), points[offset + 2].getY(),
+        setCurve(points[offset + 0].getX(), points[offset + 0].getY(), points[offset + 1].getX(),
+                points[offset + 1].getY(), points[offset + 2].getX(), points[offset + 2].getY(),
                 points[offset + 3].getX(), points[offset + 3].getY());
     }
 
     /**
      * Sets the data of the curve by copying it from another CubicCurve2D.
      * 
-     * @param curve the curve to copy the data points from
-     * 
-     * @throws NullPointerException if the curve is null.
+     * @param curve
+     *            the curve to copy the data points from.
+     * @throws NullPointerException
+     *             if the curve is null.
      */
     public void setCurve(CubicCurve2D curve) {
-        setCurve(
-                curve.getX1(), curve.getY1(),
-                curve.getCtrlX1(), curve.getCtrlY1(),
-                curve.getCtrlX2(), curve.getCtrlY2(),
-                curve.getX2(), curve.getY2());
+        setCurve(curve.getX1(), curve.getY1(), curve.getCtrlX1(), curve.getCtrlY1(), curve
+                .getCtrlX2(), curve.getCtrlY2(), curve.getX2(), curve.getY2());
     }
 
     /**
-     * Gets the square of the flatness of this curve, where the flatness is the 
-     * maximum distance from the curves control points to the 
-     * line segment connecting the two points.
+     * Gets the square of the flatness of this curve, where the flatness is the
+     * maximum distance from the curves control points to the line segment
+     * connecting the two points.
      * 
-     * @return the square of the flatness
+     * @return the square of the flatness.
      */
     public double getFlatnessSq() {
-        return getFlatnessSq(
-                getX1(), getY1(),
-                getCtrlX1(), getCtrlY1(),
-                getCtrlX2(), getCtrlY2(),
+        return getFlatnessSq(getX1(), getY1(), getCtrlX1(), getCtrlY1(), getCtrlX2(), getCtrlY2(),
                 getX2(), getY2());
     }
 
     /**
-     * Gets the square of the flatness of the cubic curve segment 
-     * defined by the specified values.
+     * Gets the square of the flatness of the cubic curve segment defined by the
+     * specified values.
      * 
-     * @param x1 the x coordinate of the starting point
-     * @param y1 the y coordinate of the starting point
-     * @param ctrlx1 the x coordinate of the first control point
-     * @param ctrly1 the y coordinate of the first control point
-     * @param ctrlx2 the x coordinate of the second control point
-     * @param ctrly2 the y coordinate of the second control point
-     * @param x2 the x coordinate of the end point
-     * @param y2 the y coordinate of the end point
-     * 
-     * @return the square of the flatness
+     * @param x1
+     *            the x coordinate of the starting point.
+     * @param y1
+     *            the y coordinate of the starting point.
+     * @param ctrlx1
+     *            the x coordinate of the first control point.
+     * @param ctrly1
+     *            the y coordinate of the first control point.
+     * @param ctrlx2
+     *            the x coordinate of the second control point.
+     * @param ctrly2
+     *            the y coordinate of the second control point.
+     * @param x2
+     *            the x coordinate of the end point.
+     * @param y2
+     *            the y coordinate of the end point.
+     * @return the square of the flatness.
      */
     public static double getFlatnessSq(double x1, double y1, double ctrlx1, double ctrly1,
-            double ctrlx2, double ctrly2, double x2, double y2)
-    {
-        return Math.max(
-                Line2D.ptSegDistSq(x1, y1, x2, y2, ctrlx1, ctrly1),
-                Line2D.ptSegDistSq(x1, y1, x2, y2, ctrlx2, ctrly2));
+            double ctrlx2, double ctrly2, double x2, double y2) {
+        return Math.max(Line2D.ptSegDistSq(x1, y1, x2, y2, ctrlx1, ctrly1), Line2D.ptSegDistSq(x1,
+                y1, x2, y2, ctrlx2, ctrly2));
     }
 
     /**
-     * Gets the square of the flatness of the cubic curve segment 
-     * defined by the specified values. The values are read in the same order as the arguments
-     * of the method {@link CubicCurve2D#getFlatnessSq(double, double, double, double, double, double, double, double)}.
+     * Gets the square of the flatness of the cubic curve segment defined by the
+     * specified values. The values are read in the same order as the arguments
+     * of the method
+     * {@link CubicCurve2D#getFlatnessSq(double, double, double, double, double, double, double, double)}
+     * .
      * 
-     * @param coords the array of points containing the new coordinates
-     * @param offset the offset of the data to read within the array
-     * 
-     * @return the square of the flatness
-     * 
-     * @throws ArrayIndexOutOfBoundsException if points.length < offset + .
-     * @throws NullPointerException if the point array is null.
+     * @param coords
+     *            the array of points containing the new coordinates.
+     * @param offset
+     *            the offset of the data to read within the array.
+     * @return the square of the flatness.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if points.length < offset + .
+     * @throws NullPointerException
+     *             if the point array is null.
      */
     public static double getFlatnessSq(double coords[], int offset) {
-        return getFlatnessSq(
-                coords[offset + 0], coords[offset + 1],
-                coords[offset + 2], coords[offset + 3],
-                coords[offset + 4], coords[offset + 5],
-                coords[offset + 6], coords[offset + 7]);
+        return getFlatnessSq(coords[offset + 0], coords[offset + 1], coords[offset + 2],
+                coords[offset + 3], coords[offset + 4], coords[offset + 5], coords[offset + 6],
+                coords[offset + 7]);
     }
 
     /**
-     * Gets the flatness of this curve, where the flatness is the 
-     * maximum distance from the curves control points to the 
-     * line segment connecting the two points.
+     * Gets the flatness of this curve, where the flatness is the maximum
+     * distance from the curves control points to the line segment connecting
+     * the two points.
      * 
-     * @return the flatness of this curve
+     * @return the flatness of this curve.
      */
     public double getFlatness() {
-        return getFlatness(
-                getX1(), getY1(),
-                getCtrlX1(), getCtrlY1(),
-                getCtrlX2(), getCtrlY2(),
+        return getFlatness(getX1(), getY1(), getCtrlX1(), getCtrlY1(), getCtrlX2(), getCtrlY2(),
                 getX2(), getY2());
     }
 
     /**
-     * Gets the flatness of the cubic curve segment 
-     * defined by the specified values.
+     * Gets the flatness of the cubic curve segment defined by the specified
+     * values.
      * 
-     * @param x1 the x coordinate of the starting point
-     * @param y1 the y coordinate of the starting point
-     * @param ctrlx1 the x coordinate of the first control point
-     * @param ctrly1 the y coordinate of the first control point
-     * @param ctrlx2 the x coordinate of the second control point
-     * @param ctrly2 the y coordinate of the second control point
-     * @param x2 the x coordinate of the end point
-     * @param y2 the y coordinate of the end point
-     * 
-     * @return the flatness
+     * @param x1
+     *            the x coordinate of the starting point.
+     * @param y1
+     *            the y coordinate of the starting point.
+     * @param ctrlx1
+     *            the x coordinate of the first control point.
+     * @param ctrly1
+     *            the y coordinate of the first control point.
+     * @param ctrlx2
+     *            the x coordinate of the second control point.
+     * @param ctrly2
+     *            the y coordinate of the second control point.
+     * @param x2
+     *            the x coordinate of the end point.
+     * @param y2
+     *            the y coordinate of the end point.
+     * @return the flatness.
      */
     public static double getFlatness(double x1, double y1, double ctrlx1, double ctrly1,
-            double ctrlx2, double ctrly2, double x2, double y2)
-    {
+            double ctrlx2, double ctrly2, double x2, double y2) {
         return Math.sqrt(getFlatnessSq(x1, y1, ctrlx1, ctrly1, ctrlx2, ctrly2, x2, y2));
     }
 
     /**
-     * Gets the flatness of the cubic curve segment 
-     * defined by the specified values. The values are read in the same order as the arguments
-     * of the method {@link CubicCurve2D#getFlatness(double, double, double, double, double, double, double, double)}.
+     * Gets the flatness of the cubic curve segment defined by the specified
+     * values. The values are read in the same order as the arguments of the
+     * method
+     * {@link CubicCurve2D#getFlatness(double, double, double, double, double, double, double, double)}
+     * .
      * 
-     * @param coords the array of points containing the new coordinates
-     * @param offset the offset of the data to read within the array
-     * 
-     * @return the flatness
-     * 
-     * @throws ArrayIndexOutOfBoundsException if points.length < offset + .
-     * @throws NullPointerException if the point array is null.
+     * @param coords
+     *            the array of points containing the new coordinates.
+     * @param offset
+     *            the offset of the data to read within the array.
+     * @return the flatness.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if points.length < offset + .
+     * @throws NullPointerException
+     *             if the point array is null.
      */
     public static double getFlatness(double coords[], int offset) {
-        return getFlatness(
-                coords[offset + 0], coords[offset + 1],
-                coords[offset + 2], coords[offset + 3],
-                coords[offset + 4], coords[offset + 5],
-                coords[offset + 6], coords[offset + 7]);
+        return getFlatness(coords[offset + 0], coords[offset + 1], coords[offset + 2],
+                coords[offset + 3], coords[offset + 4], coords[offset + 5], coords[offset + 6],
+                coords[offset + 7]);
     }
 
     /**
-     * Creates the data for two cubic curves by dividing this
-     * curve in two. The division point is the point on the curve 
-     * that is closest to the average of curve's two control points. 
-     * The two new control points (nearest the new endpoint) are computed
-     * by averaging the original control points with the new endpoint.
-     * The data of this curve is left unchanged.
+     * Creates the data for two cubic curves by dividing this curve in two. The
+     * division point is the point on the curve that is closest to the average
+     * of curve's two control points. The two new control points (nearest the
+     * new endpoint) are computed by averaging the original control points with
+     * the new endpoint. The data of this curve is left unchanged.
      * 
-     * @param left the CubicCurve2D where the left (start) segment's 
-     * data is written
-     * @param right the CubicCurve2D where the right (end) segment's 
-     * data is written
-     * 
-     * @throws NullPointerException if either curve is null.
+     * @param left
+     *            the CubicCurve2D where the left (start) segment's data is
+     *            written.
+     * @param right
+     *            the CubicCurve2D where the right (end) segment's data is
+     *            written.
+     * @throws NullPointerException
+     *             if either curve is null.
      */
     public void subdivide(CubicCurve2D left, CubicCurve2D right) {
         subdivide(this, left, right);
     }
 
     /**
-     * Creates the data for two cubic curves by dividing the specified
-     * curve in two. The division point is the point on the curve 
-     * that is closest to the average of curve's two control points. 
-     * The two new control points (nearest the new endpoint) are computed
-     * by averaging the original control points with the new endpoint.
-     * The data of the source curve is left unchanged.
+     * Creates the data for two cubic curves by dividing the specified curve in
+     * two. The division point is the point on the curve that is closest to the
+     * average of curve's two control points. The two new control points
+     * (nearest the new endpoint) are computed by averaging the original control
+     * points with the new endpoint. The data of the source curve is left
+     * unchanged.
      * 
-     * @param src the original curve to be divided in two
-     * @param left the CubicCurve2D where the left (start) segment's 
-     * data is written
-     * @param right the CubicCurve2D where the right (end) segment's 
-     * data is written
-     * 
-     * @throws NullPointerException if either curve is null.
+     * @param src
+     *            the original curve to be divided in two.
+     * @param left
+     *            the CubicCurve2D where the left (start) segment's data is
+     *            written.
+     * @param right
+     *            the CubicCurve2D where the right (end) segment's data is
+     *            written.
+     * @throws NullPointerException
+     *             if either curve is null.
      */
     public static void subdivide(CubicCurve2D src, CubicCurve2D left, CubicCurve2D right) {
         double x1 = src.getX1();
@@ -791,27 +883,36 @@
     }
 
     /**
-     * Creates the data for two cubic curves by dividing the specified
-     * curve in two. The division point is the point on the curve 
-     * that is closest to the average of curve's two control points. 
-     * The two new control points (nearest the new endpoint) are computed
-     * by averaging the original control points with the new endpoint.
-     * The data of the source curve is left unchanged. The data for the 
-     * three curves is read/written in the usual order: { x1, y1, 
-     * ctrlx1, ctrly1, ctrlx2, crtry2, x2, y3 }
+     * Creates the data for two cubic curves by dividing the specified curve in
+     * two. The division point is the point on the curve that is closest to the
+     * average of curve's two control points. The two new control points
+     * (nearest the new endpoint) are computed by averaging the original control
+     * points with the new endpoint. The data of the source curve is left
+     * unchanged. The data for the three curves is read/written in the usual
+     * order: { x1, y1, ctrlx1, ctrly1, ctrlx2, crtry2, x2, y3 }
      * 
-     * @param src the array that gives the data values for the source curve
-     * @param srcOff the offset in the src array to read the values from
-     * @param left the array where the coordinates of the start curve should be written
-     * @param leftOff the offset in the left array to start writing the values
-     * @param right the array where the coordinates of the end curve should be written
-     * @param rightOff the offset in the right array to start writing the values
-     * 
-     * @throws ArrayIndexOutOfBoundsException if src.length < srcoff + 8
-     * or if left.length < leftOff + 8 or if right.length < rightOff + 8.
-     * @throws NullPointerException if one of the arrays is null.
+     * @param src
+     *            the array that gives the data values for the source curve.
+     * @param srcOff
+     *            the offset in the src array to read the values from.
+     * @param left
+     *            the array where the coordinates of the start curve should be
+     *            written.
+     * @param leftOff
+     *            the offset in the left array to start writing the values.
+     * @param right
+     *            the array where the coordinates of the end curve should be
+     *            written.
+     * @param rightOff
+     *            the offset in the right array to start writing the values.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if src.length < srcoff + 8 or if left.length < leftOff + 8 or
+     *             if right.length < rightOff + 8.
+     * @throws NullPointerException
+     *             if one of the arrays is null.
      */
-    public static void subdivide(double src[], int srcOff, double left[], int leftOff, double right[], int rightOff) {
+    public static void subdivide(double src[], int srcOff, double left[], int leftOff,
+            double right[], int rightOff) {
         double x1 = src[srcOff + 0];
         double y1 = src[srcOff + 1];
         double cx1 = src[srcOff + 2];
@@ -855,42 +956,43 @@
     }
 
     /**
-     * Finds the roots of the cubic polynomial. This is 
-     * accomplished by finding the (real) values of x that solve
-     * the following equation: eqn[3]*x*x*x + eqn[2]*x*x + eqn[1]*x + eqn[0] = 0.
-     * The solutions are written back into the array eqn starting
-     * from the index 0 in the array. The return value tells how 
-     * many array elements have been changed by this method call.
+     * Finds the roots of the cubic polynomial. This is accomplished by finding
+     * the (real) values of x that solve the following equation: eqn[3]*x*x*x +
+     * eqn[2]*x*x + eqn[1]*x + eqn[0] = 0. The solutions are written back into
+     * the array eqn starting from the index 0 in the array. The return value
+     * tells how many array elements have been changed by this method call.
      * 
-     * @param eqn an array containing the coefficients of the 
-     * cubic polynomial to solve.
-     * 
-     * @return the number of roots of the cubic polynomial
-     * 
-     * @throws ArrayIndexOutOfBoundsException if eqn.length < 4.
-     * @throws NullPointerException if the array is null.
+     * @param eqn
+     *            an array containing the coefficients of the cubic polynomial
+     *            to solve.
+     * @return the number of roots of the cubic polynomial.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if eqn.length < 4.
+     * @throws NullPointerException
+     *             if the array is null.
      */
     public static int solveCubic(double eqn[]) {
         return solveCubic(eqn, eqn);
     }
 
     /**
-     * Finds the roots of the cubic polynomial. This is 
-     * accomplished by finding the (real) values of x that solve
-     * the following equation: eqn[3]*x*x*x + eqn[2]*x*x + eqn[1]*x + eqn[0] = 0.
-     * The solutions are written into the array res starting
-     * from the index 0 in the array. The return value tells how 
-     * many array elements have been changed by this method call.
+     * Finds the roots of the cubic polynomial. This is accomplished by finding
+     * the (real) values of x that solve the following equation: eqn[3]*x*x*x +
+     * eqn[2]*x*x + eqn[1]*x + eqn[0] = 0. The solutions are written into the
+     * array res starting from the index 0 in the array. The return value tells
+     * how many array elements have been changed by this method call.
      * 
-     * @param eqn an array containing the coefficients of the 
-     * cubic polynomial to solve.
-     * @param res the array that this method writes the results into
-     * 
-     * @return the number of roots of the cubic polynomial
-     * 
-     * @throws ArrayIndexOutOfBoundsException if eqn.length < 4 or 
-     * if res.length is less than the number of roots.
-     * @throws NullPointerException if either array is null.
+     * @param eqn
+     *            an array containing the coefficients of the cubic polynomial
+     *            to solve.
+     * @param res
+     *            the array that this method writes the results into.
+     * @return the number of roots of the cubic polynomial.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if eqn.length < 4 or if res.length is less than the number of
+     *             roots.
+     * @throws NullPointerException
+     *             if either array is null.
      */
     public static int solveCubic(double eqn[], double res[]) {
         return Crossing.solveCubic(eqn, res);
diff --git a/awt/java/awt/geom/Dimension2D.java b/awt/java/awt/geom/Dimension2D.java
index eef63e6..ea081c5 100644
--- a/awt/java/awt/geom/Dimension2D.java
+++ b/awt/java/awt/geom/Dimension2D.java
@@ -18,12 +18,15 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt.geom;
 
 /**
- * The Class Dimension2D represents a size (width and height) of a 
- * geometric object. It stores double-valued data in order to be compatible
- * with high-precision geometric operations.
+ * The Class Dimension2D represents a size (width and height) of a geometric
+ * object. It stores double-valued data in order to be compatible with
+ * high-precision geometric operations.
+ * 
+ * @since Android 1.0
  */
 public abstract class Dimension2D implements Cloneable {
 
@@ -36,31 +39,34 @@
     /**
      * Gets the width.
      * 
-     * @return the width
+     * @return the width.
      */
     public abstract double getWidth();
 
     /**
      * Gets the height.
      * 
-     * @return the height
+     * @return the height.
      */
     public abstract double getHeight();
 
     /**
      * Sets the width and height.
      * 
-     * @param width the width
-     * @param height the height
+     * @param width
+     *            the width.
+     * @param height
+     *            the height.
      */
     public abstract void setSize(double width, double height);
 
     /**
-     * Sets the width and height based on the data of another 
-     * Dimension2D object.
+     * Sets the width and height based on the data of another Dimension2D
+     * object.
      * 
-     * @param d the Dimension2D object providing the data to copy 
-     * into this Dimension2D object
+     * @param d
+     *            the Dimension2D object providing the data to copy into this
+     *            Dimension2D object.
      */
     public void setSize(Dimension2D d) {
         setSize(d.getWidth(), d.getHeight());
@@ -75,4 +81,3 @@
         }
     }
 }
-
diff --git a/awt/java/awt/geom/Ellipse2D.java b/awt/java/awt/geom/Ellipse2D.java
index 33464af..89fd0d0 100644
--- a/awt/java/awt/geom/Ellipse2D.java
+++ b/awt/java/awt/geom/Ellipse2D.java
@@ -18,6 +18,7 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt.geom;
 
 import java.util.NoSuchElementException;
@@ -25,29 +26,41 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Class Ellipse2D describes an ellipse defined by a rectangular
- * area in which it is inscribed.
+ * The Class Ellipse2D describes an ellipse defined by a rectangular area in
+ * which it is inscribed.
+ * 
+ * @since Android 1.0
  */
 public abstract class Ellipse2D extends RectangularShape {
 
     /**
-     * The Class Float is the subclass of Ellipse2D that has all 
-     * of its data values stored with float-level precision.
+     * The Class Float is the subclass of Ellipse2D that has all of its data
+     * values stored with float-level precision.
+     * 
+     * @since Android 1.0
      */
     public static class Float extends Ellipse2D {
 
-        /** The x coordinate of the upper left corner of the ellipse's
-         * bounding rectangle. */
+        /**
+         * The x coordinate of the upper left corner of the ellipse's bounding
+         * rectangle.
+         */
         public float x;
-        
-        /** The y coordinate of the upper left corner of the ellipse's
-         * bounding rectangle. */
+
+        /**
+         * The y coordinate of the upper left corner of the ellipse's bounding
+         * rectangle.
+         */
         public float y;
-        
-        /** The width of the ellipse's bounding rectangle. */
+
+        /**
+         * The width of the ellipse's bounding rectangle.
+         */
         public float width;
-        
-        /** The height of the ellipse's bounding rectangle. */
+
+        /**
+         * The height of the ellipse's bounding rectangle.
+         */
         public float height;
 
         /**
@@ -59,12 +72,16 @@
         /**
          * Instantiates a new float-valued Ellipse2D with the specified data.
          * 
-         * @param x the x coordinate of the upper left corner of the ellipse's
-         * bounding rectangle
-         * @param y the y coordinate of the upper left corner of the ellipse's
-         * bounding rectangle
-         * @param width the width of the ellipse's bounding rectangle
-         * @param height the height of the ellipse's bounding rectangle
+         * @param x
+         *            the x coordinate of the upper left corner of the ellipse's
+         *            bounding rectangle.
+         * @param y
+         *            the y coordinate of the upper left corner of the ellipse's
+         *            bounding rectangle.
+         * @param width
+         *            the width of the ellipse's bounding rectangle.
+         * @param height
+         *            the height of the ellipse's bounding rectangle.
          */
         public Float(float x, float y, float width, float height) {
             setFrame(x, y, width, height);
@@ -98,12 +115,16 @@
         /**
          * Sets the data of the ellipse's bounding rectangle.
          * 
-         * @param x the x coordinate of the upper left corner of the ellipse's
-         * bounding rectangle
-         * @param y the y coordinate of the upper left corner of the ellipse's
-         * bounding rectangle
-         * @param width the width of the ellipse's bounding rectangle
-         * @param height the height of the ellipse's bounding rectangle
+         * @param x
+         *            the x coordinate of the upper left corner of the ellipse's
+         *            bounding rectangle.
+         * @param y
+         *            the y coordinate of the upper left corner of the ellipse's
+         *            bounding rectangle.
+         * @param width
+         *            the width of the ellipse's bounding rectangle.
+         * @param height
+         *            the height of the ellipse's bounding rectangle.
          */
         public void setFrame(float x, float y, float width, float height) {
             this.x = x;
@@ -126,23 +147,33 @@
     }
 
     /**
-     * The Class Double is the subclass of Ellipse2D that has all 
-     * of its data values stored with double-level precision.
+     * The Class Double is the subclass of Ellipse2D that has all of its data
+     * values stored with double-level precision.
+     * 
+     * @since Android 1.0
      */
     public static class Double extends Ellipse2D {
 
-        /** The x coordinate of the upper left corner of the ellipse's
-         * bounding rectangle. */
+        /**
+         * The x coordinate of the upper left corner of the ellipse's bounding
+         * rectangle.
+         */
         public double x;
-        
-        /** The y coordinate of the upper left corner of the ellipse's
-         * bounding rectangle. */
+
+        /**
+         * The y coordinate of the upper left corner of the ellipse's bounding
+         * rectangle.
+         */
         public double y;
-        
-        /** The width of the ellipse's bounding rectangle. */
+
+        /**
+         * The width of the ellipse's bounding rectangle.
+         */
         public double width;
-        
-        /** The height of the ellipse's bounding rectangle. */
+
+        /**
+         * The height of the ellipse's bounding rectangle.
+         */
         public double height;
 
         /**
@@ -152,15 +183,18 @@
         }
 
         /**
-         * Instantiates a new double-valued Ellipse2D with the specified
-         * data.
+         * Instantiates a new double-valued Ellipse2D with the specified data.
          * 
-         * @param x the x coordinate of the upper left corner of the ellipse's
-         * bounding rectangle
-         * @param y the y coordinate of the upper left corner of the ellipse's
-         * bounding rectangle
-         * @param width the width of the ellipse's bounding rectangle
-         * @param height the height of the ellipse's bounding rectangle
+         * @param x
+         *            the x coordinate of the upper left corner of the ellipse's
+         *            bounding rectangle.
+         * @param y
+         *            the y coordinate of the upper left corner of the ellipse's
+         *            bounding rectangle.
+         * @param width
+         *            the width of the ellipse's bounding rectangle.
+         * @param height
+         *            the height of the ellipse's bounding rectangle.
          */
         public Double(double x, double y, double width, double height) {
             setFrame(x, y, width, height);
@@ -205,7 +239,7 @@
     }
 
     /*
-     * Ellipse2D path iterator 
+     * Ellipse2D path iterator
      */
     /**
      * The subclass of PathIterator to traverse an Ellipse2D.
@@ -213,46 +247,72 @@
     class Iterator implements PathIterator {
 
         /*
-         * Ellipse is subdivided into four quarters by x and y axis. Each part approximated by
-         * cubic Bezier curve. Arc in first quarter is started in (a, 0) and finished in (0, b) points.
-         * Control points for cubic curve wiil be (a, 0), (a, m), (n, b) and (0, b) where n and m are
-         * calculated based on requirement Bezier curve in point 0.5 should lay on the arc.
+         * Ellipse is subdivided into four quarters by x and y axis. Each part
+         * approximated by cubic Bezier curve. Arc in first quarter is started
+         * in (a, 0) and finished in (0, b) points. Control points for cubic
+         * curve wiil be (a, 0), (a, m), (n, b) and (0, b) where n and m are
+         * calculated based on requirement Bezier curve in point 0.5 should lay
+         * on the arc.
          */
 
-        /** The coefficient to calculate control points of Bezier curves. */
+        /**
+         * The coefficient to calculate control points of Bezier curves.
+         */
         final double u = 2.0 / 3.0 * (Math.sqrt(2.0) - 1.0);
 
-        /** The points coordinates calculation table. */
+        /**
+         * The points coordinates calculation table.
+         */
         final double points[][] = {
-                { 1.0, 0.5 + u, 0.5 + u, 1.0, 0.5, 1.0 },
-                { 0.5 - u, 1.0, 0.0, 0.5 + u, 0.0, 0.5 },
-                { 0.0, 0.5 - u, 0.5 - u, 0.0, 0.5, 0.0 },
-                { 0.5 + u, 0.0, 1.0, 0.5 - u, 1.0, 0.5 }
+                {
+                        1.0, 0.5 + u, 0.5 + u, 1.0, 0.5, 1.0
+                }, {
+                        0.5 - u, 1.0, 0.0, 0.5 + u, 0.0, 0.5
+                }, {
+                        0.0, 0.5 - u, 0.5 - u, 0.0, 0.5, 0.0
+                }, {
+                        0.5 + u, 0.0, 1.0, 0.5 - u, 1.0, 0.5
+                }
         };
 
-        /** The x coordinate of left-upper corner of the ellipse bounds. */
+        /**
+         * The x coordinate of left-upper corner of the ellipse bounds.
+         */
         double x;
-        
-        /** The y coordinate of left-upper corner of the ellipse bounds. */
+
+        /**
+         * The y coordinate of left-upper corner of the ellipse bounds.
+         */
         double y;
-        
-        /** The width of the ellipse bounds. */
+
+        /**
+         * The width of the ellipse bounds.
+         */
         double width;
-        
-        /** The height of the ellipse bounds. */
+
+        /**
+         * The height of the ellipse bounds.
+         */
         double height;
 
-        /** The path iterator transformation. */
+        /**
+         * The path iterator transformation.
+         */
         AffineTransform t;
 
-        /** The current segmenet index. */
+        /**
+         * The current segment index.
+         */
         int index;
 
         /**
-         * Constructs a new Ellipse2D.Iterator for given ellipse and transformation
+         * Constructs a new Ellipse2D.Iterator for given ellipse and
+         * transformation
          * 
-         * @param e - the source Ellipse2D object
-         * @param t the t
+         * @param e
+         *            the source Ellipse2D object.
+         * @param t
+         *            the affine transformation object.
          */
         Iterator(Ellipse2D e, AffineTransform t) {
             this.x = e.getX();
@@ -389,15 +449,10 @@
         double rx2 = rx + rw;
         double ry2 = ry + rh;
 
-        return
-            contains(rx1, ry1) &&
-            contains(rx2, ry1) &&
-            contains(rx2, ry2) &&
-            contains(rx1, ry2);
+        return contains(rx1, ry1) && contains(rx2, ry1) && contains(rx2, ry2) && contains(rx1, ry2);
     }
 
     public PathIterator getPathIterator(AffineTransform at) {
         return new Iterator(this, at);
     }
 }
-
diff --git a/awt/java/awt/geom/FlatteningPathIterator.java b/awt/java/awt/geom/FlatteningPathIterator.java
index ca5c7c2..8208f39 100644
--- a/awt/java/awt/geom/FlatteningPathIterator.java
+++ b/awt/java/awt/geom/FlatteningPathIterator.java
@@ -18,6 +18,7 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt.geom;
 
 import java.util.NoSuchElementException;
@@ -25,104 +26,139 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Class FlatteningPathIterator takes a PathIterator for traversing 
- * a curved shape and flattens it by estimating the curve as a series 
- * of line segments. The flattening factor indicates how far the 
- * estimating line segments are allowed to be from the actual curve:
- * the FlatteningPathIterator will keep dividing each curved segment 
- * into smaller and smaller flat segments until either the segments 
- * are withing the flattening factor of the curve or until the buffer
- * limit is reached.
+ * The Class FlatteningPathIterator takes a PathIterator for traversing a curved
+ * shape and flattens it by estimating the curve as a series of line segments.
+ * The flattening factor indicates how far the estimating line segments are
+ * allowed to be from the actual curve: the FlatteningPathIterator will keep
+ * dividing each curved segment into smaller and smaller flat segments until
+ * either the segments are within the flattening factor of the curve or until
+ * the buffer limit is reached.
+ * 
+ * @since Android 1.0
  */
 public class FlatteningPathIterator implements PathIterator {
 
-    /** The default points buffer size. */
+    /**
+     * The default points buffer size.
+     */
     private static final int BUFFER_SIZE = 16;
-    
-    /** The default curve subdivision limit. */
+
+    /**
+     * The default curve subdivision limit.
+     */
     private static final int BUFFER_LIMIT = 16;
 
-    /** The points buffer capacity. */
+    /**
+     * The points buffer capacity.
+     */
     private static final int BUFFER_CAPACITY = 16;
-    
-    /** The type of current segment to be flat. */
+
+    /**
+     * The type of current segment to be flat.
+     */
     int bufType;
-    
-    /** The curve subdivision limit. */
+
+    /**
+     * The curve subdivision limit.
+     */
     int bufLimit;
-    
-    /** The current points buffer size. */
+
+    /**
+     * The current points buffer size.
+     */
     int bufSize;
-    
-    /** The inner cursor position in points buffer. */
+
+    /**
+     * The inner cursor position in points buffer.
+     */
     int bufIndex;
-    
-    /** The current subdivision count. */
+
+    /**
+     * The current subdivision count.
+     */
     int bufSubdiv;
 
-    /** The points buffer. */
+    /**
+     * The points buffer.
+     */
     double buf[];
-    
-    /** The indicator of empty points buffer. */
+
+    /**
+     * The indicator of empty points buffer.
+     */
     boolean bufEmpty = true;
-    
-    /** The source PathIterator. */
+
+    /**
+     * The source PathIterator.
+     */
     PathIterator p;
-    
-    /** The flatness of new path. */
+
+    /**
+     * The flatness of new path.
+     */
     double flatness;
-    
-    /** The square of flatness. */
+
+    /**
+     * The square of flatness.
+     */
     double flatness2;
-    
-    /** The x coordinate of previous path segment. */
+
+    /**
+     * The x coordinate of previous path segment.
+     */
     double px;
 
-    /** The y coordinate of previous path segment. */
+    /**
+     * The y coordinate of previous path segment.
+     */
     double py;
-    
-    /** The tamporary buffer for getting points from PathIterator. */
+
+    /**
+     * The temporary buffer for getting points from PathIterator.
+     */
     double coords[] = new double[6];
 
     /**
-     * Instantiates a new flattening path iterator given the path 
-     * iterator for a (possibly) curved path and a flattening factor
-     * which indicates how close together the points on the curve 
-     * should be chosen. The buffer limit defaults to 16 which means 
-     * that each curve will be divided into no more than 16 segments 
-     * regardless of the flattening factor.
+     * Instantiates a new flattening path iterator given the path iterator for a
+     * (possibly) curved path and a flattening factor which indicates how close
+     * together the points on the curve should be chosen. The buffer limit
+     * defaults to 16 which means that each curve will be divided into no more
+     * than 16 segments regardless of the flattening factor.
      * 
-     * @param path the path iterator of the original curve
-     * @param flatness the flattening factor that indicates how far the 
-     * flat path is allowed to be from the actual curve in order to 
-     * decide when to stop dividing the path into smaller and smaller
-     * segments.
-     * 
-     * @throws IllegalArgumentException if the flatness is less than zero.
-     * @throws NullPointerException if the path is null.
+     * @param path
+     *            the path iterator of the original curve.
+     * @param flatness
+     *            the flattening factor that indicates how far the flat path is
+     *            allowed to be from the actual curve in order to decide when to
+     *            stop dividing the path into smaller and smaller segments.
+     * @throws IllegalArgumentException
+     *             if the flatness is less than zero.
+     * @throws NullPointerException
+     *             if the path is null.
      */
     public FlatteningPathIterator(PathIterator path, double flatness) {
         this(path, flatness, BUFFER_LIMIT);
     }
 
     /**
-     * Instantiates a new flattening path iterator given the path 
-     * iterator for a (possibly) curved path and a flattening factor
-     * and a buffer limit. The FlatteningPathIterator will keep 
-     * dividing each curved segment into smaller and smaller flat segments 
-     * until either the segments are withing the flattening factor of the 
-     * curve or until the buffer limit is reached.
+     * Instantiates a new flattening path iterator given the path iterator for a
+     * (possibly) curved path and a flattening factor and a buffer limit. The
+     * FlatteningPathIterator will keep dividing each curved segment into
+     * smaller and smaller flat segments until either the segments are within
+     * the flattening factor of the curve or until the buffer limit is reached.
      * 
-     * @param path the path iterator of the original curve
-     * @param flatness the flattening factor that indicates how far the 
-     * flat path is allowed to be from the actual curve in order to 
-     * decide when to stop dividing the path into smaller and smaller
-     * segments.
-     * @param limit the maximum number of flat segments to divide each 
-     * curve into
-     * 
-     * @throws IllegalArgumentException if the flatness or limit is less than zero.
-     * @throws NullPointerException if the path is null.
+     * @param path
+     *            the path iterator of the original curve.
+     * @param flatness
+     *            the flattening factor that indicates how far the flat path is
+     *            allowed to be from the actual curve in order to decide when to
+     *            stop dividing the path into smaller and smaller segments.
+     * @param limit
+     *            the maximum number of flat segments to divide each curve into.
+     * @throws IllegalArgumentException
+     *             if the flatness or limit is less than zero.
+     * @throws NullPointerException
+     *             if the path is null.
      */
     public FlatteningPathIterator(PathIterator path, double flatness, int limit) {
         if (flatness < 0.0) {
@@ -149,7 +185,7 @@
     /**
      * Gets the flattening factor.
      * 
-     * @return the flattening factor
+     * @return the flattening factor.
      */
     public double getFlatness() {
         return flatness;
@@ -158,7 +194,7 @@
     /**
      * Gets the maximum number of subdivisions per curved segment.
      * 
-     * @return the maximum number of subdivisions per curved segment
+     * @return the maximum number of subdivisions per curved segment.
      */
     public int getRecursionLimit() {
         return bufLimit;
@@ -173,12 +209,13 @@
     }
 
     /**
-     * Calculates flat path points for current segment of the source shape.
-     * 
-     * Line segment is flat by itself. Flatness of quad and cubic curves evaluated by getFlatnessSq() method.
-     * Curves subdivided until current flatness is bigger than user defined and subdivision limit isn't exhausted.
-     * Single source segment translated to series of buffer points. The less flatness the bigger serries.
-     * Every currentSegment() call extract one point from the buffer. When series completed evaluate() takes next source shape segment.
+     * Calculates flat path points for current segment of the source shape. Line
+     * segment is flat by itself. Flatness of quad and cubic curves evaluated by
+     * getFlatnessSq() method. Curves subdivided until current flatness is
+     * bigger than user defined and subdivision limit isn't exhausted. Single
+     * source segment translated to series of buffer points. The less flatness
+     * the bigger series. Every currentSegment() call extract one point from the
+     * buffer. When series completed evaluate() takes next source shape segment.
      */
     void evaluate() {
         if (bufEmpty) {
@@ -186,99 +223,95 @@
         }
 
         switch (bufType) {
-        case SEG_MOVETO:
-        case SEG_LINETO:
-            px = coords[0];
-            py = coords[1];
-            break;
-        case SEG_QUADTO:
-            if (bufEmpty) {
-                bufIndex -= 6;
-                buf[bufIndex + 0] = px;
-                buf[bufIndex + 1] = py;
-                System.arraycopy(coords, 0, buf, bufIndex + 2, 4);
-                bufSubdiv = 0;
-            }
-
-            while (bufSubdiv < bufLimit) {
-                if (QuadCurve2D.getFlatnessSq(buf, bufIndex) < flatness2) {
-                    break;
+            case SEG_MOVETO:
+            case SEG_LINETO:
+                px = coords[0];
+                py = coords[1];
+                break;
+            case SEG_QUADTO:
+                if (bufEmpty) {
+                    bufIndex -= 6;
+                    buf[bufIndex + 0] = px;
+                    buf[bufIndex + 1] = py;
+                    System.arraycopy(coords, 0, buf, bufIndex + 2, 4);
+                    bufSubdiv = 0;
                 }
 
-                // Realloc buffer
-                if (bufIndex <= 4) {
-                    double tmp[] = new double[bufSize + BUFFER_CAPACITY];
-                    System.arraycopy(
-                            buf, bufIndex,
-                            tmp, bufIndex + BUFFER_CAPACITY,
-                            bufSize - bufIndex);
-                    buf = tmp;
-                    bufSize += BUFFER_CAPACITY;
-                    bufIndex += BUFFER_CAPACITY;
+                while (bufSubdiv < bufLimit) {
+                    if (QuadCurve2D.getFlatnessSq(buf, bufIndex) < flatness2) {
+                        break;
+                    }
+
+                    // Realloc buffer
+                    if (bufIndex <= 4) {
+                        double tmp[] = new double[bufSize + BUFFER_CAPACITY];
+                        System.arraycopy(buf, bufIndex, tmp, bufIndex + BUFFER_CAPACITY, bufSize
+                                - bufIndex);
+                        buf = tmp;
+                        bufSize += BUFFER_CAPACITY;
+                        bufIndex += BUFFER_CAPACITY;
+                    }
+
+                    QuadCurve2D.subdivide(buf, bufIndex, buf, bufIndex - 4, buf, bufIndex);
+
+                    bufIndex -= 4;
+                    bufSubdiv++;
                 }
 
-                QuadCurve2D.subdivide(buf, bufIndex, buf, bufIndex - 4, buf, bufIndex);
+                bufIndex += 4;
+                px = buf[bufIndex];
+                py = buf[bufIndex + 1];
 
-                bufIndex -= 4;
-                bufSubdiv++;
-            }
-
-            bufIndex += 4;
-            px = buf[bufIndex];
-            py = buf[bufIndex + 1];
-
-            bufEmpty = (bufIndex == bufSize - 2);
-            if (bufEmpty) {
-                bufIndex = bufSize;
-                bufType = SEG_LINETO;
-            } else {
-                bufSubdiv--;
-            }
-            break;
-        case SEG_CUBICTO:
-            if (bufEmpty) {
-                bufIndex -= 8;
-                buf[bufIndex + 0] = px;
-                buf[bufIndex + 1] = py;
-                System.arraycopy(coords, 0, buf, bufIndex + 2, 6);
-                bufSubdiv = 0;
-            }
-
-            while (bufSubdiv < bufLimit) {
-                if (CubicCurve2D.getFlatnessSq(buf, bufIndex) < flatness2) {
-                    break;
+                bufEmpty = (bufIndex == bufSize - 2);
+                if (bufEmpty) {
+                    bufIndex = bufSize;
+                    bufType = SEG_LINETO;
+                } else {
+                    bufSubdiv--;
+                }
+                break;
+            case SEG_CUBICTO:
+                if (bufEmpty) {
+                    bufIndex -= 8;
+                    buf[bufIndex + 0] = px;
+                    buf[bufIndex + 1] = py;
+                    System.arraycopy(coords, 0, buf, bufIndex + 2, 6);
+                    bufSubdiv = 0;
                 }
 
-                // Realloc buffer
-                if (bufIndex <= 6) {
-                    double tmp[] = new double[bufSize + BUFFER_CAPACITY];
-                    System.arraycopy(
-                            buf, bufIndex,
-                            tmp, bufIndex + BUFFER_CAPACITY,
-                            bufSize - bufIndex);
-                    buf = tmp;
-                    bufSize += BUFFER_CAPACITY;
-                    bufIndex += BUFFER_CAPACITY;
+                while (bufSubdiv < bufLimit) {
+                    if (CubicCurve2D.getFlatnessSq(buf, bufIndex) < flatness2) {
+                        break;
+                    }
+
+                    // Realloc buffer
+                    if (bufIndex <= 6) {
+                        double tmp[] = new double[bufSize + BUFFER_CAPACITY];
+                        System.arraycopy(buf, bufIndex, tmp, bufIndex + BUFFER_CAPACITY, bufSize
+                                - bufIndex);
+                        buf = tmp;
+                        bufSize += BUFFER_CAPACITY;
+                        bufIndex += BUFFER_CAPACITY;
+                    }
+
+                    CubicCurve2D.subdivide(buf, bufIndex, buf, bufIndex - 6, buf, bufIndex);
+
+                    bufIndex -= 6;
+                    bufSubdiv++;
                 }
 
-                CubicCurve2D.subdivide(buf, bufIndex, buf, bufIndex - 6, buf, bufIndex);
+                bufIndex += 6;
+                px = buf[bufIndex];
+                py = buf[bufIndex + 1];
 
-                bufIndex -= 6;
-                bufSubdiv++;
-            }
-
-            bufIndex += 6;
-            px = buf[bufIndex];
-            py = buf[bufIndex + 1];
-
-            bufEmpty = (bufIndex == bufSize - 2);
-            if (bufEmpty) {
-                bufIndex = bufSize;
-                bufType = SEG_LINETO;
-            } else {
-                bufSubdiv--;
-            }
-            break;
+                bufEmpty = (bufIndex == bufSize - 2);
+                if (bufEmpty) {
+                    bufIndex = bufSize;
+                    bufType = SEG_LINETO;
+                } else {
+                    bufSubdiv--;
+                }
+                break;
         }
 
     }
@@ -323,4 +356,3 @@
         return type;
     }
 }
-
diff --git a/awt/java/awt/geom/GeneralPath.java b/awt/java/awt/geom/GeneralPath.java
index 36b01c4..0669bc7 100644
--- a/awt/java/awt/geom/GeneralPath.java
+++ b/awt/java/awt/geom/GeneralPath.java
@@ -18,6 +18,7 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt.geom;
 
 import java.awt.Rectangle;
@@ -28,81 +29,116 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Class GeneralPath represents a shape whose outline is given 
- * by different types of curved and straight segments.
+ * The class GeneralPath represents a shape whose outline is given by different
+ * types of curved and straight segments.
+ * 
+ * @since Android 1.0
  */
 public final class GeneralPath implements Shape, Cloneable {
 
-    /** The Constant WIND_EVEN_ODD see {@link PathIterator#WIND_EVEN_ODD}. */
+    /**
+     * The Constant WIND_EVEN_ODD see {@link PathIterator#WIND_EVEN_ODD}.
+     */
     public static final int WIND_EVEN_ODD = PathIterator.WIND_EVEN_ODD;
-    
-    /** The Constant WIND_NON_ZERO see {@link PathIterator#WIND_NON_ZERO}. */
+
+    /**
+     * The Constant WIND_NON_ZERO see {@link PathIterator#WIND_NON_ZERO}.
+     */
     public static final int WIND_NON_ZERO = PathIterator.WIND_NON_ZERO;
 
-    /** The buffers size. */
+    /**
+     * The buffers size.
+     */
     private static final int BUFFER_SIZE = 10;
-    
-    /** The buffers capacity. */
+
+    /**
+     * The buffers capacity.
+     */
     private static final int BUFFER_CAPACITY = 10;
 
-    /** The point's types buffer. */
+    /**
+     * The point's types buffer.
+     */
     byte[] types;
-    
-    /** The points buffer. */
+
+    /**
+     * The points buffer.
+     */
     float[] points;
-    
-    /** The point's type buffer size. */
+
+    /**
+     * The point's type buffer size.
+     */
     int typeSize;
-    
-    /** The points buffer size. */
+
+    /**
+     * The points buffer size.
+     */
     int pointSize;
-    
-    /** The path rule. */
+
+    /**
+     * The path rule.
+     */
     int rule;
 
-    /** The space amount in points buffer for different segmenet's types. */
+    /**
+     * The space amount in points buffer for different segmenet's types.
+     */
     static int pointShift[] = {
-            2,  // MOVETO
-            2,  // LINETO
-            4,  // QUADTO
-            6,  // CUBICTO
-            0}; // CLOSE
+            2, // MOVETO
+            2, // LINETO
+            4, // QUADTO
+            6, // CUBICTO
+            0
+    }; // CLOSE
 
     /*
-     * GeneralPath path iterator 
+     * GeneralPath path iterator
      */
     /**
-     * The Class Iterator is the subclass of Iterator for traversing the 
-     * outline of a GeneralPath.
+     * The Class Iterator is the subclass of Iterator for traversing the outline
+     * of a GeneralPath.
      */
     class Iterator implements PathIterator {
 
-        /** The current cursor position in types buffer. */
+        /**
+         * The current cursor position in types buffer.
+         */
         int typeIndex;
-        
-        /** The current cursor position in points buffer. */
+
+        /**
+         * The current cursor position in points buffer.
+         */
         int pointIndex;
-        
-        /** The source GeneralPath object. */
+
+        /**
+         * The source GeneralPath object.
+         */
         GeneralPath p;
-        
-        /** The path iterator transformation. */
+
+        /**
+         * The path iterator transformation.
+         */
         AffineTransform t;
 
         /**
-         * Constructs a new GeneralPath.Iterator for given general path
+         * Constructs a new GeneralPath.Iterator for given general path.
          * 
-         * @param path - the source GeneralPath object
+         * @param path
+         *            the source GeneralPath object.
          */
         Iterator(GeneralPath path) {
             this(path, null);
         }
 
         /**
-         * Constructs a new GeneralPath.Iterator for given general path and transformation
+         * Constructs a new GeneralPath.Iterator for given general path and
+         * transformation.
          * 
-         * @param path - the source GeneralPath object
-         * @param at - the AffineTransform object to apply rectangle path
+         * @param path
+         *            the source GeneralPath object.
+         * @param at
+         *            the AffineTransform object to apply rectangle path.
          */
         Iterator(GeneralPath path, AffineTransform at) {
             this.p = path;
@@ -156,33 +192,35 @@
     }
 
     /**
-     * Instantiates a new general path with the winding rule set 
-     * to {@link PathIterator#WIND_NON_ZERO} and the initial capacity
-     * (number of segments) set to the default value 10.
+     * Instantiates a new general path with the winding rule set to
+     * {@link PathIterator#WIND_NON_ZERO} and the initial capacity (number of
+     * segments) set to the default value 10.
      */
     public GeneralPath() {
         this(WIND_NON_ZERO, BUFFER_SIZE);
     }
 
     /**
-     * Instantiates a new general path with the given winding rule
-     *  and the initial capacity (number of segments) set to the 
-     *  default value 10.
+     * Instantiates a new general path with the given winding rule and the
+     * initial capacity (number of segments) set to the default value 10.
      * 
-     * @param rule the winding rule, either {@link PathIterator#WIND_EVEN_ODD}
-     * or {@link PathIterator#WIND_NON_ZERO}
+     * @param rule
+     *            the winding rule, either {@link PathIterator#WIND_EVEN_ODD} or
+     *            {@link PathIterator#WIND_NON_ZERO}.
      */
     public GeneralPath(int rule) {
         this(rule, BUFFER_SIZE);
     }
 
     /**
-     * Instantiates a new general path with the given winding rule
-     * and initial capacity (number of segments).
+     * Instantiates a new general path with the given winding rule and initial
+     * capacity (number of segments).
      * 
-     * @param rule the winding rule, either {@link PathIterator#WIND_EVEN_ODD}
-     * or {@link PathIterator#WIND_NON_ZERO}
-     * @param initialCapacity the number of segments the path is set to hold
+     * @param rule
+     *            the winding rule, either {@link PathIterator#WIND_EVEN_ODD} or
+     *            {@link PathIterator#WIND_NON_ZERO}.
+     * @param initialCapacity
+     *            the number of segments the path is set to hold.
      */
     public GeneralPath(int rule, int initialCapacity) {
         setWindingRule(rule);
@@ -193,7 +231,8 @@
     /**
      * Creates a new GeneralPath from the outline of the given shape.
      * 
-     * @param shape the shape
+     * @param shape
+     *            the shape.
      */
     public GeneralPath(Shape shape) {
         this(WIND_NON_ZERO, BUFFER_SIZE);
@@ -203,14 +242,15 @@
     }
 
     /**
-     * Sets the winding rule, which determines how to decide whether 
-     * a point that isn't on the path itself is inside or outside of 
-     * the shape.
+     * Sets the winding rule, which determines how to decide whether a point
+     * that isn't on the path itself is inside or outside of the shape.
      * 
-     * @param rule the new winding rule
-     * 
-     * @throws IllegalArgumentException if the winding rule is neither
-     * {@link PathIterator#WIND_EVEN_ODD} nor {@link PathIterator#WIND_NON_ZERO}.
+     * @param rule
+     *            the new winding rule.
+     * @throws IllegalArgumentException
+     *             if the winding rule is neither
+     *             {@link PathIterator#WIND_EVEN_ODD} nor
+     *             {@link PathIterator#WIND_NON_ZERO}.
      */
     public void setWindingRule(int rule) {
         if (rule != WIND_EVEN_ODD && rule != WIND_NON_ZERO) {
@@ -223,8 +263,8 @@
     /**
      * Gets the winding rule.
      * 
-     * @return the winding rule, either {@link PathIterator#WIND_EVEN_ODD}
-     * or {@link PathIterator#WIND_NON_ZERO}
+     * @return the winding rule, either {@link PathIterator#WIND_EVEN_ODD} or
+     *         {@link PathIterator#WIND_NON_ZERO}.
      */
     public int getWindingRule() {
         return rule;
@@ -232,15 +272,16 @@
 
     /**
      * Checks the point data buffer sizes to see whether pointCount additional
-     * point-data elements can fit. (Note that the number of point data 
-     * elements to add is more than one per point -- it depends on the type 
-     * of point being added.) Reallocates the buffers to enlarge the size if necessary.
+     * point-data elements can fit. (Note that the number of point data elements
+     * to add is more than one per point -- it depends on the type of point
+     * being added.) Reallocates the buffers to enlarge the size if necessary.
      * 
-     * @param pointCount - the number of point data elements to be added
-     * @param checkMove whether to check for existing points
-     * 
-     * @throws IllegalPathStateException checkMove is true and the 
-     * path is currently empty.
+     * @param pointCount
+     *            the number of point data elements to be added.
+     * @param checkMove
+     *            whether to check for existing points.
+     * @throws IllegalPathStateException
+     *             checkMove is true and the path is currently empty.
      */
     void checkBuf(int pointCount, boolean checkMove) {
         if (checkMove && typeSize == 0) {
@@ -260,11 +301,13 @@
     }
 
     /**
-     * Appends a new point to the end of this general path, disconnected
-     * from the existing path.
+     * Appends a new point to the end of this general path, disconnected from
+     * the existing path.
      * 
-     * @param x the x coordinate of the next point to append
-     * @param y the y coordinate of the next point to append
+     * @param x
+     *            the x coordinate of the next point to append.
+     * @param y
+     *            the y coordinate of the next point to append.
      */
     public void moveTo(float x, float y) {
         if (typeSize > 0 && types[typeSize - 1] == PathIterator.SEG_MOVETO) {
@@ -279,12 +322,13 @@
     }
 
     /**
-     * Appends a new segment to the end of this general path by making 
-     * a straight line segment from the current endpoint to the 
-     * given new point.
+     * Appends a new segment to the end of this general path by making a
+     * straight line segment from the current endpoint to the given new point.
      * 
-     * @param x the x coordinate of the next point to append
-     * @param y the y coordinate of the next point to append
+     * @param x
+     *            the x coordinate of the next point to append.
+     * @param y
+     *            the y coordinate of the next point to append.
      */
     public void lineTo(float x, float y) {
         checkBuf(2, true);
@@ -294,14 +338,18 @@
     }
 
     /**
-     * Appends a new segment to the end of this general path by making 
-     * a quadratic curve from the current endpoint to the point (x2, y2)
-     * using the point (x1, y1) as the quadratic curve's control point.
+     * Appends a new segment to the end of this general path by making a
+     * quadratic curve from the current endpoint to the point (x2, y2) using the
+     * point (x1, y1) as the quadratic curve's control point.
      * 
-     * @param x1 the x coordinate of the quadratic curve's control point
-     * @param y1 the y coordinate of the quadratic curve's control point
-     * @param x2 the x coordinate of the quadratic curve's end point
-     * @param y2 the y coordinate of the quadratic curve's end point
+     * @param x1
+     *            the x coordinate of the quadratic curve's control point.
+     * @param y1
+     *            the y coordinate of the quadratic curve's control point.
+     * @param x2
+     *            the x coordinate of the quadratic curve's end point.
+     * @param y2
+     *            the y coordinate of the quadratic curve's end point.
      */
     public void quadTo(float x1, float y1, float x2, float y2) {
         checkBuf(4, true);
@@ -313,18 +361,27 @@
     }
 
     /**
-     * Appends a new segment to the end of this general path by making 
-     * a cubic curve from the current endpoint to the point (x3, y3)
-     * using (x1, y1) and (x2, y2) as control points.
+     * Appends a new segment to the end of this general path by making a cubic
+     * curve from the current endpoint to the point (x3, y3) using (x1, y1) and
+     * (x2, y2) as control points.
      * 
      * @see java.awt.geom.CubicCurve2D
-     * 
-     * @param x1 the x coordinate of the new cubic segment's first control point
-     * @param y1 the y coordinate of the new cubic segment's first control point
-     * @param x2 the x coordinate of the new cubic segment's second control point
-     * @param y2 the y coordinate of the new cubic segment's second control point
-     * @param x3 the x coordinate of the new cubic segment's end point
-     * @param y3 the y coordinate of the new cubic segment's end point
+     * @param x1
+     *            the x coordinate of the new cubic segment's first control
+     *            point.
+     * @param y1
+     *            the y coordinate of the new cubic segment's first control
+     *            point.
+     * @param x2
+     *            the x coordinate of the new cubic segment's second control
+     *            point.
+     * @param y2
+     *            the y coordinate of the new cubic segment's second control
+     *            point.
+     * @param x3
+     *            the x coordinate of the new cubic segment's end point.
+     * @param y3
+     *            the y coordinate of the new cubic segment's end point.
      */
     public void curveTo(float x1, float y1, float x2, float y2, float x3, float y3) {
         checkBuf(6, true);
@@ -338,8 +395,8 @@
     }
 
     /**
-     * Appends the type information to declare that the current
-     * endpoint closes the curve.
+     * Appends the type information to declare that the current endpoint closes
+     * the curve.
      */
     public void closePath() {
         if (typeSize == 0 || types[typeSize - 1] != PathIterator.SEG_CLOSE) {
@@ -349,15 +406,17 @@
     }
 
     /**
-     * Appends the outline of the specified shape onto the end 
-     * of this GeneralPath.
+     * Appends the outline of the specified shape onto the end of this
+     * GeneralPath.
      * 
-     * @param shape the shape whose outline is to be appended
-     * @param connect true to connect this path's current 
-     * endpoint to the first point of the shape's outline or 
-     * false to append the shape's outline without connecting it
-     * 
-     * @throws NullPointerException if the shape parameter is null
+     * @param shape
+     *            the shape whose outline is to be appended.
+     * @param connect
+     *            true to connect this path's current endpoint to the first
+     *            point of the shape's outline or false to append the shape's
+     *            outline without connecting it.
+     * @throws NullPointerException
+     *             if the shape parameter is null.
      */
     public void append(Shape shape, boolean connect) {
         PathIterator p = shape.getPathIterator(null);
@@ -365,42 +424,43 @@
     }
 
     /**
-     * Appends the path defined by the specified PathIterator onto the end 
-     * of this GeneralPath.
+     * Appends the path defined by the specified PathIterator onto the end of
+     * this GeneralPath.
      * 
-     * @param path the PathIterator that defines the new path to append
-     * @param connect true to connect this path's current 
-     * endpoint to the first point of the shape's outline or 
-     * false to append the shape's outline without connecting it
+     * @param path
+     *            the PathIterator that defines the new path to append.
+     * @param connect
+     *            true to connect this path's current endpoint to the first
+     *            point of the shape's outline or false to append the shape's
+     *            outline without connecting it.
      */
     public void append(PathIterator path, boolean connect) {
         while (!path.isDone()) {
             float coords[] = new float[6];
             switch (path.currentSegment(coords)) {
-            case PathIterator.SEG_MOVETO:
-                if (!connect || typeSize == 0) {
-                    moveTo(coords[0], coords[1]);
+                case PathIterator.SEG_MOVETO:
+                    if (!connect || typeSize == 0) {
+                        moveTo(coords[0], coords[1]);
+                        break;
+                    }
+                    if (types[typeSize - 1] != PathIterator.SEG_CLOSE
+                            && points[pointSize - 2] == coords[0]
+                            && points[pointSize - 1] == coords[1]) {
+                        break;
+                    }
+                    // NO BREAK;
+                case PathIterator.SEG_LINETO:
+                    lineTo(coords[0], coords[1]);
                     break;
-                }
-                if (types[typeSize - 1] != PathIterator.SEG_CLOSE &&
-                    points[pointSize - 2] == coords[0] &&
-                    points[pointSize - 1] == coords[1])
-                {
+                case PathIterator.SEG_QUADTO:
+                    quadTo(coords[0], coords[1], coords[2], coords[3]);
                     break;
-                }
-            // NO BREAK;
-            case PathIterator.SEG_LINETO:
-                lineTo(coords[0], coords[1]);
-                break;
-            case PathIterator.SEG_QUADTO:
-                quadTo(coords[0], coords[1], coords[2], coords[3]);
-                break;
-            case PathIterator.SEG_CUBICTO:
-                curveTo(coords[0], coords[1], coords[2], coords[3], coords[4], coords[5]);
-                break;
-            case PathIterator.SEG_CLOSE:
-                closePath();
-                break;
+                case PathIterator.SEG_CUBICTO:
+                    curveTo(coords[0], coords[1], coords[2], coords[3], coords[4], coords[5]);
+                    break;
+                case PathIterator.SEG_CLOSE:
+                    closePath();
+                    break;
             }
             path.next();
             connect = false;
@@ -410,7 +470,7 @@
     /**
      * Gets the current end point of the path.
      * 
-     * @return the current end point of the path
+     * @return the current end point of the path.
      */
     public Point2D getCurrentPoint() {
         if (typeSize == 0) {
@@ -431,9 +491,9 @@
     }
 
     /**
-     * Resets the GeneralPath to being an empty path. The underlying
-     * point and segment data is not deleted but rather the end indices
-     * of the data arrays are set to zero.
+     * Resets the GeneralPath to being an empty path. The underlying point and
+     * segment data is not deleted but rather the end indices of the data arrays
+     * are set to zero.
      */
     public void reset() {
         typeSize = 0;
@@ -441,23 +501,24 @@
     }
 
     /**
-     * Transform all of the coordinates of this path according to the
-     * specified AffineTransform.
+     * Transform all of the coordinates of this path according to the specified
+     * AffineTransform.
      * 
-     * @param t the AffineTransform
+     * @param t
+     *            the AffineTransform.
      */
     public void transform(AffineTransform t) {
         t.transform(points, 0, points, 0, pointSize / 2);
     }
 
     /**
-     * Creates a new GeneralPath whose data is given by this path's 
-     * data transformed according to the specified AffineTransform.
+     * Creates a new GeneralPath whose data is given by this path's data
+     * transformed according to the specified AffineTransform.
      * 
-     * @param t the AffineTransform
-     * 
-     * @return the new GeneralPath whose data is given by this path's 
-     * data transformed according to the specified AffineTransform
+     * @param t
+     *            the AffineTransform.
+     * @return the new GeneralPath whose data is given by this path's data
+     *         transformed according to the specified AffineTransform.
      */
     public Shape createTransformedShape(AffineTransform t) {
         GeneralPath p = (GeneralPath)clone();
@@ -480,16 +541,14 @@
                 float x = points[i--];
                 if (x < rx1) {
                     rx1 = x;
-                } else
-                    if (x > rx2) {
-                        rx2 = x;
-                    }
+                } else if (x > rx2) {
+                    rx2 = x;
+                }
                 if (y < ry1) {
                     ry1 = y;
-                } else
-                    if (y > ry2) {
-                        ry2 = y;
-                    }
+                } else if (y > ry2) {
+                    ry2 = y;
+                }
             }
         }
         return new Rectangle2D.Float(rx1, ry1, rx2 - rx1, ry2 - ry1);
@@ -500,14 +559,14 @@
     }
 
     /**
-     * Checks the cross count (number of times a ray from the point 
-     * crosses the shape's boundary) to determine whether the number 
-     * of crossings corresponds to a point inside the shape or not
-     * (according to the shape's path rule).
+     * Checks the cross count (number of times a ray from the point crosses the
+     * shape's boundary) to determine whether the number of crossings
+     * corresponds to a point inside the shape or not (according to the shape's
+     * path rule).
      * 
-     * @param cross - the point's cross count
-     * 
-     * @return true if the point is inside the path, or false otherwise
+     * @param cross
+     *            the point's cross count.
+     * @return true if the point is inside the path, or false otherwise.
      */
     boolean isInside(int cross) {
         if (rule == WIND_NON_ZERO) {
@@ -553,7 +612,7 @@
     @Override
     public Object clone() {
         try {
-            GeneralPath p = (GeneralPath) super.clone();
+            GeneralPath p = (GeneralPath)super.clone();
             p.types = types.clone();
             p.points = points.clone();
             return p;
@@ -563,4 +622,3 @@
     }
 
 }
-
diff --git a/awt/java/awt/geom/IllegalPathStateException.java b/awt/java/awt/geom/IllegalPathStateException.java
index 7f459e7..750ba29 100644
--- a/awt/java/awt/geom/IllegalPathStateException.java
+++ b/awt/java/awt/geom/IllegalPathStateException.java
@@ -18,16 +18,21 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt.geom;
 
 /**
- * The Class IllegalPathStateException indicates errors where the 
- * current state of a path object is imcompatible with the desired 
- * action, such as performing non-trivial actions on an empty path.
+ * The Class IllegalPathStateException indicates errors where the current state
+ * of a path object is incompatible with the desired action, such as performing
+ * non-trivial actions on an empty path.
+ * 
+ * @since Android 1.0
  */
 public class IllegalPathStateException extends RuntimeException {
 
-    /** The Constant serialVersionUID. */
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = -5158084205220481094L;
 
     /**
@@ -37,14 +42,14 @@
     }
 
     /**
-     * Instantiates a new illegal path state exception with the 
-     * specified detail message.
+     * Instantiates a new illegal path state exception with the specified detail
+     * message.
      * 
-     * @param s the details of the error
+     * @param s
+     *            the details of the error.
      */
     public IllegalPathStateException(String s) {
         super(s);
     }
 
 }
-
diff --git a/awt/java/awt/geom/Line2D.java b/awt/java/awt/geom/Line2D.java
index a53c470..fcd51b6 100644
--- a/awt/java/awt/geom/Line2D.java
+++ b/awt/java/awt/geom/Line2D.java
@@ -18,6 +18,7 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt.geom;
 
 import java.awt.Rectangle;
@@ -27,55 +28,71 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Class Line2D represents a line whose data is given in 
- * high-precision values appropriate for graphical operations.
+ * The Class Line2D represents a line whose data is given in high-precision
+ * values appropriate for graphical operations.
+ * 
+ * @since Android 1.0
  */
 public abstract class Line2D implements Shape, Cloneable {
 
     /**
-     * The Class Float is the subclass of Line2D that has all 
-     * of its data values stored with float-level precision.
+     * The Class Float is the subclass of Line2D that has all of its data values
+     * stored with float-level precision.
+     * 
+     * @since Android 1.0
      */
     public static class Float extends Line2D {
 
-        /** The x coordinate of the starting point. */
+        /**
+         * The x coordinate of the starting point.
+         */
         public float x1;
-        
-        /** The y coordinate of the starting point. */
+
+        /**
+         * The y coordinate of the starting point.
+         */
         public float y1;
-        
-        /** The x coordinate of the end point. */
+
+        /**
+         * The x coordinate of the end point.
+         */
         public float x2;
-        
-        /** The y coordinate of the end point. */
+
+        /**
+         * The y coordinate of the end point.
+         */
         public float y2;
 
         /**
-         * Instantiates a new float-valued Line2D with
-         * its data values set to zero.
+         * Instantiates a new float-valued Line2D with its data values set to
+         * zero.
          */
         public Float() {
         }
 
         /**
-         * Instantiates a new float-valued Line2D with
-         * the specified endpoints.
+         * Instantiates a new float-valued Line2D with the specified endpoints.
          * 
-         * @param x1 the x coordinate of the starting point
-         * @param y1 the y coordinate of the starting point
-         * @param x2 the x coordinate of the end point
-         * @param y2 the y coordinate of the end point
+         * @param x1
+         *            the x coordinate of the starting point.
+         * @param y1
+         *            the y coordinate of the starting point.
+         * @param x2
+         *            the x coordinate of the end point.
+         * @param y2
+         *            the y coordinate of the end point.
          */
         public Float(float x1, float y1, float x2, float y2) {
             setLine(x1, y1, x2, y2);
         }
 
         /**
-         * Instantiates a new float-valued Line2D with
-         * the specified endpoints.
+         * Instantiates a new float-valued Line2D with the specified endpoints.
          * 
-         * @param p1 the starting point
-         * @param p2 the end point
+         * @param p1
+         *            the starting point.
+         * @param p2
+         *            the end point.
          */
         public Float(Point2D p1, Point2D p2) {
             setLine(p1, p2);
@@ -122,10 +139,14 @@
         /**
          * Sets the data values that define the line.
          * 
-         * @param x1 the x coordinate of the starting point
-         * @param y1 the y coordinate of the starting point
-         * @param x2 the x coordinate of the end point
-         * @param y2 the y coordinate of the end point
+         * @param x1
+         *            the x coordinate of the starting point.
+         * @param y1
+         *            the y coordinate of the starting point.
+         * @param x2
+         *            the x coordinate of the end point.
+         * @param y2
+         *            the y coordinate of the end point.
          */
         public void setLine(float x1, float y1, float x2, float y2) {
             this.x1 = x1;
@@ -155,49 +176,63 @@
     }
 
     /**
-     * The Class Double is the subclass of Line2D that has all 
-     * of its data values stored with double-level precision.
+     * The Class Double is the subclass of Line2D that has all of its data
+     * values stored with double-level precision.
+     * 
+     * @since Android 1.0
      */
     public static class Double extends Line2D {
 
-        /** The x coordinate of the starting point. */
+        /**
+         * The x coordinate of the starting point.
+         */
         public double x1;
-        
-        /** The y coordinate of the starting point. */
+
+        /**
+         * The y coordinate of the starting point.
+         */
         public double y1;
-        
-        /** The x coordinate of the end point. */
+
+        /**
+         * The x coordinate of the end point.
+         */
         public double x2;
-        
-        /** The y coordinate of the end point. */
+
+        /**
+         * The y coordinate of the end point.
+         */
         public double y2;
 
         /**
-         * Instantiates a new double-valued  Line2D with
-         * its data values set to zero.
+         * Instantiates a new double-valued Line2D with its data values set to
+         * zero.
          */
         public Double() {
         }
 
         /**
-         * Instantiates a new double-valued Line2D with
-         * the specified endpoints.
+         * Instantiates a new double-valued Line2D with the specified endpoints.
          * 
-         * @param x1 the x coordinate of the starting point
-         * @param y1 the y coordinate of the starting point
-         * @param x2 the x coordinate of the end point
-         * @param y2 the y coordinate of the end point
+         * @param x1
+         *            the x coordinate of the starting point.
+         * @param y1
+         *            the y coordinate of the starting point.
+         * @param x2
+         *            the x coordinate of the end point.
+         * @param y2
+         *            the y coordinate of the end point.
          */
         public Double(double x1, double y1, double x2, double y2) {
             setLine(x1, y1, x2, y2);
         }
 
         /**
-         * Instantiates a new double-valued Line2D with
-         * the specified endpoints.
+         * Instantiates a new double-valued Line2D with the specified endpoints.
          * 
-         * @param p1 the starting point
-         * @param p2 the end point
+         * @param p1
+         *            the starting point.
+         * @param p2
+         *            the end point.
          */
         public Double(Point2D p1, Point2D p2) {
             setLine(p1, p2);
@@ -262,36 +297,50 @@
     }
 
     /*
-     * Line2D path iterator 
+     * Line2D path iterator
      */
     /**
      * The subclass of PathIterator to traverse a Line2D.
      */
     class Iterator implements PathIterator {
 
-        /** The x coordinate of the start line point. */
+        /**
+         * The x coordinate of the start line point.
+         */
         double x1;
-        
-        /** The y coordinate of the start line point. */
+
+        /**
+         * The y coordinate of the start line point.
+         */
         double y1;
-        
-        /** The x coordinate of the end line point. */
+
+        /**
+         * The x coordinate of the end line point.
+         */
         double x2;
-        
-        /** The y coordinate of the end line point. */
+
+        /**
+         * The y coordinate of the end line point.
+         */
         double y2;
 
-        /** The path iterator transformation. */
+        /**
+         * The path iterator transformation.
+         */
         AffineTransform t;
 
-        /** The current segmenet index. */
+        /**
+         * The current segment index.
+         */
         int index;
 
         /**
-         * Constructs a new Line2D.Iterator for given line and transformation
+         * Constructs a new Line2D.Iterator for given line and transformation.
          * 
-         * @param l - the source Line2D object
-         * @param at - the AffineTransform object to apply rectangle path
+         * @param l
+         *            the source Line2D object.
+         * @param at
+         *            the AffineTransform object to apply rectangle path.
          */
         Iterator(Line2D l, AffineTransform at) {
             this.x1 = l.getX1();
@@ -366,60 +415,66 @@
     /**
      * Gets the x coordinate of the starting point.
      * 
-     * @return the x coordinate of the starting point
+     * @return the x coordinate of the starting point.
      */
     public abstract double getX1();
 
     /**
      * Gets the y coordinate of the starting point.
      * 
-     * @return the y coordinate of the starting point
+     * @return the y coordinate of the starting point.
      */
     public abstract double getY1();
 
     /**
      * Gets the x coordinate of the end point.
      * 
-     * @return the x2
+     * @return the x2.
      */
     public abstract double getX2();
 
     /**
      * Gets the y coordinate of the end point.
      * 
-     * @return the y coordinate of the end point
+     * @return the y coordinate of the end point.
      */
     public abstract double getY2();
 
     /**
      * Gets the p the starting point.
      * 
-     * @return the p the starting point
+     * @return the p the starting point.
      */
     public abstract Point2D getP1();
 
     /**
      * Gets the p end point.
      * 
-     * @return the p end point
+     * @return the p end point.
      */
     public abstract Point2D getP2();
 
     /**
      * Sets the line's endpoints.
      * 
-     * @param x1 the x coordinate of the starting point
-     * @param y1 the y coordinate of the starting point
-     * @param x2 the x coordinate of the end point
-     * @param y2 the y coordinate of the end point
+     * @param x1
+     *            the x coordinate of the starting point.
+     * @param y1
+     *            the y coordinate of the starting point.
+     * @param x2
+     *            the x coordinate of the end point.
+     * @param y2
+     *            the y coordinate of the end point.
      */
     public abstract void setLine(double x1, double y1, double x2, double y2);
 
     /**
      * Sets the line's endpoints.
      * 
-     * @param p1 the starting point
-     * @param p2 the end point
+     * @param p1
+     *            the starting point.
+     * @param p2
+     *            the end point.
      */
     public void setLine(Point2D p1, Point2D p2) {
         setLine(p1.getX(), p1.getY(), p2.getX(), p2.getY());
@@ -428,39 +483,44 @@
     /**
      * Sets the line's endpoints by copying the data from another Line2D.
      * 
-     * @param line the Line2D to copy the endpoint data from
+     * @param line
+     *            the Line2D to copy the endpoint data from.
      */
     public void setLine(Line2D line) {
         setLine(line.getX1(), line.getY1(), line.getX2(), line.getY2());
     }
 
     public Rectangle getBounds() {
-    return getBounds2D().getBounds();
+        return getBounds2D().getBounds();
     }
 
     /**
-     * Tells where the point is with respect to the line segment, 
-     * given the orientation of the line segment. If the ray 
-     * found by extending the line segment from its starting point 
-     * is rotated, this method tells whether the ray
-     * should rotate in a clockwise direction or a counter-clockwise
-     * direction to hit the point first. The return value is 0 if the 
-     * point is on the line segment, it's 1 if the point is on the ray 
-     * or if the ray should rotate in a counter-clockwise direction to get to the
-     * point, and it's -1 if the ray should rotate in a clockwise 
-     * direction to get to the point or if the point is on the line 
-     * determined by the line segment but not on the ray from the 
-     * segment's starting point and through its end point.
+     * Tells where the point is with respect to the line segment, given the
+     * orientation of the line segment. If the ray found by extending the line
+     * segment from its starting point is rotated, this method tells whether the
+     * ray should rotate in a clockwise direction or a counter-clockwise
+     * direction to hit the point first. The return value is 0 if the point is
+     * on the line segment, it's 1 if the point is on the ray or if the ray
+     * should rotate in a counter-clockwise direction to get to the point, and
+     * it's -1 if the ray should rotate in a clockwise direction to get to the
+     * point or if the point is on the line determined by the line segment but
+     * not on the ray from the segment's starting point and through its end
+     * point.
      * 
-     * @param x1 the x coordinate of the starting point of the line segment
-     * @param y1 the y coordinate of the starting point of the line segment
-     * @param x2 the x coordinate of the end point of the line segment
-     * @param y2 the y coordinate of the end point of the line segment
-     * @param px the x coordinate of the test point
-     * @param py the p coordinate of the test point
-     * 
-     * @return the value that describes where the point is with respect to the line segment, 
-     * given the orientation of the line segment
+     * @param x1
+     *            the x coordinate of the starting point of the line segment.
+     * @param y1
+     *            the y coordinate of the starting point of the line segment.
+     * @param x2
+     *            the x coordinate of the end point of the line segment.
+     * @param y2
+     *            the y coordinate of the end point of the line segment.
+     * @param px
+     *            the x coordinate of the test point.
+     * @param py
+     *            the p coordinate of the test point.
+     * @return the value that describes where the point is with respect to the
+     *         line segment, given the orientation of the line segment.
      */
     public static int relativeCCW(double x1, double y1, double x2, double y2, double px, double py) {
         /*
@@ -487,47 +547,46 @@
     }
 
     /**
-     * Tells where the point is with respect to this line segment, 
-     * given the orientation of this line segment. If the ray 
-     * found by extending the line segment from its starting point 
-     * is rotated, this method tells whether the ray
-     * should rotate in a clockwise direction or a counter-clockwise
-     * direction to hit the point first. The return value is 0 if the 
-     * point is on the line segment, it's 1 if the point is on the ray 
-     * or if the ray should rotate in a counter-clockwise direction to get to the
-     * point, and it's -1 if the ray should rotate in a clockwise 
-     * direction to get to the point or if the point is on the line 
-     * determined by the line segment but not on the ray from the 
-     * segment's starting point and through its end point.
+     * Tells where the point is with respect to this line segment, given the
+     * orientation of this line segment. If the ray found by extending the line
+     * segment from its starting point is rotated, this method tells whether the
+     * ray should rotate in a clockwise direction or a counter-clockwise
+     * direction to hit the point first. The return value is 0 if the point is
+     * on the line segment, it's 1 if the point is on the ray or if the ray
+     * should rotate in a counter-clockwise direction to get to the point, and
+     * it's -1 if the ray should rotate in a clockwise direction to get to the
+     * point or if the point is on the line determined by the line segment but
+     * not on the ray from the segment's starting point and through its end
+     * point.
      * 
-     * @param px the x coordinate of the test point
-     * @param py the p coordinate of the test point
-     * 
-     * @return the value that describes where the point is with respect to 
-     * this line segment, given the orientation of this line segment
+     * @param px
+     *            the x coordinate of the test point.
+     * @param py
+     *            the p coordinate of the test point.
+     * @return the value that describes where the point is with respect to this
+     *         line segment, given the orientation of this line segment.
      */
     public int relativeCCW(double px, double py) {
         return relativeCCW(getX1(), getY1(), getX2(), getY2(), px, py);
     }
 
     /**
-     * Tells where the point is with respect to this line segment, 
-     * given the orientation of this line segment. If the ray 
-     * found by extending the line segment from its starting point 
-     * is rotated, this method tells whether the ray
-     * should rotate in a clockwise direction or a counter-clockwise
-     * direction to hit the point first. The return value is 0 if the 
-     * point is on the line segment, it's 1 if the point is on the ray 
-     * or if the ray should rotate in a counter-clockwise direction to get to the
-     * point, and it's -1 if the ray should rotate in a clockwise 
-     * direction to get to the point or if the point is on the line 
-     * determined by the line segment but not on the ray from the 
-     * segment's starting point and through its end point.
+     * Tells where the point is with respect to this line segment, given the
+     * orientation of this line segment. If the ray found by extending the line
+     * segment from its starting point is rotated, this method tells whether the
+     * ray should rotate in a clockwise direction or a counter-clockwise
+     * direction to hit the point first. The return value is 0 if the point is
+     * on the line segment, it's 1 if the point is on the ray or if the ray
+     * should rotate in a counter-clockwise direction to get to the point, and
+     * it's -1 if the ray should rotate in a clockwise direction to get to the
+     * point or if the point is on the line determined by the line segment but
+     * not on the ray from the segment's starting point and through its end
+     * point.
      * 
-     * @param p the test point
-     * 
-     * @return the value that describes where the point is with respect to 
-     * this line segment, given the orientation of this line segment
+     * @param p
+     *            the test point.
+     * @return the value that describes where the point is with respect to this
+     *         line segment, given the orientation of this line segment.
      */
     public int relativeCCW(Point2D p) {
         return relativeCCW(getX1(), getY1(), getX2(), getY2(), p.getX(), p.getY());
@@ -536,28 +595,31 @@
     /**
      * Tells whether the two line segments cross.
      * 
-     * @param x1 the x coordinate of the starting point of the first segment
-     * @param y1 the y coordinate of the starting point of the first segment
-     * @param x2 the x coordinate of the end point of the first segment
-     * @param y2 the y coordinate of the end point of the first segment
-     * @param x3 the x coordinate of the starting point of the second segment
-     * @param y3 the y coordinate of the starting point of the second segment
-     * @param x4 the x coordinate of the end point of the second segment
-     * @param y4 the y coordinate of the end point of the second segment
-     * 
-     * @return true, if the two line segments cross
+     * @param x1
+     *            the x coordinate of the starting point of the first segment.
+     * @param y1
+     *            the y coordinate of the starting point of the first segment.
+     * @param x2
+     *            the x coordinate of the end point of the first segment.
+     * @param y2
+     *            the y coordinate of the end point of the first segment.
+     * @param x3
+     *            the x coordinate of the starting point of the second segment.
+     * @param y3
+     *            the y coordinate of the starting point of the second segment.
+     * @param x4
+     *            the x coordinate of the end point of the second segment.
+     * @param y4
+     *            the y coordinate of the end point of the second segment.
+     * @return true, if the two line segments cross.
      */
-    public static boolean linesIntersect(double x1, double y1, double x2,
-            double y2, double x3, double y3, double x4, double y4)
-    {
+    public static boolean linesIntersect(double x1, double y1, double x2, double y2, double x3,
+            double y3, double x4, double y4) {
         /*
          * A = (x2-x1, y2-y1) B = (x3-x1, y3-y1) C = (x4-x1, y4-y1) D = (x4-x3,
-         * y4-y3) = C-B E = (x1-x3, y1-y3) = -B F = (x2-x3, y2-y3) = A-B
-         *
-         * Result is ((AxB) * (AxC) <=0) and ((DxE) * (DxF) <= 0)
-         *
-         * DxE = (C-B)x(-B) = BxB-CxB = BxC DxF = (C-B)x(A-B) = CxA-CxB-BxA+BxB =
-         * AxB+BxC-AxC
+         * y4-y3) = C-B E = (x1-x3, y1-y3) = -B F = (x2-x3, y2-y3) = A-B Result
+         * is ((AxB) (AxC) <=0) and ((DxE) (DxF) <= 0) DxE = (C-B)x(-B) =
+         * BxB-CxB = BxC DxF = (C-B)x(A-B) = CxA-CxB-BxA+BxB = AxB+BxC-AxC
          */
 
         x2 -= x1; // A
@@ -573,16 +635,14 @@
         // Online
         if (AvB == 0.0 && AvC == 0.0) {
             if (x2 != 0.0) {
-                return
-                    (x4 * x3 <= 0.0) ||
-                    ((x3 * x2 >= 0.0) &&
-                     (x2 > 0.0 ? x3 <= x2 || x4 <= x2 : x3 >= x2 || x4 >= x2));
+                return (x4 * x3 <= 0.0)
+                        || ((x3 * x2 >= 0.0) && (x2 > 0.0 ? x3 <= x2 || x4 <= x2 : x3 >= x2
+                                || x4 >= x2));
             }
             if (y2 != 0.0) {
-                return
-                    (y4 * y3 <= 0.0) ||
-                    ((y3 * y2 >= 0.0) &&
-                     (y2 > 0.0 ? y3 <= y2 || y4 <= y2 : y3 >= y2 || y4 >= y2));
+                return (y4 * y3 <= 0.0)
+                        || ((y3 * y2 >= 0.0) && (y2 > 0.0 ? y3 <= y2 || y4 <= y2 : y3 >= y2
+                                || y4 >= y2));
             }
             return false;
         }
@@ -595,12 +655,15 @@
     /**
      * Tells whether the specified line segments crosses this line segment.
      * 
-     * @param x1 the x coordinate of the starting point of the test segment
-     * @param y1 the y coordinate of the starting point of the test segment
-     * @param x2 the x coordinate of the end point of the test segment
-     * @param y2 the y coordinate of the end point of the test segment
-     * 
-     * @return true, if the specified line segments crosses this line segment
+     * @param x1
+     *            the x coordinate of the starting point of the test segment.
+     * @param y1
+     *            the y coordinate of the starting point of the test segment.
+     * @param x2
+     *            the x coordinate of the end point of the test segment.
+     * @param y2
+     *            the y coordinate of the end point of the test segment.
+     * @return true, if the specified line segments crosses this line segment.
      */
     public boolean intersectsLine(double x1, double y1, double x2, double y2) {
         return linesIntersect(x1, y1, x2, y2, getX1(), getY1(), getX2(), getY2());
@@ -609,31 +672,37 @@
     /**
      * Tells whether the specified line segments crosses this line segment.
      * 
-     * @param l the test segment
-     * 
-     * @return true, if the specified line segments crosses this line segment
-     * 
-     * @throws NullPointerException if l is null
+     * @param l
+     *            the test segment.
+     * @return true, if the specified line segments crosses this line segment.
+     * @throws NullPointerException
+     *             if l is null.
      */
     public boolean intersectsLine(Line2D l) {
-        return linesIntersect(l.getX1(), l.getY1(), l.getX2(), l.getY2(), getX1(), getY1(), getX2(), getY2());
+        return linesIntersect(l.getX1(), l.getY1(), l.getX2(), l.getY2(), getX1(), getY1(),
+                getX2(), getY2());
     }
 
     /**
-     * Gives the square of the distance between the point and the 
-     * line segment.
+     * Gives the square of the distance between the point and the line segment.
      * 
-     * @param x1 the x coordinate of the starting point of the line segment
-     * @param y1 the y coordinate of the starting point of the line segment
-     * @param x2 the x coordinate of the end point of the line segment
-     * @param y2 the y coordinate of the end point of the line segment
-     * @param px the x coordinate of the test point
-     * @param py the y coordinate of the test point
-     * 
-     * @return the the square of the distance between the point and the 
-     * line segment
+     * @param x1
+     *            the x coordinate of the starting point of the line segment.
+     * @param y1
+     *            the y coordinate of the starting point of the line segment.
+     * @param x2
+     *            the x coordinate of the end point of the line segment.
+     * @param y2
+     *            the y coordinate of the end point of the line segment.
+     * @param px
+     *            the x coordinate of the test point.
+     * @param py
+     *            the y coordinate of the test point.
+     * @return the the square of the distance between the point and the line
+     *         segment.
      */
-    public static double ptSegDistSq(double x1, double y1, double x2, double y2, double px, double py) {
+    public static double ptSegDistSq(double x1, double y1, double x2, double y2, double px,
+            double py) {
         /*
          * A = (x2 - x1, y2 - y1) P = (px - x1, py - y1)
          */
@@ -661,92 +730,95 @@
     }
 
     /**
-     * Gives the distance between the point and the 
-     * line segment.
+     * Gives the distance between the point and the line segment.
      * 
-     * @param x1 the x coordinate of the starting point of the line segment
-     * @param y1 the y coordinate of the starting point of the line segment
-     * @param x2 the x coordinate of the end point of the line segment
-     * @param y2 the y coordinate of the end point of the line segment
-     * @param px the x coordinate of the test point
-     * @param py the y coordinate of the test point
-     * 
-     * @return the the distance between the point and the 
-     * line segment
+     * @param x1
+     *            the x coordinate of the starting point of the line segment.
+     * @param y1
+     *            the y coordinate of the starting point of the line segment.
+     * @param x2
+     *            the x coordinate of the end point of the line segment.
+     * @param y2
+     *            the y coordinate of the end point of the line segment.
+     * @param px
+     *            the x coordinate of the test point.
+     * @param py
+     *            the y coordinate of the test point.
+     * @return the the distance between the point and the line segment.
      */
     public static double ptSegDist(double x1, double y1, double x2, double y2, double px, double py) {
         return Math.sqrt(ptSegDistSq(x1, y1, x2, y2, px, py));
     }
 
     /**
-     * Gives the square of the distance between the point and this 
-     * line segment.
+     * Gives the square of the distance between the point and this line segment.
      * 
-     * @param px the x coordinate of the test point
-     * @param py the y coordinate of the test point
-     * 
-     * @return the the square of the distance between the point and this 
-     * line segment
+     * @param px
+     *            the x coordinate of the test point.
+     * @param py
+     *            the y coordinate of the test point.
+     * @return the the square of the distance between the point and this line
+     *         segment.
      */
     public double ptSegDistSq(double px, double py) {
         return ptSegDistSq(getX1(), getY1(), getX2(), getY2(), px, py);
     }
 
     /**
-     * Gives the square of the distance between the point and this 
-     * line segment.
+     * Gives the square of the distance between the point and this line segment.
      * 
-     * @param p the test point
-     * 
-     * @return the square of the distance between the point and this 
-     * line segment
+     * @param p
+     *            the test point.
+     * @return the square of the distance between the point and this line
+     *         segment.
      */
     public double ptSegDistSq(Point2D p) {
         return ptSegDistSq(getX1(), getY1(), getX2(), getY2(), p.getX(), p.getY());
     }
 
     /**
-     * Gives the distance between the point and this 
-     * line segment.
+     * Gives the distance between the point and this line segment.
      * 
-     * @param px the x coordinate of the test point
-     * @param py the y coordinate of the test point
-     * 
-     * @return the distance between the point and this 
-     * line segment
+     * @param px
+     *            the x coordinate of the test point.
+     * @param py
+     *            the y coordinate of the test point.
+     * @return the distance between the point and this line segment.
      */
     public double ptSegDist(double px, double py) {
         return ptSegDist(getX1(), getY1(), getX2(), getY2(), px, py);
     }
 
     /**
-     * Gives the distance between the point and this 
-     * line segment.
+     * Gives the distance between the point and this line segment.
      * 
-     * @param p the test point
-     * 
-     * @return the distance between the point and this 
-     * line segment
+     * @param p
+     *            the test point.
+     * @return the distance between the point and this line segment.
      */
     public double ptSegDist(Point2D p) {
         return ptSegDist(getX1(), getY1(), getX2(), getY2(), p.getX(), p.getY());
     }
 
     /**
-     * Gives the square of the distance between the point and the 
-     * line.
+     * Gives the square of the distance between the point and the line.
      * 
-     * @param x1 the x coordinate of the starting point of the line segment
-     * @param y1 the y coordinate of the starting point of the line segment
-     * @param x2 the x coordinate of the end point of the line segment
-     * @param y2 the y coordinate of the end point of the line segment
-     * @param px the x coordinate of the test point
-     * @param py the y coordinate of the test point
-     * 
-     * @return the square of the distance between the point and the 
-     * line
+     * @param x1
+     *            the x coordinate of the starting point of the line segment.
+     * @param y1
+     *            the y coordinate of the starting point of the line segment.
+     * @param x2
+     *            the x coordinate of the end point of the line segment.
+     * @param y2
+     *            the y coordinate of the end point of the line segment.
+     * @param px
+     *            the x coordinate of the test point.
+     * @param py
+     *            the y coordinate of the test point.
+     * @return the square of the distance between the point and the line.
      */
-    public static double ptLineDistSq(double x1, double y1, double x2, double y2, double px, double py) {
+    public static double ptLineDistSq(double x1, double y1, double x2, double y2, double px,
+            double py) {
         x2 -= x1;
         y2 -= y1;
         px -= x1;
@@ -756,72 +828,77 @@
     }
 
     /**
-     * Gives the square of the distance between the point and the 
-     * line.
+     * Gives the square of the distance between the point and the line.
      * 
-     * @param x1 the x coordinate of the starting point of the line segment
-     * @param y1 the y coordinate of the starting point of the line segment
-     * @param x2 the x coordinate of the end point of the line segment
-     * @param y2 the y coordinate of the end point of the line segment
-     * @param px the x coordinate of the test point
-     * @param py the y coordinate of the test point
-     * 
-     * @return the square of the distance between the point and the 
-     * line
+     * @param x1
+     *            the x coordinate of the starting point of the line segment.
+     * @param y1
+     *            the y coordinate of the starting point of the line segment.
+     * @param x2
+     *            the x coordinate of the end point of the line segment.
+     * @param y2
+     *            the y coordinate of the end point of the line segment.
+     * @param px
+     *            the x coordinate of the test point.
+     * @param py
+     *            the y coordinate of the test point.
+     * @return the square of the distance between the point and the line.
      */
     public static double ptLineDist(double x1, double y1, double x2, double y2, double px, double py) {
         return Math.sqrt(ptLineDistSq(x1, y1, x2, y2, px, py));
     }
 
     /**
-     * Gives the square of the distance between the point and the 
-     * line determined by this Line2D.
+     * Gives the square of the distance between the point and the line
+     * determined by this Line2D.
      * 
-     * @param px the x coordinate of the test point
-     * @param py the y coordinate of the test point
-     * 
-     * @return the square of the distance between the point and the 
-     * line determined by this Line2D
+     * @param px
+     *            the x coordinate of the test point.
+     * @param py
+     *            the y coordinate of the test point.
+     * @return the square of the distance between the point and the line
+     *         determined by this Line2D.
      */
     public double ptLineDistSq(double px, double py) {
         return ptLineDistSq(getX1(), getY1(), getX2(), getY2(), px, py);
     }
 
     /**
-     * Gives the square of the distance between the point and the 
-     * line determined by this Line2D.
+     * Gives the square of the distance between the point and the line
+     * determined by this Line2D.
      * 
-     * @param p the test point
-     * 
-     * @return the square of the distance between the point and the 
-     * line determined by this Line2D
+     * @param p
+     *            the test point.
+     * @return the square of the distance between the point and the line
+     *         determined by this Line2D.
      */
     public double ptLineDistSq(Point2D p) {
         return ptLineDistSq(getX1(), getY1(), getX2(), getY2(), p.getX(), p.getY());
     }
 
     /**
-     * Gives the distance between the point and the 
-     * line determined by this Line2D.
+     * Gives the distance between the point and the line determined by this
+     * Line2D.
      * 
-     * @param px the x coordinate of the test point
-     * @param py the y coordinate of the test point
-     * 
-     * @return the distance between the point and the 
-     * line determined by this Line2D
+     * @param px
+     *            the x coordinate of the test point.
+     * @param py
+     *            the y coordinate of the test point.
+     * @return the distance between the point and the line determined by this
+     *         Line2D.
      */
     public double ptLineDist(double px, double py) {
         return ptLineDist(getX1(), getY1(), getX2(), getY2(), px, py);
     }
 
     /**
-     * Gives the distance between the point and the 
-     * line determined by this Line2D.
+     * Gives the distance between the point and the line determined by this
+     * Line2D.
      * 
-     * @param p the test point
-     * 
-     * @return the distance between the point and the 
-     * line determined by this Line2D
+     * @param p
+     *            the test point.
+     * @return the distance between the point and the line determined by this
+     *         Line2D.
      */
     public double ptLineDist(Point2D p) {
         return ptLineDist(getX1(), getY1(), getX2(), getY2(), p.getX(), p.getY());
diff --git a/awt/java/awt/geom/NoninvertibleTransformException.java b/awt/java/awt/geom/NoninvertibleTransformException.java
index 2b7b542..a4e6f0f 100644
--- a/awt/java/awt/geom/NoninvertibleTransformException.java
+++ b/awt/java/awt/geom/NoninvertibleTransformException.java
@@ -18,26 +18,31 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt.geom;
 
 /**
- * The Class NoninvertibleTransformException is the exception that is thrown 
- * when an action requires inverting an {@link AffineTransform} that is 
- * not invertible (has determinant 0).
+ * The Class NoninvertibleTransformException is the exception that is thrown
+ * when an action requires inverting an {@link AffineTransform} that is not
+ * invertible (has determinant 0).
+ * 
+ * @since Android 1.0
  */
 public class NoninvertibleTransformException extends java.lang.Exception {
 
-    /** The Constant serialVersionUID. */
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = 6137225240503990466L;
 
     /**
-     * Instantiates a new noninvertible transform exception.
+     * Instantiates a new non-invertible transform exception.
      * 
-     * @param s the error message
+     * @param s
+     *            the error message.
      */
     public NoninvertibleTransformException(String s) {
         super(s);
     }
 
 }
-
diff --git a/awt/java/awt/geom/PathIterator.java b/awt/java/awt/geom/PathIterator.java
index 5a98083..2d1c0ff 100644
--- a/awt/java/awt/geom/PathIterator.java
+++ b/awt/java/awt/geom/PathIterator.java
@@ -18,72 +18,87 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt.geom;
 
 /**
- * The Interface PathIterator represents an iterator object that can 
- * be used to traverse the outline of a {@link java.awt.Shape}. 
- * It returns points along the boundary of the Shape 
- * which may be actual vertices (in the case of a shape made of line 
- * segments) or may be points on a curved segment with the distance 
- * between the points determined by a chosen flattening factor. 
+ * The Interface PathIterator represents an iterator object that can be used to
+ * traverse the outline of a {@link java.awt.Shape}. It returns points along the
+ * boundary of the Shape which may be actual vertices (in the case of a shape
+ * made of line segments) or may be points on a curved segment with the distance
+ * between the points determined by a chosen flattening factor.
  * <p>
- * If the shape is closed, the outline is traversed in the counter-clockwise 
- * direction. That means that moving forward along the boundary is to travel 
- * in such a way that the interior of the shape is to the left of the 
- * outline path and the exterior of the shape is to the right of the outline
- * path. The interior and exterior of the shape are determined by a 
- * winding rule. 
+ * If the shape is closed, the outline is traversed in the counter-clockwise
+ * direction. That means that moving forward along the boundary is to travel in
+ * such a way that the interior of the shape is to the left of the outline path
+ * and the exterior of the shape is to the right of the outline path. The
+ * interior and exterior of the shape are determined by a winding rule.
+ * </p>
+ * 
+ * @since Android 1.0
  */
 public interface PathIterator {
 
-    /** The Constant WIND_EVEN_ODD indicates the winding rule that says 
-     * that a point is outside the shape if any infinite ray from the point 
-     * crosses the outline of the shape an even number of times, otherwise
-     * it is inside. */
+    /**
+     * The Constant WIND_EVEN_ODD indicates the winding rule that says that a
+     * point is outside the shape if any infinite ray from the point crosses the
+     * outline of the shape an even number of times, otherwise it is inside.
+     */
     public static final int WIND_EVEN_ODD = 0;
-    
-    /** The Constant WIND_NON_ZERO indicates the winding rule that says that
-     * a point is inside the shape if every infinite ray starting from that
-     * point crosses the outline of the shape a non-zero number of times. */
+
+    /**
+     * The Constant WIND_NON_ZERO indicates the winding rule that says that a
+     * point is inside the shape if every infinite ray starting from that point
+     * crosses the outline of the shape a non-zero number of times.
+     */
     public static final int WIND_NON_ZERO = 1;
 
-    /** The Constant SEG_MOVETO indicates that to follow the shape's outline
-     * from the previous point to the current point, the cursor (traversal 
-     * point) should be placed directly on the current point. */
-    public static final int SEG_MOVETO  = 0;
-    
-    /** The Constant SEG_LINETO indicates that to follow the shape's outline
-     * from the previous point to the current point, the cursor (traversal 
-     * point) should follow a straight line. */
-    public static final int SEG_LINETO  = 1;
-    
-    /** The Constant SEG_QUADTO indicates that to follow the shape's outline
-     * from the previous point to the current point, the cursor (traversal 
-     * point) should follow a quadratic curve. */
-    public static final int SEG_QUADTO  = 2;
-    
-    /** The Constant SEG_CUBICTO indicates that to follow the shape's outline
-     * from the previous point to the current point, the cursor (traversal 
-     * point) should follow a cubic curve. */
+    /**
+     * The Constant SEG_MOVETO indicates that to follow the shape's outline from
+     * the previous point to the current point, the cursor (traversal point)
+     * should be placed directly on the current point.
+     */
+    public static final int SEG_MOVETO = 0;
+
+    /**
+     * The Constant SEG_LINETO indicates that to follow the shape's outline from
+     * the previous point to the current point, the cursor (traversal point)
+     * should follow a straight line.
+     */
+    public static final int SEG_LINETO = 1;
+
+    /**
+     * The Constant SEG_QUADTO indicates that to follow the shape's outline from
+     * the previous point to the current point, the cursor (traversal point)
+     * should follow a quadratic curve.
+     */
+    public static final int SEG_QUADTO = 2;
+
+    /**
+     * The Constant SEG_CUBICTO indicates that to follow the shape's outline
+     * from the previous point to the current point, the cursor (traversal
+     * point) should follow a cubic curve.
+     */
     public static final int SEG_CUBICTO = 3;
-    
-    /** The Constant SEG_CLOSE indicates that the previous point was the end
-     * of the shape's outline. */
-    public static final int SEG_CLOSE   = 4;
+
+    /**
+     * The Constant SEG_CLOSE indicates that the previous point was the end of
+     * the shape's outline.
+     */
+    public static final int SEG_CLOSE = 4;
 
     /**
      * Gets the winding rule, either {@link PathIterator#WIND_EVEN_ODD} or
      * {@link PathIterator#WIND_NON_ZERO}.
      * 
-     * @return the winding rule
+     * @return the winding rule.
      */
     public int getWindingRule();
 
     /**
      * Checks if this PathIterator has been completely traversed.
      * 
-     * @return true, if this PathIterator has been completely traversed
+     * @return true, if this PathIterator has been completely traversed.
      */
     public boolean isDone();
 
@@ -93,40 +108,39 @@
     public void next();
 
     /**
-     * Gets the coordinates of the next vertex point along the shape's outline 
-     * and a flag that indicates what kind of segment to use in order to 
-     * connect the previous vertex point to the current vertex point to form 
-     * the current segment.
+     * Gets the coordinates of the next vertex point along the shape's outline
+     * and a flag that indicates what kind of segment to use in order to connect
+     * the previous vertex point to the current vertex point to form the current
+     * segment.
      * 
-     * @param coords the array that the coordinates of the end point of the current 
-     * segment are written into.
-     * 
-     * @return the flag that indicates how to follow the shape's outline
-     * from the previous point to the current one, chosen from 
-     * the following constants:
-     * {@link PathIterator#SEG_MOVETO}, {@link PathIterator#SEG_LINETO}, 
-     * {@link PathIterator#SEG_QUADTO}, {@link PathIterator#SEG_CUBICTO}, 
-     * or {@link PathIterator#SEG_CLOSE}
+     * @param coords
+     *            the array that the coordinates of the end point of the current
+     *            segment are written into.
+     * @return the flag that indicates how to follow the shape's outline from
+     *         the previous point to the current one, chosen from the following
+     *         constants: {@link PathIterator#SEG_MOVETO},
+     *         {@link PathIterator#SEG_LINETO}, {@link PathIterator#SEG_QUADTO},
+     *         {@link PathIterator#SEG_CUBICTO}, or
+     *         {@link PathIterator#SEG_CLOSE}.
      */
     public int currentSegment(float[] coords);
 
     /**
-     * Gets the coordinates of the next vertex point along the shape's outline 
-     * and a flag that indicates what kind of segment to use in order to 
-     * connect the previous vertex point to the current vertex point to form 
-     * the current segment.
+     * Gets the coordinates of the next vertex point along the shape's outline
+     * and a flag that indicates what kind of segment to use in order to connect
+     * the previous vertex point to the current vertex point to form the current
+     * segment.
      * 
-     * @param coords the array that the coordinates of the end point of the current 
-     * segment are written into.
-     * 
-     * @return the flag that indicates how to follow the shape's outline
-     * from the previous point to the current one, chosen from 
-     * the following constants:
-     * {@link PathIterator#SEG_MOVETO}, {@link PathIterator#SEG_LINETO}, 
-     * {@link PathIterator#SEG_QUADTO}, {@link PathIterator#SEG_CUBICTO}, 
-     * or {@link PathIterator#SEG_CLOSE}
+     * @param coords
+     *            the array that the coordinates of the end point of the current
+     *            segment are written into.
+     * @return the flag that indicates how to follow the shape's outline from
+     *         the previous point to the current one, chosen from the following
+     *         constants: {@link PathIterator#SEG_MOVETO},
+     *         {@link PathIterator#SEG_LINETO}, {@link PathIterator#SEG_QUADTO},
+     *         {@link PathIterator#SEG_CUBICTO}, or
+     *         {@link PathIterator#SEG_CLOSE}.
      */
     public int currentSegment(double[] coords);
 
 }
-
diff --git a/awt/java/awt/geom/Point2D.java b/awt/java/awt/geom/Point2D.java
index 7719e67..f7026c8 100644
--- a/awt/java/awt/geom/Point2D.java
+++ b/awt/java/awt/geom/Point2D.java
@@ -18,40 +18,51 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt.geom;
 
 import org.apache.harmony.misc.HashCode;
 
 /**
- * The Class Point2D represents a point whose data is given in 
- * high-precision values appropriate for graphical operations.
+ * The Class Point2D represents a point whose data is given in high-precision
+ * values appropriate for graphical operations.
+ * 
+ * @since Android 1.0
  */
 public abstract class Point2D implements Cloneable {
 
     /**
-     * The Class Float is the subclass of Point2D that has all 
-     * of its data values stored with float-level precision.
+     * The Class Float is the subclass of Point2D that has all of its data
+     * values stored with float-level precision.
+     * 
+     * @since Android 1.0
      */
     public static class Float extends Point2D {
 
-        /** The x coordinate. */
+        /**
+         * The x coordinate.
+         */
         public float x;
-        
-        /** The y coordinate. */
+
+        /**
+         * The y coordinate.
+         */
         public float y;
 
         /**
-         * Instantiates a new float-valued Point2D with its data 
-         * set to zero.
+         * Instantiates a new float-valued Point2D with its data set to zero.
          */
         public Float() {
         }
 
         /**
-         * Instantiates a new float-valued Point2D with the specified coordinates.
+         * Instantiates a new float-valued Point2D with the specified
+         * coordinates.
          * 
-         * @param x the x coordinate
-         * @param y the y coordinate
+         * @param x
+         *            the x coordinate.
+         * @param y
+         *            the y coordinate.
          */
         public Float(float x, float y) {
             this.x = x;
@@ -71,8 +82,10 @@
         /**
          * Sets the point's coordinates.
          * 
-         * @param x the x coordinate
-         * @param y the y coordinate
+         * @param x
+         *            the x coordinate.
+         * @param y
+         *            the y coordinate.
          */
         public void setLocation(float x, float y) {
             this.x = x;
@@ -92,29 +105,37 @@
     }
 
     /**
-     * The Class Double is the subclass of Point2D that has all 
-     * of its data values stored with double-level precision.
+     * The Class Double is the subclass of Point2D that has all of its data
+     * values stored with double-level precision.
+     * 
+     * @since Android 1.0
      */
     public static class Double extends Point2D {
 
-        /** The x coordinate. */
+        /**
+         * The x coordinate.
+         */
         public double x;
-        
-        /** The y coordinate. */
+
+        /**
+         * The y coordinate.
+         */
         public double y;
 
         /**
-         * Instantiates a new double-valued Point2D with its data 
-         * set to zero.
+         * Instantiates a new double-valued Point2D with its data set to zero.
          */
         public Double() {
         }
 
         /**
-         * Instantiates a new double-valued Point2D with the specified coordinates.
+         * Instantiates a new double-valued Point2D with the specified
+         * coordinates.
          * 
-         * @param x the x coordinate
-         * @param y the y coordinate
+         * @param x
+         *            the x coordinate.
+         * @param y
+         *            the y coordinate.
          */
         public Double(double x, double y) {
             this.x = x;
@@ -152,29 +173,32 @@
     /**
      * Gets the x coordinate.
      * 
-     * @return the x coordinate
+     * @return the x coordinate.
      */
     public abstract double getX();
 
     /**
      * Gets the y coordinate.
      * 
-     * @return the y coordinate
+     * @return the y coordinate.
      */
     public abstract double getY();
 
     /**
      * Sets the point's coordinates.
      * 
-     * @param x the x coordinate
-     * @param y the y coordinate
+     * @param x
+     *            the x coordinate.
+     * @param y
+     *            the y coordinate.
      */
     public abstract void setLocation(double x, double y);
 
     /**
      * Sets the point's coordinates by copying them from another point.
      * 
-     * @param p the point to copy the data from
+     * @param p
+     *            the point to copy the data from.
      */
     public void setLocation(Point2D p) {
         setLocation(p.getX(), p.getY());
@@ -183,12 +207,15 @@
     /**
      * Finds the square of the distance between the two specified points.
      * 
-     * @param x1 the x coordinate of the first point
-     * @param y1 the y coordinate of the first point
-     * @param x2 the x coordinate of the second point
-     * @param y2 the y coordinate of the second point
-     * 
-     * @return the square of the distance between the two specified points
+     * @param x1
+     *            the x coordinate of the first point.
+     * @param y1
+     *            the y coordinate of the first point.
+     * @param x2
+     *            the x coordinate of the second point.
+     * @param y2
+     *            the y coordinate of the second point.
+     * @return the square of the distance between the two specified points.
      */
     public static double distanceSq(double x1, double y1, double x2, double y2) {
         x2 -= x1;
@@ -197,23 +224,28 @@
     }
 
     /**
-     * Finds the square of the distance between this point and the specified point.
+     * Finds the square of the distance between this point and the specified
+     * point.
      * 
-     * @param px the x coordinate of the point
-     * @param py the y coordinate of the point
-     * 
-     * @return the square of the distance between this point and the specified point
+     * @param px
+     *            the x coordinate of the point.
+     * @param py
+     *            the y coordinate of the point.
+     * @return the square of the distance between this point and the specified
+     *         point.
      */
     public double distanceSq(double px, double py) {
         return Point2D.distanceSq(getX(), getY(), px, py);
     }
 
     /**
-     * Finds the square of the distance between this point and the specified point.
+     * Finds the square of the distance between this point and the specified
+     * point.
      * 
-     * @param p the other point
-     * 
-     * @return the square of the distance between this point and the specified point
+     * @param p
+     *            the other point.
+     * @return the square of the distance between this point and the specified
+     *         point.
      */
     public double distanceSq(Point2D p) {
         return Point2D.distanceSq(getX(), getY(), p.getX(), p.getY());
@@ -222,12 +254,15 @@
     /**
      * Finds the distance between the two specified points.
      * 
-     * @param x1 the x coordinate of the first point
-     * @param y1 the y coordinate of the first point
-     * @param x2 the x coordinate of the second point
-     * @param y2 the y coordinate of the second point
-     * 
-     * @return the distance between the two specified points
+     * @param x1
+     *            the x coordinate of the first point.
+     * @param y1
+     *            the y coordinate of the first point.
+     * @param x2
+     *            the x coordinate of the second point.
+     * @param y2
+     *            the y coordinate of the second point.
+     * @return the distance between the two specified points.
      */
     public static double distance(double x1, double y1, double x2, double y2) {
         return Math.sqrt(distanceSq(x1, y1, x2, y2));
@@ -236,10 +271,11 @@
     /**
      * Finds the distance between this point and the specified point.
      * 
-     * @param px the x coordinate of the point
-     * @param py the y coordinate of the point
-     * 
-     * @return the distance between this point and the specified point
+     * @param px
+     *            the x coordinate of the point.
+     * @param py
+     *            the y coordinate of the point.
+     * @return the distance between this point and the specified point.
      */
     public double distance(double px, double py) {
         return Math.sqrt(distanceSq(px, py));
@@ -248,9 +284,9 @@
     /**
      * Finds the distance between this point and the specified point.
      * 
-     * @param p the other point
-     * 
-     * @return the distance between this point and the specified point
+     * @param p
+     *            the other point.
+     * @return the distance between this point and the specified point.
      */
     public double distance(Point2D p) {
         return Math.sqrt(distanceSq(p));
@@ -279,10 +315,9 @@
             return true;
         }
         if (obj instanceof Point2D) {
-            Point2D p = (Point2D) obj;
+            Point2D p = (Point2D)obj;
             return getX() == p.getX() && getY() == p.getY();
         }
         return false;
     }
 }
-
diff --git a/awt/java/awt/geom/QuadCurve2D.java b/awt/java/awt/geom/QuadCurve2D.java
index 64ea6d6..7a86a48 100644
--- a/awt/java/awt/geom/QuadCurve2D.java
+++ b/awt/java/awt/geom/QuadCurve2D.java
@@ -18,6 +18,7 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt.geom;
 
 import java.awt.Rectangle;
@@ -28,42 +29,58 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Class QuadCurve2D is a Shape that represents a segment of a 
- * quadratic (Bezier) curve. The curved segment is determined by three points:
- * a start point, an end point, and a control point.  The line from the control 
- * point to the starting point gives the tangent to the curve at the
- * starting point, and the line from the control point to the end point 
- * gives the tangent to the curve at the end point.
+ * The Class QuadCurve2D is a Shape that represents a segment of a quadratic
+ * (Bezier) curve. The curved segment is determined by three points: a start
+ * point, an end point, and a control point. The line from the control point to
+ * the starting point gives the tangent to the curve at the starting point, and
+ * the line from the control point to the end point gives the tangent to the
+ * curve at the end point.
+ * 
+ * @since Android 1.0
  */
 public abstract class QuadCurve2D implements Shape, Cloneable {
 
     /**
-     * The Class Float is the subclass of QuadCurve2D that has all 
-     * of its data values stored with float-level precision.
+     * The Class Float is the subclass of QuadCurve2D that has all of its data
+     * values stored with float-level precision.
+     * 
+     * @since Android 1.0
      */
     public static class Float extends QuadCurve2D {
 
-        /** The x coordinate of the starting point of the curved segment. */
+        /**
+         * The x coordinate of the starting point of the curved segment.
+         */
         public float x1;
-        
-        /** The y coordinate of the starting point of the curved segment. */
+
+        /**
+         * The y coordinate of the starting point of the curved segment.
+         */
         public float y1;
-        
-        /** The x coordinate of the control point.  */
+
+        /**
+         * The x coordinate of the control point.
+         */
         public float ctrlx;
-        
-        /** The y coordinate of the control point. */
+
+        /**
+         * The y coordinate of the control point.
+         */
         public float ctrly;
-        
-        /** The x coordinate of the end point of the curved segment. */
+
+        /**
+         * The x coordinate of the end point of the curved segment.
+         */
         public float x2;
-        
-        /** The y coordinate of the end point of the curved segment. */
+
+        /**
+         * The y coordinate of the end point of the curved segment.
+         */
         public float y2;
 
         /**
-         * Instantiates a new float-valued QuadCurve2D with all coordinate values
-         * set to zero.
+         * Instantiates a new float-valued QuadCurve2D with all coordinate
+         * values set to zero.
          */
         public Float() {
         }
@@ -72,12 +89,20 @@
          * Instantiates a new float-valued QuadCurve2D with the specified
          * coordinate values.
          * 
-         * @param x1 the x coordinate of the starting point of the curved segment
-         * @param y1 the y coordinate of the starting point of the curved segment
-         * @param ctrlx the x coordinate of the control point
-         * @param ctrly the y coordinate of the control point
-         * @param x2 the x coordinate of the end point of the curved segment
-         * @param y2 the y coordinate of the end point of the curved segment
+         * @param x1
+         *            the x coordinate of the starting point of the curved
+         *            segment.
+         * @param y1
+         *            the y coordinate of the starting point of the curved
+         *            segment.
+         * @param ctrlx
+         *            the x coordinate of the control point.
+         * @param ctrly
+         *            the y coordinate of the control point.
+         * @param x2
+         *            the x coordinate of the end point of the curved segment.
+         * @param y2
+         *            the y coordinate of the end point of the curved segment.
          */
         public Float(float x1, float y1, float ctrlx, float ctrly, float x2, float y2) {
             setCurve(x1, y1, ctrlx, ctrly, x2, y2);
@@ -141,12 +166,20 @@
         /**
          * Sets the data values of the curve.
          * 
-         * @param x1 the x coordinate of the starting point of the curved segment
-         * @param y1 the y coordinate of the starting point of the curved segment
-         * @param ctrlx the x coordinate of the control point
-         * @param ctrly the y coordinate of the control point
-         * @param x2 the x coordinate of the end point of the curved segment
-         * @param y2 the y coordinate of the end point of the curved segment
+         * @param x1
+         *            the x coordinate of the starting point of the curved
+         *            segment.
+         * @param y1
+         *            the y coordinate of the starting point of the curved
+         *            segment.
+         * @param ctrlx
+         *            the x coordinate of the control point.
+         * @param ctrly
+         *            the y coordinate of the control point.
+         * @param x2
+         *            the x coordinate of the end point of the curved segment.
+         * @param y2
+         *            the y coordinate of the end point of the curved segment.
          */
         public void setCurve(float x1, float y1, float ctrlx, float ctrly, float x2, float y2) {
             this.x1 = x1;
@@ -167,32 +200,46 @@
     }
 
     /**
-     * The Class Double is the subclass of QuadCurve2D that has all 
-     * of its data values stored with double-level precision.
+     * The Class Double is the subclass of QuadCurve2D that has all of its data
+     * values stored with double-level precision.
+     * 
+     * @since Android 1.0
      */
     public static class Double extends QuadCurve2D {
 
-        /** The x coordinate of the starting point of the curved segment. */
+        /**
+         * The x coordinate of the starting point of the curved segment.
+         */
         public double x1;
-        
-        /** The y coordinate of the starting point of the curved segment. */
+
+        /**
+         * The y coordinate of the starting point of the curved segment.
+         */
         public double y1;
-        
-        /** The x coordinate of the control point. */
+
+        /**
+         * The x coordinate of the control point.
+         */
         public double ctrlx;
-        
-        /** The y coordinate of the control point. */
+
+        /**
+         * The y coordinate of the control point.
+         */
         public double ctrly;
-        
-        /** The x coordinate of the end point of the curved segment. */
+
+        /**
+         * The x coordinate of the end point of the curved segment.
+         */
         public double x2;
-        
-        /** The y coordinate of the end point of the curved segment. */
+
+        /**
+         * The y coordinate of the end point of the curved segment.
+         */
         public double y2;
 
         /**
-         * Instantiates a new double-valued QuadCurve2D with all coordinate values
-         * set to zero.
+         * Instantiates a new double-valued QuadCurve2D with all coordinate
+         * values set to zero.
          */
         public Double() {
         }
@@ -201,12 +248,20 @@
          * Instantiates a new double-valued QuadCurve2D with the specified
          * coordinate values.
          * 
-         * @param x1 the x coordinate of the starting point of the curved segment
-         * @param y1 the y coordinate of the starting point of the curved segment
-         * @param ctrlx the x coordinate of the control point
-         * @param ctrly the y coordinate of the control point
-         * @param x2 the x coordinate of the end point of the curved segment
-         * @param y2 the y coordinate of the end point of the curved segment
+         * @param x1
+         *            the x coordinate of the starting point of the curved
+         *            segment.
+         * @param y1
+         *            the y coordinate of the starting point of the curved
+         *            segment.
+         * @param ctrlx
+         *            the x coordinate of the control point.
+         * @param ctrly
+         *            the y coordinate of the control point.
+         * @param x2
+         *            the x coordinate of the end point of the curved segment.
+         * @param y2
+         *            the y coordinate of the end point of the curved segment.
          */
         public Double(double x1, double y1, double ctrlx, double ctrly, double x2, double y2) {
             setCurve(x1, y1, ctrlx, ctrly, x2, y2);
@@ -277,28 +332,37 @@
     }
 
     /*
-     * QuadCurve2D path iterator 
+     * QuadCurve2D path iterator
      */
     /**
      * The PathIterator for a Quad2D curve.
      */
     class Iterator implements PathIterator {
 
-        /** The source QuadCurve2D object. */
+        /**
+         * The source QuadCurve2D object.
+         */
         QuadCurve2D c;
 
-        /** The path iterator transformation. */
+        /**
+         * The path iterator transformation.
+         */
         AffineTransform t;
 
-        /** The current segment index. */
+        /**
+         * The current segment index.
+         */
         int index;
 
         /**
-         * Constructs a new QuadCurve2D.Iterator for given curve and transformation
+         * Constructs a new QuadCurve2D.Iterator for given curve and
+         * transformation
          * 
-         * @param q - the source QuadCurve2D object
-         * @param t the AffineTransform that acts on the coordinates before 
-         * returning them (or null)
+         * @param q
+         *            the source QuadCurve2D object.
+         * @param t
+         *            the AffineTransform that acts on the coordinates before
+         *            returning them (or null).
          */
         Iterator(QuadCurve2D q, AffineTransform t) {
             this.c = q;
@@ -380,284 +444,307 @@
     /**
      * Gets the x coordinate of the starting point.
      * 
-     * @return the x coordinate of the starting point
+     * @return the x coordinate of the starting point.
      */
     public abstract double getX1();
 
     /**
      * Gets the y coordinate of the starting point.
      * 
-     * @return the y coordinate of the starting point
+     * @return the y coordinate of the starting point.
      */
     public abstract double getY1();
 
     /**
      * Gets the starting point.
      * 
-     * @return the starting point
+     * @return the starting point.
      */
     public abstract Point2D getP1();
 
     /**
      * Gets the x coordinate of the control point.
      * 
-     * @return the x coordinate of the control point
+     * @return the x coordinate of the control point.
      */
     public abstract double getCtrlX();
 
     /**
      * Gets the y coordinate of the control point.
      * 
-     * @return y coordinate of the control point
+     * @return y coordinate of the control point.
      */
     public abstract double getCtrlY();
 
     /**
      * Gets the control point.
      * 
-     * @return the control point
+     * @return the control point.
      */
     public abstract Point2D getCtrlPt();
 
     /**
      * Gets the x coordinate of the end point.
      * 
-     * @return the x coordinate of the end point
+     * @return the x coordinate of the end point.
      */
     public abstract double getX2();
 
     /**
      * Gets the y coordinate of the end point.
      * 
-     * @return the y coordinate of the end point
+     * @return the y coordinate of the end point.
      */
     public abstract double getY2();
 
     /**
      * Gets the end point.
      * 
-     * @return the end point
+     * @return the end point.
      */
     public abstract Point2D getP2();
 
     /**
      * Sets the data of the curve.
      * 
-     * @param x1 the x coordinate of the starting point of the curved segment
-     * @param y1 the y coordinate of the starting point of the curved segment
-     * @param ctrlx the x coordinate of the control point
-     * @param ctrly the y coordinate of the control point
-     * @param x2 the x coordinate of the end point of the curved segment
-     * @param y2 the y coordinate of the end point of the curved segment
+     * @param x1
+     *            the x coordinate of the starting point of the curved segment.
+     * @param y1
+     *            the y coordinate of the starting point of the curved segment.
+     * @param ctrlx
+     *            the x coordinate of the control point.
+     * @param ctrly
+     *            the y coordinate of the control point.
+     * @param x2
+     *            the x coordinate of the end point of the curved segment.
+     * @param y2
+     *            the y coordinate of the end point of the curved segment.
      */
-    public abstract void setCurve(double x1, double y1, double ctrlx, double ctrly, double x2, double y2);
+    public abstract void setCurve(double x1, double y1, double ctrlx, double ctrly, double x2,
+            double y2);
 
     /**
      * Sets the data of the curve.
      * 
-     * @param p1 the starting point of the curved segment
-     * @param cp the control point
-     * @param p2 the end point of the curved segment
-     * 
-     * @throws NullPointerException if any of the three points is null.
+     * @param p1
+     *            the starting point of the curved segment.
+     * @param cp
+     *            the control point.
+     * @param p2
+     *            the end point of the curved segment.
+     * @throws NullPointerException
+     *             if any of the three points is null.
      */
     public void setCurve(Point2D p1, Point2D cp, Point2D p2) {
         setCurve(p1.getX(), p1.getY(), cp.getX(), cp.getY(), p2.getX(), p2.getY());
     }
 
     /**
-     * Sets the data of the curve by reading the data from an array
-     * of values. The values are read in the same order as the arguments
-     * of the method {@link QuadCurve2D#setCurve(double, double, double, double, double, double)}.
+     * Sets the data of the curve by reading the data from an array of values.
+     * The values are read in the same order as the arguments of the method
+     * {@link QuadCurve2D#setCurve(double, double, double, double, double, double)}
+     * .
      * 
-     * @param coords the array of values containing the new coordinates
-     * @param offset the offset of the data to read within the array
-     * 
-     * @throws ArrayIndexOutOfBoundsException if coords.length < offset + 6.
-     * @throws NullPointerException if the coordinate array is null.
+     * @param coords
+     *            the array of values containing the new coordinates.
+     * @param offset
+     *            the offset of the data to read within the array.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if {@code coords.length} < offset + 6.
+     * @throws NullPointerException
+     *             if the coordinate array is null.
      */
     public void setCurve(double[] coords, int offset) {
-        setCurve(
-                coords[offset + 0], coords[offset + 1],
-                coords[offset + 2], coords[offset + 3],
+        setCurve(coords[offset + 0], coords[offset + 1], coords[offset + 2], coords[offset + 3],
                 coords[offset + 4], coords[offset + 5]);
     }
 
     /**
-     * Sets the data of the curve by reading the data from an array
-     * of points. The values are read in the same order as the arguments
-     * of the method {@link QuadCurve2D#setCurve(Point2D, Point2D, Point2D)}
+     * Sets the data of the curve by reading the data from an array of points.
+     * The values are read in the same order as the arguments of the method
+     * {@link QuadCurve2D#setCurve(Point2D, Point2D, Point2D)}.
      * 
-     * @param points the array of points containing the new coordinates
-     * @param offset the offset of the data to read within the array
-     * 
-     * @throws ArrayIndexOutOfBoundsException if points.length < offset + 3.
-     * @throws NullPointerException if the point array is null.
+     * @param points
+     *            the array of points containing the new coordinates.
+     * @param offset
+     *            the offset of the data to read within the array.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if points.length < offset + 3.
+     * @throws NullPointerException
+     *             if the point array is null.
      */
     public void setCurve(Point2D[] points, int offset) {
-        setCurve(
-                points[offset + 0].getX(), points[offset + 0].getY(),
-                points[offset + 1].getX(), points[offset + 1].getY(),
-                points[offset + 2].getX(), points[offset + 2].getY());
+        setCurve(points[offset + 0].getX(), points[offset + 0].getY(), points[offset + 1].getX(),
+                points[offset + 1].getY(), points[offset + 2].getX(), points[offset + 2].getY());
     }
 
     /**
      * Sets the data of the curve by copying it from another QuadCurve2D.
      * 
-     * @param curve the curve to copy the data points from
-     * 
-     * @throws NullPointerException if the curve is null.
+     * @param curve
+     *            the curve to copy the data points from.
+     * @throws NullPointerException
+     *             if the curve is null.
      */
     public void setCurve(QuadCurve2D curve) {
-        setCurve(
-                curve.getX1(), curve.getY1(),
-                curve.getCtrlX(), curve.getCtrlY(),
-                curve.getX2(), curve.getY2());
+        setCurve(curve.getX1(), curve.getY1(), curve.getCtrlX(), curve.getCtrlY(), curve.getX2(),
+                curve.getY2());
     }
 
     /**
-     * Gets the square of the distance from the control point to the
-     * straight line segment connecting the start point and the end point
-     * for this curve.
+     * Gets the square of the distance from the control point to the straight
+     * line segment connecting the start point and the end point for this curve.
      * 
-     * @return the square of the distance from the control point to the
-     * straight line segment connecting the start point and the end point.
+     * @return the square of the distance from the control point to the straight
+     *         line segment connecting the start point and the end point.
      */
     public double getFlatnessSq() {
-        return Line2D.ptSegDistSq(
-                getX1(), getY1(),
-                getX2(), getY2(),
-                getCtrlX(), getCtrlY());
+        return Line2D.ptSegDistSq(getX1(), getY1(), getX2(), getY2(), getCtrlX(), getCtrlY());
     }
 
     /**
-     * Gets the square of the distance from the control point to the
-     * straight line segment connecting the start point and the end point.
+     * Gets the square of the distance from the control point to the straight
+     * line segment connecting the start point and the end point.
      * 
-     * @param x1 the x coordinate of the starting point of the curved segment
-     * @param y1 the y coordinate of the starting point of the curved segment
-     * @param ctrlx the x coordinate of the control point
-     * @param ctrly the y coordinate of the control point
-     * @param x2 the x coordinate of the end point of the curved segment
-     * @param y2 the y coordinate of the end point of the curved segment
-     * 
-     * @return the square of the distance from the control point to the
-     * straight line segment connecting the start point and the end point.
+     * @param x1
+     *            the x coordinate of the starting point of the curved segment.
+     * @param y1
+     *            the y coordinate of the starting point of the curved segment.
+     * @param ctrlx
+     *            the x coordinate of the control point.
+     * @param ctrly
+     *            the y coordinate of the control point.
+     * @param x2
+     *            the x coordinate of the end point of the curved segment.
+     * @param y2
+     *            the y coordinate of the end point of the curved segment.
+     * @return the square of the distance from the control point to the straight
+     *         line segment connecting the start point and the end point.
      */
-    public static double getFlatnessSq(double x1, double y1, double ctrlx, double ctrly, double x2, double y2) {
+    public static double getFlatnessSq(double x1, double y1, double ctrlx, double ctrly, double x2,
+            double y2) {
         return Line2D.ptSegDistSq(x1, y1, x2, y2, ctrlx, ctrly);
     }
 
     /**
-     * Gets the square of the distance from the control point to the
-     * straight line segment connecting the start point and the end point
-     * by reading the coordinates of the points from an array of values.
-     * The values are read in the same order as the arguments
-     * of the method {@link QuadCurve2D#getFlatnessSq(double, double, double, double, double, double)}.
+     * Gets the square of the distance from the control point to the straight
+     * line segment connecting the start point and the end point by reading the
+     * coordinates of the points from an array of values. The values are read in
+     * the same order as the arguments of the method
+     * {@link QuadCurve2D#getFlatnessSq(double, double, double, double, double, double)}
+     * .
      * 
-     * @param coords the array of points containing the coordinates to use for 
-     * the calculation
-     * @param offset the offset of the data to read within the array
-     * 
-     * @return the square of the distance from the control point to the
-     * straight line segment connecting the start point and the end point.
-     * 
-     * @throws ArrayIndexOutOfBoundsException if coords.length < offset + 6.
-     * @throws NullPointerException if the coordinate array is null.
+     * @param coords
+     *            the array of points containing the coordinates to use for the
+     *            calculation
+     * @param offset
+     *            the offset of the data to read within the array
+     * @return the square of the distance from the control point to the straight
+     *         line segment connecting the start point and the end point.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if {@code coords.length} < offset + 6.
+     * @throws NullPointerException
+     *             if the coordinate array is null.
      */
     public static double getFlatnessSq(double coords[], int offset) {
-        return Line2D.ptSegDistSq(
-                coords[offset + 0], coords[offset + 1],
-                coords[offset + 4], coords[offset + 5],
-                coords[offset + 2], coords[offset + 3]);
+        return Line2D.ptSegDistSq(coords[offset + 0], coords[offset + 1], coords[offset + 4],
+                coords[offset + 5], coords[offset + 2], coords[offset + 3]);
     }
 
     /**
-     * Gets the distance from the control point to the
-     * straight line segment connecting the start point and the end point
-     * of this QuadCurve2D.
+     * Gets the distance from the control point to the straight line segment
+     * connecting the start point and the end point of this QuadCurve2D.
      * 
-     * @return the the distance from the control point to the
-     * straight line segment connecting the start point and the end point
-     * of this QuadCurve2D
+     * @return the the distance from the control point to the straight line
+     *         segment connecting the start point and the end point of this
+     *         QuadCurve2D.
      */
     public double getFlatness() {
         return Line2D.ptSegDist(getX1(), getY1(), getX2(), getY2(), getCtrlX(), getCtrlY());
     }
 
     /**
-     * Gets the distance from the control point to the
-     * straight line segment connecting the start point and the end point.
+     * Gets the distance from the control point to the straight line segment
+     * connecting the start point and the end point.
      * 
-     * @param x1 the x coordinate of the starting point of the curved segment
-     * @param y1 the y coordinate of the starting point of the curved segment
-     * @param ctrlx the x coordinate of the control point
-     * @param ctrly the y coordinate of the control point
-     * @param x2 the x coordinate of the end point of the curved segment
-     * @param y2 the y coordinate of the end point of the curved segment
-     * 
-     * @return the the distance from the control point to the
-     * straight line segment connecting the start point and the end point
+     * @param x1
+     *            the x coordinate of the starting point of the curved segment.
+     * @param y1
+     *            the y coordinate of the starting point of the curved segment.
+     * @param ctrlx
+     *            the x coordinate of the control point.
+     * @param ctrly
+     *            the y coordinate of the control point.
+     * @param x2
+     *            the x coordinate of the end point of the curved segment.
+     * @param y2
+     *            the y coordinate of the end point of the curved segment.
+     * @return the the distance from the control point to the straight line
+     *         segment connecting the start point and the end point.
      */
-    public static double getFlatness(double x1, double y1, double ctrlx,
-            double ctrly, double x2, double y2)
-    {
+    public static double getFlatness(double x1, double y1, double ctrlx, double ctrly, double x2,
+            double y2) {
         return Line2D.ptSegDist(x1, y1, x2, y2, ctrlx, ctrly);
     }
 
     /**
-     * Gets the the distance from the control point to the
-     * straight line segment connecting the start point and the end point.
-     * The values are read in the same order as the arguments
-     * of the method {@link QuadCurve2D#getFlatness(double, double, double, double, double, double)}.
+     * Gets the the distance from the control point to the straight line segment
+     * connecting the start point and the end point. The values are read in the
+     * same order as the arguments of the method
+     * {@link QuadCurve2D#getFlatness(double, double, double, double, double, double)}
+     * .
      * 
-     * @param coords the array of points containing the coordinates to use for 
-     * the calculation
-     * @param offset the offset of the data to read within the array
-     * 
-     * @return the the distance from the control point to the
-     * straight line segment connecting the start point and the end point
-     * 
-     * @throws ArrayIndexOutOfBoundsException if coords.length < offset + 6.
-     * @throws NullPointerException if the coordinate array is null.
+     * @param coords
+     *            the array of points containing the coordinates to use for the
+     *            calculation.
+     * @param offset
+     *            the offset of the data to read within the array.
+     * @return the the distance from the control point to the straight line
+     *         segment connecting the start point and the end point.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if {code coords.length} < offset + 6.
+     * @throws NullPointerException
+     *             if the coordinate array is null.
      */
     public static double getFlatness(double coords[], int offset) {
-        return Line2D.ptSegDist(
-                coords[offset + 0], coords[offset + 1],
-                coords[offset + 4], coords[offset + 5],
-                coords[offset + 2], coords[offset + 3]);
+        return Line2D.ptSegDist(coords[offset + 0], coords[offset + 1], coords[offset + 4],
+                coords[offset + 5], coords[offset + 2], coords[offset + 3]);
     }
 
     /**
-     * Creates the data for two quadratic curves by dividing this
-     * curve in two. The division point is the point on the curve 
-     * that is closest to this curve's control point. The data of 
-     * this curve is left unchanged.
+     * Creates the data for two quadratic curves by dividing this curve in two.
+     * The division point is the point on the curve that is closest to this
+     * curve's control point. The data of this curve is left unchanged.
      * 
-     * @param left the QuadCurve2D where the left (start) segment's 
-     * data is written
-     * @param right the QuadCurve2D where the right (end) segment's 
-     * data is written
-     * 
-     * @throws NullPointerException if either curve is null.
+     * @param left
+     *            the QuadCurve2D where the left (start) segment's data is
+     *            written.
+     * @param right
+     *            the QuadCurve2D where the right (end) segment's data is
+     *            written.
+     * @throws NullPointerException
+     *             if either curve is null.
      */
     public void subdivide(QuadCurve2D left, QuadCurve2D right) {
         subdivide(this, left, right);
     }
 
     /**
-     * Creates the data for two quadratic curves by dividing a source
-     * curve in two. The division point is the point on the curve 
-     * that is closest to the source curve's control point. The data of 
-     * the source curve is left unchanged.
+     * Creates the data for two quadratic curves by dividing a source curve in
+     * two. The division point is the point on the curve that is closest to the
+     * source curve's control point. The data of the source curve is left
+     * unchanged.
      * 
-     * @param src the curve that provides the initial data
-     * @param left the QuadCurve2D where the left (start) segment's 
-     * data is written
-     * @param right the QuadCurve2D where the right (end) segment's 
-     * data is written
-     * 
-     * @throws NullPointerException if one of the curves is null.
+     * @param src
+     *            the curve that provides the initial data.
+     * @param left
+     *            the QuadCurve2D where the left (start) segment's data is
+     *            written.
+     * @param right
+     *            the QuadCurve2D where the right (end) segment's data is
+     *            written.
+     * @throws NullPointerException
+     *             if one of the curves is null.
      */
     public static void subdivide(QuadCurve2D src, QuadCurve2D left, QuadCurve2D right) {
         double x1 = src.getX1();
@@ -681,26 +768,33 @@
     }
 
     /**
-     * Creates the data for two quadratic curves by dividing a source
-     * curve in two. The division point is the point on the curve 
-     * that is closest to the source curve's control point. The data
-     * for the three curves is read and written from arrays of values in 
-     * the usual order: x1, y1, cx, cy, x2, y2.
-     *  
-     * @param src the array that gives the data values for the source curve
-     * @param srcoff the offset in the src array to read the values from
-     * @param left the array where the coordinates of the start curve should be written
-     * @param leftOff the offset in the left array to start writing the values
-     * @param right the array where the coordinates of the end curve should be written
-     * @param rightOff the offset in the right array to start writing the values
+     * Creates the data for two quadratic curves by dividing a source curve in
+     * two. The division point is the point on the curve that is closest to the
+     * source curve's control point. The data for the three curves is read and
+     * written from arrays of values in the usual order: x1, y1, cx, cy, x2, y2.
      * 
-     * @throws ArrayIndexOutOfBoundsException if src.length < srcoff + 6
-     * or if left.length < leftOff + 6 or if right.length < rightOff + 6.
-     * @throws NullPointerException if one of the arrays is null.
+     * @param src
+     *            the array that gives the data values for the source curve.
+     * @param srcoff
+     *            the offset in the src array to read the values from.
+     * @param left
+     *            the array where the coordinates of the start curve should be
+     *            written.
+     * @param leftOff
+     *            the offset in the left array to start writing the values.
+     * @param right
+     *            the array where the coordinates of the end curve should be
+     *            written.
+     * @param rightOff
+     *            the offset in the right array to start writing the values.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if {@code src.length} < srcoff + 6 or if {@code left.length}
+     *             < leftOff + 6 or if {@code right.length} < rightOff + 6.
+     * @throws NullPointerException
+     *             if one of the arrays is null.
      */
-    public static void subdivide(double src[], int srcoff, double left[],
-            int leftOff, double right[], int rightOff)
-    {
+    public static void subdivide(double src[], int srcoff, double left[], int leftOff,
+            double right[], int rightOff) {
         double x1 = src[srcoff + 0];
         double y1 = src[srcoff + 1];
         double cx = src[srcoff + 2];
@@ -732,42 +826,43 @@
     }
 
     /**
-     * Finds the roots of the quadratic polynomial. This is 
-     * accomplished by finding the (real) values of x that solve
-     * the following equation: eqn[2]*x*x + eqn[1]*x + eqn[0] = 0.
-     * The solutions are written back into the array eqn starting
-     * from the index 0 in the array. The return value tells how 
-     * many array elements have been changed by this method call.
+     * Finds the roots of the quadratic polynomial. This is accomplished by
+     * finding the (real) values of x that solve the following equation:
+     * eqn[2]*x*x + eqn[1]*x + eqn[0] = 0. The solutions are written back into
+     * the array eqn starting from the index 0 in the array. The return value
+     * tells how many array elements have been changed by this method call.
      * 
-     * @param eqn an array containing the coefficients of the 
-     * quadratic polynomial to solve.
-     * 
-     * @return the number of roots of the quadratic polynomial
-     * 
-     * @throws ArrayIndexOutOfBoundsException if eqn.length < 3.
-     * @throws NullPointerException if the array is null.
+     * @param eqn
+     *            an array containing the coefficients of the quadratic
+     *            polynomial to solve.
+     * @return the number of roots of the quadratic polynomial.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if {@code eqn.length} < 3.
+     * @throws NullPointerException
+     *             if the array is null.
      */
     public static int solveQuadratic(double eqn[]) {
         return solveQuadratic(eqn, eqn);
     }
 
     /**
-     * Finds the roots of the quadratic polynomial. This is 
-     * accomplished by finding the (real) values of x that solve
-     * the following equation: eqn[2]*x*x + eqn[1]*x + eqn[0] = 0.
-     * The solutions are written into the array res starting
-     * from the index 0 in the array. The return value tells how 
-     * many array elements have been written by this method call.
+     * Finds the roots of the quadratic polynomial. This is accomplished by
+     * finding the (real) values of x that solve the following equation:
+     * eqn[2]*x*x + eqn[1]*x + eqn[0] = 0. The solutions are written into the
+     * array res starting from the index 0 in the array. The return value tells
+     * how many array elements have been written by this method call.
      * 
-     * @param eqn an array containing the coefficients of the 
-     * quadratic polynomial to solve.
-     * @param res the array that this method writes the results into
-     * 
-     * @return the number of roots of the quadratic polynomial
-     * 
-     * @throws ArrayIndexOutOfBoundsException if eqn.length < 3 or 
-     * if res.length is less than the number of roots.
-     * @throws NullPointerException if either array is null.
+     * @param eqn
+     *            an array containing the coefficients of the quadratic
+     *            polynomial to solve.
+     * @param res
+     *            the array that this method writes the results into.
+     * @return the number of roots of the quadratic polynomial.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if {@code eqn.length} < 3 or if {@code res.length} is less
+     *             than the number of roots.
+     * @throws NullPointerException
+     *             if either array is null.
      */
     public static int solveQuadratic(double eqn[], double res[]) {
         return Crossing.solveQuad(eqn, res);
@@ -821,4 +916,3 @@
     }
 
 }
-
diff --git a/awt/java/awt/geom/Rectangle2D.java b/awt/java/awt/geom/Rectangle2D.java
index d33dd91..8166134 100644
--- a/awt/java/awt/geom/Rectangle2D.java
+++ b/awt/java/awt/geom/Rectangle2D.java
@@ -18,6 +18,7 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt.geom;
 
 import java.util.NoSuchElementException;
@@ -26,44 +27,64 @@
 import org.apache.harmony.misc.HashCode;
 
 /**
- * The Class Rectangle2D represents a rectangle whose coordinates are given 
- * with the correct precision to be used with the Graphics2D classes.
+ * The Class Rectangle2D represents a rectangle whose coordinates are given with
+ * the correct precision to be used with the Graphics2D classes.
+ * 
+ * @since Android 1.0
  */
 public abstract class Rectangle2D extends RectangularShape {
 
-    /** The Constant OUT_LEFT is a mask that is used to indicate that a 
-     * given point is outside the rectangle and to its left. */
-    public static final int OUT_LEFT   = 1;
-    
-    /** The Constant OUT_TOP is a mask that is used to indicate that a 
-     * given point is outside the rectangle and above it. */
-    public static final int OUT_TOP    = 2;
-    
-    /** The Constant OUT_RIGHT is a mask that is used to indicate that a 
-     * given point is outside the rectangle and to its right. */
-    public static final int OUT_RIGHT  = 4;
-    
-    /** The Constant OUT_BOTTOM is a mask that is used to indicate that a 
-     * given point is outside the rectangle and above it. */
+    /**
+     * The Constant OUT_LEFT is a mask that is used to indicate that a given
+     * point is outside the rectangle and to its left.
+     */
+    public static final int OUT_LEFT = 1;
+
+    /**
+     * The Constant OUT_TOP is a mask that is used to indicate that a given
+     * point is outside the rectangle and above it.
+     */
+    public static final int OUT_TOP = 2;
+
+    /**
+     * The Constant OUT_RIGHT is a mask that is used to indicate that a given
+     * point is outside the rectangle and to its right.
+     */
+    public static final int OUT_RIGHT = 4;
+
+    /**
+     * The Constant OUT_BOTTOM is a mask that is used to indicate that a given
+     * point is outside the rectangle and above it.
+     */
     public static final int OUT_BOTTOM = 8;
 
     /**
-     * The Class Float is the subclass of Rectangle2D that represents a 
+     * The Class Float is the subclass of Rectangle2D that represents a
      * rectangle whose data values are given as floats (with float-level
      * precision).
+     * 
+     * @since Android 1.0
      */
     public static class Float extends Rectangle2D {
 
-        /** The x coordinate of the rectangle's upper left corner. */
+        /**
+         * The x coordinate of the rectangle's upper left corner.
+         */
         public float x;
-        
-        /** The y coordinate of the rectangle's upper left corner. */
+
+        /**
+         * The y coordinate of the rectangle's upper left corner.
+         */
         public float y;
-        
-        /** The width of the rectangle. */
+
+        /**
+         * The width of the rectangle.
+         */
         public float width;
-        
-        /** The height of the rectangle. */
+
+        /**
+         * The height of the rectangle.
+         */
         public float height;
 
         /**
@@ -75,10 +96,14 @@
         /**
          * Instantiates a new rectangle with the specified float-precision data.
          * 
-         * @param x the x coordinate of the rectangle's upper left corner
-         * @param y the y coordinate of the rectangle's upper left corner
-         * @param width the width of the rectangle
-         * @param height the height of the rectangle
+         * @param x
+         *            the x coordinate of the rectangle's upper left corner.
+         * @param y
+         *            the y coordinate of the rectangle's upper left corner.
+         * @param width
+         *            the width of the rectangle.
+         * @param height
+         *            the height of the rectangle.
          */
         public Float(float x, float y, float width, float height) {
             setRect(x, y, width, height);
@@ -112,10 +137,14 @@
         /**
          * Sets the rectangle's data to the given values.
          * 
-         * @param x the x coordinate of the rectangle's upper left corner
-         * @param y the y coordinate of the rectangle's upper left corner
-         * @param width the width of the rectangle
-         * @param height the height of the rectangle
+         * @param x
+         *            the x coordinate of the rectangle's upper left corner.
+         * @param y
+         *            the y coordinate of the rectangle's upper left corner.
+         * @param width
+         *            the width of the rectangle.
+         * @param height
+         *            the height of the rectangle.
          */
         public void setRect(float x, float y, float width, float height) {
             this.x = x;
@@ -146,23 +175,19 @@
 
             if (width <= 0.0f) {
                 code |= OUT_LEFT | OUT_RIGHT;
-            } else
-                if (px < x) {
-                    code |= OUT_LEFT;
-                } else
-                    if (px > x + width) {
-                        code |= OUT_RIGHT;
-                    }
+            } else if (px < x) {
+                code |= OUT_LEFT;
+            } else if (px > x + width) {
+                code |= OUT_RIGHT;
+            }
 
             if (height <= 0.0f) {
                 code |= OUT_TOP | OUT_BOTTOM;
-            } else
-                if (py < y) {
-                    code |= OUT_TOP;
-                } else
-                    if (py > y + height) {
-                        code |= OUT_BOTTOM;
-                    }
+            } else if (py < y) {
+                code |= OUT_TOP;
+            } else if (py > y + height) {
+                code |= OUT_BOTTOM;
+            }
 
             return code;
         }
@@ -198,29 +223,41 @@
 
         @Override
         public String toString() {
-            // The output format based on 1.5 release behaviour. It could be obtained in the following way
+            // The output format based on 1.5 release behaviour. It could be
+            // obtained in the following way
             // System.out.println(new Rectangle2D.Float().toString())
-            return getClass().getName() + "[x=" + x + ",y=" + y + ",width=" + width + ",height=" + height + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
+            return getClass().getName()
+                    + "[x=" + x + ",y=" + y + ",width=" + width + ",height=" + height + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
         }
     }
 
     /**
-     * The Class Double is the subclass of Rectangle2D that represents a 
-     * rectangle whose data values are given as doubles (with double-precision-level
-     * precision).
+     * The Class Double is the subclass of Rectangle2D that represents a
+     * rectangle whose data values are given as doubles (with
+     * double-precision-level precision).
+     * 
+     * @since Android 1.0
      */
     public static class Double extends Rectangle2D {
 
-        /** The x coordinate of the rectangle's upper left corner. */
+        /**
+         * The x coordinate of the rectangle's upper left corner.
+         */
         public double x;
-        
-        /** The y coordinate of the rectangle's upper left corner. */
+
+        /**
+         * The y coordinate of the rectangle's upper left corner.
+         */
         public double y;
-        
-        /** The width of the rectangle. */
+
+        /**
+         * The width of the rectangle.
+         */
         public double width;
-        
-        /** The height of the rectangle. */
+
+        /**
+         * The height of the rectangle.
+         */
         public double height;
 
         /**
@@ -232,10 +269,14 @@
         /**
          * Instantiates a new rectangle with the given double values.
          * 
-         * @param x the x coordinate of the rectangle's upper left corner
-         * @param y the y coordinate of the rectangle's upper left corner
-         * @param width the width of the rectangle
-         * @param height the height of the rectangle
+         * @param x
+         *            the x coordinate of the rectangle's upper left corner.
+         * @param y
+         *            the y coordinate of the rectangle's upper left corner.
+         * @param width
+         *            the width of the rectangle.
+         * @param height
+         *            the height of the rectangle.
          */
         public Double(double x, double y, double width, double height) {
             setRect(x, y, width, height);
@@ -288,23 +329,19 @@
 
             if (width <= 0.0) {
                 code |= OUT_LEFT | OUT_RIGHT;
-            } else
-                if (px < x) {
-                    code |= OUT_LEFT;
-                } else
-                    if (px > x + width) {
-                        code |= OUT_RIGHT;
-                    }
+            } else if (px < x) {
+                code |= OUT_LEFT;
+            } else if (px > x + width) {
+                code |= OUT_RIGHT;
+            }
 
             if (height <= 0.0) {
                 code |= OUT_TOP | OUT_BOTTOM;
-            } else
-                if (py < y) {
-                    code |= OUT_TOP;
-                } else
-                    if (py > y + height) {
-                        code |= OUT_BOTTOM;
-                    }
+            } else if (py < y) {
+                code |= OUT_TOP;
+            } else if (py > y + height) {
+                code |= OUT_BOTTOM;
+            }
 
             return code;
         }
@@ -330,45 +367,60 @@
 
         @Override
         public String toString() {
-            // The output format based on 1.5 release behaviour. It could be obtained in the following way
+            // The output format based on 1.5 release behaviour. It could be
+            // obtained in the following way
             // System.out.println(new Rectangle2D.Double().toString())
-            return getClass().getName() + "[x=" + x + ",y=" + y + ",width=" + width + ",height=" + height + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
+            return getClass().getName()
+                    + "[x=" + x + ",y=" + y + ",width=" + width + ",height=" + height + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
         }
     }
 
     /**
-     * The Class Iterator provides 
-     * access to the coordinates of the Rectangle2D's boundary modified 
-     * by an AffineTransform. 
+     * The Class Iterator provides access to the coordinates of the
+     * Rectangle2D's boundary modified by an AffineTransform.
      */
     class Iterator implements PathIterator {
 
-        /** The x coordinate of the rectangle's upper left corner. */
-        double x;
-        
-        /** The y coordinate of the rectangle's upper left corner. */
-        double y;
-        
-        
-        /** The width of the rectangle. */
-        double width;
-        
-        /** The height of the rectangle. */
-        double height;
-                
-        /** The AffineTransform that is used to modify the coordinates 
-         * that are returned by the path iterator. */
-        AffineTransform t;
-        
-        /** The current segment index. */
-        int index;
-        
         /**
-         * Constructs a new Rectangle2D.Iterator for given rectangle and transformation.
+         * The x coordinate of the rectangle's upper left corner.
+         */
+        double x;
+
+        /**
+         * The y coordinate of the rectangle's upper left corner.
+         */
+        double y;
+
+        /**
+         * The width of the rectangle.
+         */
+        double width;
+
+        /**
+         * The height of the rectangle.
+         */
+        double height;
+
+        /**
+         * The AffineTransform that is used to modify the coordinates that are
+         * returned by the path iterator.
+         */
+        AffineTransform t;
+
+        /**
+         * The current segment index.
+         */
+        int index;
+
+        /**
+         * Constructs a new Rectangle2D.Iterator for given rectangle and
+         * transformation.
          * 
-         * @param r - the source Rectangle2D object
-         * @param at - the AffineTransform object to apply to the coordinates 
-         * before returning them
+         * @param r
+         *            the source Rectangle2D object.
+         * @param at
+         *            the AffineTransform object to apply to the coordinates
+         *            before returning them.
          */
         Iterator(Rectangle2D r, AffineTransform at) {
             this.x = r.getX();
@@ -407,23 +459,23 @@
                 coords[1] = y;
             } else {
                 type = SEG_LINETO;
-                switch(index) {
-                case 1:
-                    coords[0] = x + width;
-                    coords[1] = y;
-                    break;
-                case 2:
-                    coords[0] = x + width;
-                    coords[1] = y + height;
-                    break;
-                case 3:
-                    coords[0] = x;
-                    coords[1] = y + height;
-                    break;
-                case 4:
-                    coords[0] = x;
-                    coords[1] = y;
-                    break;
+                switch (index) {
+                    case 1:
+                        coords[0] = x + width;
+                        coords[1] = y;
+                        break;
+                    case 2:
+                        coords[0] = x + width;
+                        coords[1] = y + height;
+                        break;
+                    case 3:
+                        coords[0] = x;
+                        coords[1] = y + height;
+                        break;
+                    case 4:
+                        coords[0] = x;
+                        coords[1] = y;
+                        break;
                 }
             }
             if (t != null) {
@@ -446,23 +498,23 @@
                 type = SEG_MOVETO;
             } else {
                 type = SEG_LINETO;
-                switch(index) {
-                case 1:
-                    coords[0] = (float)(x + width);
-                    coords[1] = (float)y;
-                    break;
-                case 2:
-                    coords[0] = (float)(x + width);
-                    coords[1] = (float)(y + height);
-                    break;
-                case 3:
-                    coords[0] = (float)x;
-                    coords[1] = (float)(y + height);
-                    break;
-                case 4:
-                    coords[0] = (float)x;
-                    coords[1] = (float)y;
-                    break;
+                switch (index) {
+                    case 1:
+                        coords[0] = (float)(x + width);
+                        coords[1] = (float)y;
+                        break;
+                    case 2:
+                        coords[0] = (float)(x + width);
+                        coords[1] = (float)(y + height);
+                        break;
+                    case 3:
+                        coords[0] = (float)x;
+                        coords[1] = (float)(y + height);
+                        break;
+                    case 4:
+                        coords[0] = (float)x;
+                        coords[1] = (float)y;
+                        break;
                 }
             }
             if (t != null) {
@@ -474,7 +526,7 @@
     }
 
     /**
-     * Instantiates a new rectangle2 d.
+     * Instantiates a new Rectangle2D.
      */
     protected Rectangle2D() {
     }
@@ -482,58 +534,64 @@
     /**
      * Sets the rectangle's location and dimension.
      * 
-     * @param x the x coordinate of the rectangle's upper left corner
-     * @param y the y coordinate of the rectangle's upper left corner
-     * @param width the width of the rectangle
-     * @param height the height of the rectangle
+     * @param x
+     *            the x coordinate of the rectangle's upper left corner.
+     * @param y
+     *            the y coordinate of the rectangle's upper left corner.
+     * @param width
+     *            the width of the rectangle.
+     * @param height
+     *            the height of the rectangle.
      */
     public abstract void setRect(double x, double y, double width, double height);
 
     /**
-     * Gets the location of the point with respect to the rectangle and 
-     * packs the information into a single int using the bitmasks 
-     * {@link Rectangle2D#OUT_LEFT}, {@link Rectangle2D#OUT_RIGHT}, 
-     * {@link Rectangle2D#OUT_TOP}, and {@link Rectangle2D#OUT_BOTTOM}.
-     * If the rectangle has zero or negative width, then every point
-     * is regarded as being both to the left and to the right of the
-     * rectangle. Similarly, if the height is zero or negative then 
-     * all points are considered to be both both above and below it.
+     * Gets the location of the point with respect to the rectangle and packs
+     * the information into a single integer using the bitmasks
+     * {@link Rectangle2D#OUT_LEFT}, {@link Rectangle2D#OUT_RIGHT},
+     * {@link Rectangle2D#OUT_TOP}, and {@link Rectangle2D#OUT_BOTTOM}. If the
+     * rectangle has zero or negative width, then every point is regarded as
+     * being both to the left and to the right of the rectangle. Similarly, if
+     * the height is zero or negative then all points are considered to be both
+     * both above and below it.
      * 
-     * @param x the x coordinate of the point to check
-     * @param y the y coordinate of the point to check
-     * 
+     * @param x
+     *            the x coordinate of the point to check.
+     * @param y
+     *            the y coordinate of the point to check.
      * @return the point's location with respect to the rectangle.
      */
     public abstract int outcode(double x, double y);
 
     /**
-     * Creates an new rectangle that is the intersection of this rectangle
-     * with the given rectangle. The resulting rectangle may be empty. 
-     * The data of this rectangle is left unchanged.
+     * Creates an new rectangle that is the intersection of this rectangle with
+     * the given rectangle. The resulting rectangle may be empty. The data of
+     * this rectangle is left unchanged.
      * 
-     * @param r the rectangle to intersect with this rectangle.
-     * 
+     * @param r
+     *            the rectangle to intersect with this rectangle.
      * @return the new rectangle given by intersection.
      */
     public abstract Rectangle2D createIntersection(Rectangle2D r);
 
     /**
-     * Creates an new rectangle that is the union of this rectangle
-     * with the given rectangle. The new rectangle is the smallest 
-     * rectangle which contains both this rectangle and the rectangle
-     * specified as a parameter. The data of this rectangle is left unchanged.
+     * Creates an new rectangle that is the union of this rectangle with the
+     * given rectangle. The new rectangle is the smallest rectangle which
+     * contains both this rectangle and the rectangle specified as a parameter.
+     * The data of this rectangle is left unchanged.
      * 
-     * @param r the rectangle to combine with this rectangle
-     * 
-     * @return the new rectangle given by union
+     * @param r
+     *            the rectangle to combine with this rectangle.
+     * @return the new rectangle given by union.
      */
     public abstract Rectangle2D createUnion(Rectangle2D r);
 
     /**
-     * Sets the data of this rectangle to match the data of the given 
-     * rectangle.
+     * Sets the data of this rectangle to match the data of the given rectangle.
      * 
-     * @param r the rectangle whose data is to be copied into this rectangle's fields.
+     * @param r
+     *            the rectangle whose data is to be copied into this rectangle's
+     *            fields.
      */
     public void setRect(Rectangle2D r) {
         setRect(r.getX(), r.getY(), r.getWidth(), r.getHeight());
@@ -549,61 +607,63 @@
     }
 
     /**
-     * Determines whether any part of the line segment  between (and including) 
-     * the two given points touches any 
-     * part of the rectangle, including its boundary.
+     * Determines whether any part of the line segment between (and including)
+     * the two given points touches any part of the rectangle, including its
+     * boundary.
      * 
-     * @param x1 the x coordinate of one of the points that determines the 
-     * line segment to test
-     * @param y1 the y coordinate of one of the points that determines the 
-     * line segment to test
-     * @param x2 the x coordinate of one of the points that determines the 
-     * line segment to test
-     * @param y2 the y coordinate of one of the points that determines the 
-     * line segment to test
-     * 
-     * @return true, if at least one point of the line segment between the 
-     * two points matches any point of the interior of the rectangle or the
-     * rectangle's boundary.
+     * @param x1
+     *            the x coordinate of one of the points that determines the line
+     *            segment to test.
+     * @param y1
+     *            the y coordinate of one of the points that determines the line
+     *            segment to test.
+     * @param x2
+     *            the x coordinate of one of the points that determines the line
+     *            segment to test.
+     * @param y2
+     *            the y coordinate of one of the points that determines the line
+     *            segment to test.
+     * @return true, if at least one point of the line segment between the two
+     *         points matches any point of the interior of the rectangle or the
+     *         rectangle's boundary.
      */
     public boolean intersectsLine(double x1, double y1, double x2, double y2) {
         double rx1 = getX();
         double ry1 = getY();
         double rx2 = rx1 + getWidth();
         double ry2 = ry1 + getHeight();
-        return
-            (rx1 <= x1 && x1 <= rx2 && ry1 <= y1 && y1 <= ry2) ||
-            (rx1 <= x2 && x2 <= rx2 && ry1 <= y2 && y2 <= ry2) ||
-            Line2D.linesIntersect(rx1, ry1, rx2, ry2, x1, y1, x2, y2) ||
-            Line2D.linesIntersect(rx2, ry1, rx1, ry2, x1, y1, x2, y2);
+        return (rx1 <= x1 && x1 <= rx2 && ry1 <= y1 && y1 <= ry2)
+                || (rx1 <= x2 && x2 <= rx2 && ry1 <= y2 && y2 <= ry2)
+                || Line2D.linesIntersect(rx1, ry1, rx2, ry2, x1, y1, x2, y2)
+                || Line2D.linesIntersect(rx2, ry1, rx1, ry2, x1, y1, x2, y2);
     }
 
     /**
-     * Determines whether any part of the specified line segment touches any 
+     * Determines whether any part of the specified line segment touches any
      * part of the rectangle, including its boundary.
      * 
-     * @param l the line segment to test
-     * 
-     * @return true, if at least one point of the given line segment 
-     * matches any point of the interior of the rectangle or the
-     * rectangle's boundary.
+     * @param l
+     *            the line segment to test.
+     * @return true, if at least one point of the given line segment matches any
+     *         point of the interior of the rectangle or the rectangle's
+     *         boundary.
      */
     public boolean intersectsLine(Line2D l) {
         return intersectsLine(l.getX1(), l.getY1(), l.getX2(), l.getY2());
     }
 
     /**
-     * Gets the location of the point with respect to the rectangle and 
-     * packs the information into a single int using the bitmasks 
-     * {@link Rectangle2D#OUT_LEFT}, {@link Rectangle2D#OUT_RIGHT}, 
-     * {@link Rectangle2D#OUT_TOP}, and {@link Rectangle2D#OUT_BOTTOM}.
-     * If the rectangle has zero or negative width, then every point
-     * is regarded as being both to the left and to the right of the
-     * rectangle. Similarly, if the height is zero or negative then 
-     * all points are considered to be both both above and below it.
+     * Gets the location of the point with respect to the rectangle and packs
+     * the information into a single integer using the bitmasks
+     * {@link Rectangle2D#OUT_LEFT}, {@link Rectangle2D#OUT_RIGHT},
+     * {@link Rectangle2D#OUT_TOP}, and {@link Rectangle2D#OUT_BOTTOM}. If the
+     * rectangle has zero or negative width, then every point is regarded as
+     * being both to the left and to the right of the rectangle. Similarly, if
+     * the height is zero or negative then all points are considered to be both
+     * both above and below it.
      * 
-     * @param p the point to check
-     * 
+     * @param p
+     *            the point to check.
      * @return the point's location with respect to the rectangle.
      */
     public int outcode(Point2D p) {
@@ -620,9 +680,7 @@
         double x2 = x1 + getWidth();
         double y2 = y1 + getHeight();
 
-        return
-            x1 <= x && x < x2 &&
-            y1 <= y && y < y2;
+        return x1 <= x && x < x2 && y1 <= y && y < y2;
     }
 
     public boolean intersects(double x, double y, double width, double height) {
@@ -635,9 +693,7 @@
         double x2 = x1 + getWidth();
         double y2 = y1 + getHeight();
 
-        return
-            x + width > x1 && x < x2 &&
-            y + height > y1 && y < y2;
+        return x + width > x1 && x < x2 && y + height > y1 && y < y2;
     }
 
     public boolean contains(double x, double y, double width, double height) {
@@ -650,19 +706,21 @@
         double x2 = x1 + getWidth();
         double y2 = y1 + getHeight();
 
-        return
-            x1 <= x && x + width <= x2 &&
-            y1 <= y && y + height <= y2;
+        return x1 <= x && x + width <= x2 && y1 <= y && y + height <= y2;
     }
 
     /**
-     * Changes the data values of the destination rectangle to match 
-     * the intersection of the two source rectangles, leaving the 
-     * two source rectangles unchanged. The resulting rectangle may be empty. 
+     * Changes the data values of the destination rectangle to match the
+     * intersection of the two source rectangles, leaving the two source
+     * rectangles unchanged. The resulting rectangle may be empty.
      * 
-     * @param src1 one of the two source rectangles giving the data to intersect
-     * @param src2 one of the two source rectangles giving the data to intersect
-     * @param dst the destination object where the data of the intersection is written
+     * @param src1
+     *            one of the two source rectangles giving the data to intersect.
+     * @param src2
+     *            one of the two source rectangles giving the data to intersect.
+     * @param dst
+     *            the destination object where the data of the intersection is
+     *            written.
      */
     public static void intersect(Rectangle2D src1, Rectangle2D src2, Rectangle2D dst) {
         double x1 = Math.max(src1.getMinX(), src2.getMinX());
@@ -673,14 +731,17 @@
     }
 
     /**
-     * Changes the data values of the destination rectangle to match 
-     * the union of the two source rectangles, leaving the 
-     * two source rectangles unchanged. The union is the smallest rectangle
-     * tha completely covers the two source rectangles. 
+     * Changes the data values of the destination rectangle to match the union
+     * of the two source rectangles, leaving the two source rectangles
+     * unchanged. The union is the smallest rectangle that completely covers the
+     * two source rectangles.
      * 
-     * @param src1 one of the two source rectangles giving the data
-     * @param src2 one of the two source rectangles giving the data
-     * @param dst the destination object where the data of the union is written
+     * @param src1
+     *            one of the two source rectangles giving the data.
+     * @param src2
+     *            one of the two source rectangles giving the data.
+     * @param dst
+     *            the destination object where the data of the union is written.
      */
     public static void union(Rectangle2D src1, Rectangle2D src2, Rectangle2D dst) {
         double x1 = Math.min(src1.getMinX(), src2.getMinX());
@@ -693,8 +754,12 @@
     /**
      * Enlarges the rectangle so that it includes the given point.
      * 
-     * @param x the x coordinate of the new point to be covered by the rectangle
-     * @param y the y coordinate of the new point to be covered by the rectangle
+     * @param x
+     *            the x coordinate of the new point to be covered by the
+     *            rectangle.
+     * @param y
+     *            the y coordinate of the new point to be covered by the
+     *            rectangle.
      */
     public void add(double x, double y) {
         double x1 = Math.min(getMinX(), x);
@@ -707,7 +772,8 @@
     /**
      * Enlarges the rectangle so that it includes the given point.
      * 
-     * @param p the new point to be covered by the rectangle
+     * @param p
+     *            the new point to be covered by the rectangle.
      */
     public void add(Point2D p) {
         add(p.getX(), p.getY());
@@ -716,7 +782,8 @@
     /**
      * Enlarges the rectangle so that it covers the given rectangle.
      * 
-     * @param r the new rectangle to be covered by this rectangle
+     * @param r
+     *            the new rectangle to be covered by this rectangle.
      */
     public void add(Rectangle2D r) {
         union(this, r, this);
@@ -748,14 +815,10 @@
         }
         if (obj instanceof Rectangle2D) {
             Rectangle2D r = (Rectangle2D)obj;
-            return
-                getX() == r.getX() &&
-                getY() == r.getY() &&
-                getWidth() == r.getWidth() &&
-                getHeight() == r.getHeight();
+            return getX() == r.getX() && getY() == r.getY() && getWidth() == r.getWidth()
+                    && getHeight() == r.getHeight();
         }
         return false;
     }
 
 }
-
diff --git a/awt/java/awt/geom/RectangularShape.java b/awt/java/awt/geom/RectangularShape.java
index 0a77dfd..0b0d05c 100644
--- a/awt/java/awt/geom/RectangularShape.java
+++ b/awt/java/awt/geom/RectangularShape.java
@@ -18,17 +18,19 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt.geom;
 
 import java.awt.Rectangle;
 import java.awt.Shape;
 
 /**
- * The Class RectangularShape represents a Shape whose data is 
- * (at least partially) described by a rectangular frame. This includes 
- * shapes which are obviously rectangular (such as Rectangle2D) as well as
- * shapes like Arc2D which are largely determined by the rectangle they 
- * fit inside.
+ * The Class RectangularShape represents a Shape whose data is (at least
+ * partially) described by a rectangular frame. This includes shapes which are
+ * obviously rectangular (such as Rectangle2D) as well as shapes like Arc2D
+ * which are largely determined by the rectangle they fit inside.
+ * 
+ * @since Android 1.0
  */
 public abstract class RectangularShape implements Shape, Cloneable {
 
@@ -67,25 +69,30 @@
     public abstract double getHeight();
 
     /**
-     * Checks if this is an empty rectangle: one with zero as its width or height.
+     * Checks if this is an empty rectangle: one with zero as its width or
+     * height.
      * 
      * @return true, if the width or height is empty.
      */
     public abstract boolean isEmpty();
 
     /**
-     * Sets the data for the bounding rectangle in terms of double values. 
+     * Sets the data for the bounding rectangle in terms of double values.
      * 
-     * @param x the x coordinate of the upper left corner of the rectangle.
-     * @param y the y coordinate of the upper left corner of the rectangle.
-     * @param w the width of the rectangle.
-     * @param h the height of the rectangle.
+     * @param x
+     *            the x coordinate of the upper left corner of the rectangle.
+     * @param y
+     *            the y coordinate of the upper left corner of the rectangle.
+     * @param w
+     *            the width of the rectangle.
+     * @param h
+     *            the height of the rectangle.
      */
     public abstract void setFrame(double x, double y, double w, double h);
 
     /**
-     * Gets the minimum x value of the bounding rectangle (the x 
-     * coordinate of the upper left corner of the rectangle).
+     * Gets the minimum x value of the bounding rectangle (the x coordinate of
+     * the upper left corner of the rectangle).
      * 
      * @return the minimum x value of the bounding rectangle.
      */
@@ -94,8 +101,8 @@
     }
 
     /**
-     * Gets the minimum y value of the bounding rectangle (the y 
-     * coordinate of the upper left corner of the rectangle).
+     * Gets the minimum y value of the bounding rectangle (the y coordinate of
+     * the upper left corner of the rectangle).
      * 
      * @return the minimum y value of the bounding rectangle.
      */
@@ -104,9 +111,8 @@
     }
 
     /**
-     * Gets the maximum x value of the bounding rectangle (the x
-     * coordinate of the upper left corner of the rectangle plus the 
-     * rectangle's width).
+     * Gets the maximum x value of the bounding rectangle (the x coordinate of
+     * the upper left corner of the rectangle plus the rectangle's width).
      * 
      * @return the maximum x value of the bounding rectangle.
      */
@@ -115,9 +121,8 @@
     }
 
     /**
-     * Gets the maximum y value of the bounding rectangle (the y
-     * coordinate of the upper left corner of the rectangle plus the 
-     * rectangle's height).
+     * Gets the maximum y value of the bounding rectangle (the y coordinate of
+     * the upper left corner of the rectangle plus the rectangle's height).
      * 
      * @return the maximum y value of the bounding rectangle.
      */
@@ -144,8 +149,8 @@
     }
 
     /**
-     * Places the rectangle's size and location data in a new Rectangle2D
-     * object and returns it.
+     * Places the rectangle's size and location data in a new Rectangle2D object
+     * and returns it.
      * 
      * @return the bounding rectangle as a new Rectangle2D object.
      */
@@ -154,21 +159,24 @@
     }
 
     /**
-     * Sets the bounding rectangle in terms of a Point2D which gives its
-     * upper left corner and a Dimension2D object giving its width and height.
+     * Sets the bounding rectangle in terms of a Point2D which gives its upper
+     * left corner and a Dimension2D object giving its width and height.
      * 
-     * @param loc the new upper left corner coordinate.
-     * @param size the new size dimensions.
+     * @param loc
+     *            the new upper left corner coordinate.
+     * @param size
+     *            the new size dimensions.
      */
     public void setFrame(Point2D loc, Dimension2D size) {
         setFrame(loc.getX(), loc.getY(), size.getWidth(), size.getHeight());
     }
 
     /**
-     * Sets the bounding rectangle to match the data contained in the 
-     * specified Rectangle2D.
+     * Sets the bounding rectangle to match the data contained in the specified
+     * Rectangle2D.
      * 
-     * @param r the rectangle that gives the new frame data.
+     * @param r
+     *            the rectangle that gives the new frame data.
      */
     public void setFrame(Rectangle2D r) {
         setFrame(r.getX(), r.getY(), r.getWidth(), r.getHeight());
@@ -176,12 +184,17 @@
 
     /**
      * Sets the framing rectangle given two opposite corners. Any two corners
-     * may be used in any order as long as they are diagonally opposite one another.
+     * may be used in any order as long as they are diagonally opposite one
+     * another.
      * 
-     * @param x1 the x coordinate of one of the corner points.
-     * @param y1 the y coordinate of one of the corner points.
-     * @param x2 the x coordinate of the other corner point.
-     * @param y2 the y coordinate of the other corner point.
+     * @param x1
+     *            the x coordinate of one of the corner points.
+     * @param y1
+     *            the y coordinate of one of the corner points.
+     * @param x2
+     *            the x coordinate of the other corner point.
+     * @param y2
+     *            the y coordinate of the other corner point.
      */
     public void setFrameFromDiagonal(double x1, double y1, double x2, double y2) {
         double rx, ry, rw, rh;
@@ -204,10 +217,13 @@
 
     /**
      * Sets the framing rectangle given two opposite corners. Any two corners
-     * may be used in any order as long as they are diagonally opposite one another.
+     * may be used in any order as long as they are diagonally opposite one
+     * another.
      * 
-     * @param p1 one of the corner points.
-     * @param p2 the other corner point.
+     * @param p1
+     *            one of the corner points.
+     * @param p2
+     *            the other corner point.
      */
     public void setFrameFromDiagonal(Point2D p1, Point2D p2) {
         setFrameFromDiagonal(p1.getX(), p1.getY(), p2.getX(), p2.getY());
@@ -217,10 +233,14 @@
      * Sets the framing rectangle given the center point and one corner. Any
      * corner may be used.
      * 
-     * @param centerX the x coordinate of the center point.
-     * @param centerY the y coordinate of the center point.
-     * @param cornerX the x coordinate of one of the corner points.
-     * @param cornerY the y coordinate of one of the corner points.
+     * @param centerX
+     *            the x coordinate of the center point.
+     * @param centerY
+     *            the y coordinate of the center point.
+     * @param cornerX
+     *            the x coordinate of one of the corner points.
+     * @param cornerY
+     *            the y coordinate of one of the corner points.
      */
     public void setFrameFromCenter(double centerX, double centerY, double cornerX, double cornerY) {
         double width = Math.abs(cornerX - centerX);
@@ -232,8 +252,10 @@
      * Sets the framing rectangle given the center point and one corner. Any
      * corner may be used.
      * 
-     * @param center the center point.
-     * @param corner a corner point.
+     * @param center
+     *            the center point.
+     * @param corner
+     *            a corner point.
      */
     public void setFrameFromCenter(Point2D center, Point2D corner) {
         setFrameFromCenter(center.getX(), center.getY(), corner.getX(), corner.getY());
@@ -273,4 +295,3 @@
     }
 
 }
-
diff --git a/awt/java/awt/geom/RoundRectangle2D.java b/awt/java/awt/geom/RoundRectangle2D.java
index 680a146..8fbddd6 100644
--- a/awt/java/awt/geom/RoundRectangle2D.java
+++ b/awt/java/awt/geom/RoundRectangle2D.java
@@ -18,6 +18,7 @@
  * @author Denis M. Kishenko
  * @version $Revision$
  */
+
 package java.awt.geom;
 
 import java.util.NoSuchElementException;
@@ -25,53 +26,74 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Class RoundRectangle2D describes a rectangle with rounded 
- * corners with high-precision data that is appropriate for geometric
- * operations.
+ * The Class RoundRectangle2D describes a rectangle with rounded corners with
+ * high-precision data that is appropriate for geometric operations.
+ * 
+ * @since Android 1.0
  */
 public abstract class RoundRectangle2D extends RectangularShape {
 
     /**
-     * The Class Float is the subclass of RoundRectangle2D that has all 
-     * of its data values stored with float-level precision.
+     * The Class Float is the subclass of RoundRectangle2D that has all of its
+     * data values stored with float-level precision.
+     * 
+     * @since Android 1.0
      */
     public static class Float extends RoundRectangle2D {
 
-        /** The x coordinate of the rectangle's upper left corner. */
+        /**
+         * The x coordinate of the rectangle's upper left corner.
+         */
         public float x;
-        
-        /** The y coordinate of the rectangle's upper left corner. */
+
+        /**
+         * The y coordinate of the rectangle's upper left corner.
+         */
         public float y;
-        
-        /** The width of the rectangle. */
+
+        /**
+         * The width of the rectangle.
+         */
         public float width;
-        
-        /** The height of the rectangle. */
+
+        /**
+         * The height of the rectangle.
+         */
         public float height;
-        
-        /** The arcwidth of the rounded corners. */
+
+        /**
+         * The arc width of the rounded corners.
+         */
         public float arcwidth;
-        
-        /** The archeight of the rounded corners. */
+
+        /**
+         * The arc height of the rounded corners.
+         */
         public float archeight;
 
         /**
-         * Instantiates a new float-valued RoundRectangle2D with 
-         * its data-values set to zero.
+         * Instantiates a new float-valued RoundRectangle2D with its data-values
+         * set to zero.
          */
         public Float() {
         }
 
         /**
-         * Instantiates a new float-valued RoundRectangle2D with 
-         * the specified data values
+         * Instantiates a new float-valued RoundRectangle2D with the specified
+         * data values.
          * 
-         * @param x the x coordinate of the rectangle's upper left corner
-         * @param y the y coordinate of the rectangle's upper left corner
-         * @param width the width of the rectangle
-         * @param height the height of the rectangle
-         * @param arcwidth the arcwidth of the rounded corners
-         * @param archeight the archeight of the rounded corners
+         * @param x
+         *            the x coordinate of the rectangle's upper left corner.
+         * @param y
+         *            the y coordinate of the rectangle's upper left corner.
+         * @param width
+         *            the width of the rectangle.
+         * @param height
+         *            the height of the rectangle.
+         * @param arcwidth
+         *            the arc width of the rounded corners.
+         * @param archeight
+         *            the arc height of the rounded corners.
          */
         public Float(float x, float y, float width, float height, float arcwidth, float archeight) {
             setRoundRect(x, y, width, height, arcwidth, archeight);
@@ -113,16 +135,23 @@
         }
 
         /**
-         * Sets the data of the round rect.
+         * Sets the data of the round rectangle.
          * 
-         * @param x the x coordinate of the rectangle's upper left corner
-         * @param y the y coordinate of the rectangle's upper left corner
-         * @param width the width of the rectangle
-         * @param height the height of the rectangle
-         * @param arcwidth the arcwidth of the rounded corners
-         * @param archeight the archeight of the rounded corners
+         * @param x
+         *            the x coordinate of the rectangle's upper left corner.
+         * @param y
+         *            the y coordinate of the rectangle's upper left corner.
+         * @param width
+         *            the width of the rectangle.
+         * @param height
+         *            the height of the rectangle.
+         * @param arcwidth
+         *            the arc width of the rounded corners.
+         * @param archeight
+         *            the arc height of the rounded corners.
          */
-        public void setRoundRect(float x, float y, float width, float height, float arcwidth, float archeight) {
+        public void setRoundRect(float x, float y, float width, float height, float arcwidth,
+                float archeight) {
             this.x = x;
             this.y = y;
             this.width = width;
@@ -132,7 +161,8 @@
         }
 
         @Override
-        public void setRoundRect(double x, double y, double width, double height, double arcwidth, double archeight) {
+        public void setRoundRect(double x, double y, double width, double height, double arcwidth,
+                double archeight) {
             this.x = (float)x;
             this.y = (float)y;
             this.width = (float)width;
@@ -157,48 +187,69 @@
     }
 
     /**
-     * The Class Double is the subclass of RoundRectangle2D that has all 
-     * of its data values stored with double-level precision.
+     * The Class Double is the subclass of RoundRectangle2D that has all of its
+     * data values stored with double-level precision.
+     * 
+     * @since Android 1.0
      */
     public static class Double extends RoundRectangle2D {
 
-        /** The x coordinate of the rectangle's upper left corner. */
+        /**
+         * The x coordinate of the rectangle's upper left corner.
+         */
         public double x;
-        
-        /** The y coordinate of the rectangle's upper left corner. */
+
+        /**
+         * The y coordinate of the rectangle's upper left corner.
+         */
         public double y;
-        
-        /** The width of the rectangle. */
+
+        /**
+         * The width of the rectangle.
+         */
         public double width;
-        
-        /** The height of the rectangle. */
+
+        /**
+         * The height of the rectangle.
+         */
         public double height;
-        
-        /** The arcwidth of the rounded corners. */
+
+        /**
+         * The arc width of the rounded corners.
+         */
         public double arcwidth;
-        
-        /** The archeight of the rounded corners. */
+
+        /**
+         * The arc height of the rounded corners.
+         */
         public double archeight;
 
         /**
-         * Instantiates a new double-valued RoundRectangle2D with 
-         * its data-values set to zero.
+         * Instantiates a new double-valued RoundRectangle2D with its
+         * data-values set to zero.
          */
         public Double() {
         }
 
         /**
-         * Instantiates a new double-valued RoundRectangle2D with 
-         * the specified data values.
+         * Instantiates a new double-valued RoundRectangle2D with the specified
+         * data values.
          * 
-         * @param x the x coordinate of the rectangle's upper left corner
-         * @param y the y coordinate of the rectangle's upper left corner
-         * @param width the width of the rectangle
-         * @param height the height of the rectangle
-         * @param arcwidth the arcwidth of the rounded corners
-         * @param archeight the archeight of the rounded corners
+         * @param x
+         *            the x coordinate of the rectangle's upper left corner.
+         * @param y
+         *            the y coordinate of the rectangle's upper left corner.
+         * @param width
+         *            the width of the rectangle.
+         * @param height
+         *            the height of the rectangle.
+         * @param arcwidth
+         *            the arc width of the rounded corners.
+         * @param archeight
+         *            the arc height of the rounded corners.
          */
-        public Double(double x, double y, double width, double height, double arcwidth, double archeight) {
+        public Double(double x, double y, double width, double height, double arcwidth,
+                double archeight) {
             setRoundRect(x, y, width, height, arcwidth, archeight);
         }
 
@@ -238,7 +289,8 @@
         }
 
         @Override
-        public void setRoundRect(double x, double y, double width, double height, double arcwidth, double archeight) {
+        public void setRoundRect(double x, double y, double width, double height, double arcwidth,
+                double archeight) {
             this.x = x;
             this.y = y;
             this.width = width;
@@ -263,7 +315,7 @@
     }
 
     /*
-     * RoundRectangle2D path iterator 
+     * RoundRectangle2D path iterator
      */
     /**
      * The subclass of PathIterator to traverse a RoundRectangle2D.
@@ -274,70 +326,101 @@
          * Path for round corners generated the same way as Ellipse2D
          */
 
-        /** The coefficient to calculate control points of Bezier curves. */
+        /**
+         * The coefficient to calculate control points of Bezier curves.
+         */
         double u = 0.5 - 2.0 / 3.0 * (Math.sqrt(2.0) - 1.0);
 
-        /** The points coordinates calculation table. */
+        /**
+         * The points coordinates calculation table.
+         */
         double points[][] = {
-                { 0.0,  0.5, 0.0,  0.0 }, // MOVETO
-                { 1.0, -0.5, 0.0,  0.0 }, // LINETO
-                { 1.0,   -u, 0.0,  0.0,   // CUBICTO
-                  1.0,  0.0, 0.0,    u,
-                  1.0,  0.0, 0.0,  0.5 },
-                { 1.0,  0.0, 1.0, -0.5 }, // LINETO
-                { 1.0,  0.0, 1.0,   -u,   // CUBICTO
-                  1.0,   -u, 1.0,  0.0,
-                  1.0, -0.5, 1.0,  0.0 },
-                { 0.0,  0.5, 1.0,  0.0 }, // LINETO
-                { 0.0,    u, 1.0,  0.0,   // CUBICTO
-                  0.0,  0.0, 1.0,   -u,
-                  0.0,  0.0, 1.0, -0.5 },
-                { 0.0,  0.0, 0.0,  0.5 }, // LINETO
-                { 0.0,  0.0, 0.0,    u,   // CUBICTO
-                  0.0,    u, 0.0,  0.0,
-                  0.0,  0.5, 0.0,  0.0 } };
+                {
+                        0.0, 0.5, 0.0, 0.0
+                }, // MOVETO
+                {
+                        1.0, -0.5, 0.0, 0.0
+                }, // LINETO
+                {
+                        1.0, -u, 0.0, 0.0, // CUBICTO
+                        1.0, 0.0, 0.0, u, 1.0, 0.0, 0.0, 0.5
+                }, {
+                        1.0, 0.0, 1.0, -0.5
+                }, // LINETO
+                {
+                        1.0, 0.0, 1.0, -u, // CUBICTO
+                        1.0, -u, 1.0, 0.0, 1.0, -0.5, 1.0, 0.0
+                }, {
+                        0.0, 0.5, 1.0, 0.0
+                }, // LINETO
+                {
+                        0.0, u, 1.0, 0.0, // CUBICTO
+                        0.0, 0.0, 1.0, -u, 0.0, 0.0, 1.0, -0.5
+                }, {
+                        0.0, 0.0, 0.0, 0.5
+                }, // LINETO
+                {
+                        0.0, 0.0, 0.0, u, // CUBICTO
+                        0.0, u, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0
+                }
+        };
 
-        /** The segment types correspond to points array. */
+        /**
+         * The segment types correspond to points array.
+         */
         int types[] = {
-                SEG_MOVETO,
-                SEG_LINETO,
-                SEG_CUBICTO,
-                SEG_LINETO,
-                SEG_CUBICTO,
-                SEG_LINETO,
-                SEG_CUBICTO,
-                SEG_LINETO,
-                SEG_CUBICTO};
+                SEG_MOVETO, SEG_LINETO, SEG_CUBICTO, SEG_LINETO, SEG_CUBICTO, SEG_LINETO,
+                SEG_CUBICTO, SEG_LINETO, SEG_CUBICTO
+        };
 
-        /** The x coordinate of left-upper corner of the round rectangle bounds. */
+        /**
+         * The x coordinate of left-upper corner of the round rectangle bounds.
+         */
         double x;
-        
-        /** The y coordinate of left-upper corner of the round rectangle bounds. */
+
+        /**
+         * The y coordinate of left-upper corner of the round rectangle bounds.
+         */
         double y;
-        
-        /** The width of the round rectangle bounds. */
+
+        /**
+         * The width of the round rectangle bounds.
+         */
         double width;
-        
-        /** The height of the round rectangle bounds. */
+
+        /**
+         * The height of the round rectangle bounds.
+         */
         double height;
-        
-        /** The width of arc corners of the round rectangle. */
+
+        /**
+         * The width of arc corners of the round rectangle.
+         */
         double aw;
-        
-        /** The height of arc corners of the round rectangle. */
+
+        /**
+         * The height of arc corners of the round rectangle.
+         */
         double ah;
 
-        /** The path iterator transformation. */
+        /**
+         * The path iterator transformation.
+         */
         AffineTransform t;
 
-        /** The current segmenet index. */
+        /**
+         * The current segment index.
+         */
         int index;
 
         /**
-         * Constructs a new RoundRectangle2D.Iterator for given round rectangle and transformation.
+         * Constructs a new RoundRectangle2D.Iterator for given round rectangle
+         * and transformation.
          * 
-         * @param rr - the source RoundRectangle2D object
-         * @param at - the AffineTransform object to apply rectangle path
+         * @param rr
+         *            - the source RoundRectangle2D object
+         * @param at
+         *            - the AffineTransform object to apply rectangle path
          */
         Iterator(RoundRectangle2D rr, AffineTransform at) {
             this.x = rr.getX();
@@ -415,41 +498,48 @@
     /**
      * Gets the arc width.
      * 
-     * @return the arc width
+     * @return the arc width.
      */
     public abstract double getArcWidth();
 
     /**
      * Gets the arc height.
      * 
-     * @return the arc height
+     * @return the arc height.
      */
     public abstract double getArcHeight();
 
     /**
      * Sets the data of the RoundRectangle2D.
      * 
-     * @param x the x coordinate of the rectangle's upper left corner
-     * @param y the y coordinate of the rectangle's upper left corner
-     * @param width the width of the rectangle
-     * @param height the height of the rectangle
-     * @param arcWidth the arcwidth of the rounded corners
-     * @param arcHeight the archeight of the rounded corners
+     * @param x
+     *            the x coordinate of the rectangle's upper left corner.
+     * @param y
+     *            the y coordinate of the rectangle's upper left corner.
+     * @param width
+     *            the width of the rectangle.
+     * @param height
+     *            the height of the rectangle.
+     * @param arcWidth
+     *            the arc width of the rounded corners.
+     * @param arcHeight
+     *            the arc height of the rounded corners.
      */
     public abstract void setRoundRect(double x, double y, double width, double height,
             double arcWidth, double arcHeight);
 
     /**
-     * Sets the data of the RoundRectangle2D by copying the values
-     * from an existing RoundRectangle2D.
+     * Sets the data of the RoundRectangle2D by copying the values from an
+     * existing RoundRectangle2D.
      * 
-     * @param rr the round rectangle to copy the data from
-     * 
-     * @throws NullPointerException if rr is null
+     * @param rr
+     *            the round rectangle to copy the data from.
+     * @throws NullPointerException
+     *             if rr is null.
      */
     public void setRoundRect(RoundRectangle2D rr) {
-        setRoundRect(rr.getX(), rr.getY(), rr.getWidth(), rr.getHeight(), rr
-                .getArcWidth(), rr.getArcHeight());
+        setRoundRect(rr.getX(), rr.getY(), rr.getWidth(), rr.getHeight(), rr.getArcWidth(), rr
+                .getArcHeight());
     }
 
     @Override
@@ -478,21 +568,19 @@
 
         if (px < rx1 + aw) {
             cx = rx1 + aw;
-        } else
-            if (px > rx2 - aw) {
-                cx = rx2 - aw;
-            } else {
-                return true;
-            }
+        } else if (px > rx2 - aw) {
+            cx = rx2 - aw;
+        } else {
+            return true;
+        }
 
         if (py < ry1 + ah) {
             cy = ry1 + ah;
-        } else
-            if (py > ry2 - ah) {
-                cy = ry2 - ah;
-            } else {
-                return true;
-            }
+        } else if (py > ry2 - ah) {
+            cy = ry2 - ah;
+        } else {
+            return true;
+        }
 
         px = (px - cx) / aw;
         py = (py - cy) / ah;
@@ -537,11 +625,7 @@
         double rx2 = rx + rw;
         double ry2 = ry + rh;
 
-        return
-            contains(rx1, ry1) &&
-            contains(rx2, ry1) &&
-            contains(rx2, ry2) &&
-            contains(rx1, ry2);
+        return contains(rx1, ry1) && contains(rx2, ry1) && contains(rx2, ry2) && contains(rx1, ry2);
     }
 
     public PathIterator getPathIterator(AffineTransform at) {
@@ -549,4 +633,3 @@
     }
 
 }
-
diff --git a/awt/java/awt/geom/package.html b/awt/java/awt/geom/package.html
new file mode 100644
index 0000000..e3a236e
--- /dev/null
+++ b/awt/java/awt/geom/package.html
@@ -0,0 +1,8 @@
+<html>
+  <body>
+    <p>
+      This package contains classes and interfaces related to Java2D shapes and geometry.
+    </p>
+    @since Android 1.0
+  </body>
+</html>
diff --git a/awt/java/awt/im/InputContext.java b/awt/java/awt/im/InputContext.java
index 3468474..cce5148 100644
--- a/awt/java/awt/im/InputContext.java
+++ b/awt/java/awt/im/InputContext.java
@@ -26,6 +26,12 @@
 
 import org.apache.harmony.awt.im.InputMethodContext;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public class InputContext {
     protected InputContext() {
     }
diff --git a/awt/java/awt/im/InputMethodHighlight.java b/awt/java/awt/im/InputMethodHighlight.java
index 53bb20b..865d47c 100644
--- a/awt/java/awt/im/InputMethodHighlight.java
+++ b/awt/java/awt/im/InputMethodHighlight.java
@@ -25,6 +25,12 @@
 
 import org.apache.harmony.awt.internal.nls.Messages;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public class InputMethodHighlight {
 
     public static final int RAW_TEXT = 0;
diff --git a/awt/java/awt/im/InputMethodRequests.java b/awt/java/awt/im/InputMethodRequests.java
index bdd25e6..b12d397 100644
--- a/awt/java/awt/im/InputMethodRequests.java
+++ b/awt/java/awt/im/InputMethodRequests.java
@@ -24,6 +24,12 @@
 import java.awt.font.TextHitInfo;
 import java.text.AttributedCharacterIterator;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface InputMethodRequests {
 
     public AttributedCharacterIterator cancelLatestCommittedText(AttributedCharacterIterator.Attribute[] attributes);
diff --git a/awt/java/awt/im/InputSubset.java b/awt/java/awt/im/InputSubset.java
index 02a1049..708881e 100644
--- a/awt/java/awt/im/InputSubset.java
+++ b/awt/java/awt/im/InputSubset.java
@@ -20,6 +20,12 @@
  */
 package java.awt.im;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public final class InputSubset extends Character.Subset {
 
     public static final InputSubset LATIN = new InputSubset("LATIN"); //$NON-NLS-1$
diff --git a/awt/java/awt/im/spi/InputMethod.java b/awt/java/awt/im/spi/InputMethod.java
index 2c98c46..67a8834 100644
--- a/awt/java/awt/im/spi/InputMethod.java
+++ b/awt/java/awt/im/spi/InputMethod.java
@@ -24,6 +24,12 @@
 import java.awt.Rectangle;
 import java.util.Locale;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface InputMethod {
 
     public void activate();
diff --git a/awt/java/awt/im/spi/InputMethodContext.java b/awt/java/awt/im/spi/InputMethodContext.java
index ca33e87..bfc773c 100644
--- a/awt/java/awt/im/spi/InputMethodContext.java
+++ b/awt/java/awt/im/spi/InputMethodContext.java
@@ -26,6 +26,12 @@
 import java.text.AttributedCharacterIterator;
 //???AWT: import javax.swing.JFrame;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface InputMethodContext extends InputMethodRequests {
 
 //    ???AWT: public JFrame createInputMethodJFrame(String title, boolean attachToInputContext);
diff --git a/awt/java/awt/im/spi/InputMethodDescriptor.java b/awt/java/awt/im/spi/InputMethodDescriptor.java
index 3068cac..c800bc1 100644
--- a/awt/java/awt/im/spi/InputMethodDescriptor.java
+++ b/awt/java/awt/im/spi/InputMethodDescriptor.java
@@ -24,6 +24,12 @@
 import java.awt.Image;
 import java.util.Locale;
 
+/**
+ * This class is not supported in Android 1.0. It is merely provided to maintain
+ * interface compatibility with desktop Java implementations.
+ * 
+ * @since Android 1.0
+ */
 public interface InputMethodDescriptor {
 
     public Locale[] getAvailableLocales() throws AWTException;
diff --git a/awt/java/awt/image/AffineTransformOp.java b/awt/java/awt/image/AffineTransformOp.java
index 546837a..db25e1a 100644
--- a/awt/java/awt/image/AffineTransformOp.java
+++ b/awt/java/awt/image/AffineTransformOp.java
@@ -32,50 +32,60 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The AffineTransform class translates coordinates from 2D coordinates 
- * in the source image or Raster to 2D coordinates in the destination 
- * image or Raster using Affine transformation. The number of bands in 
- * the source Raster should equal to the number of bands in the destination
- * Raster.
+ * The AffineTransform class translates coordinates from 2D coordinates in the
+ * source image or Raster to 2D coordinates in the destination image or Raster
+ * using affine transformation. The number of bands in the source Raster should
+ * equal to the number of bands in the destination Raster.
+ * 
+ * @since Android 1.0
  */
 public class AffineTransformOp implements BufferedImageOp, RasterOp {
-    
-    /** 
-     * The Constant TYPE_NEAREST_NEIGHBOR indicates nearest-neighbor 
-     * interpolation type. 
+
+    /**
+     * The Constant TYPE_NEAREST_NEIGHBOR indicates nearest-neighbor
+     * interpolation type.
      */
     public static final int TYPE_NEAREST_NEIGHBOR = 1;
-    
-    /** 
-     * The Constant TYPE_BILINEAR indicates bilinear interpolation type. 
+
+    /**
+     * The Constant TYPE_BILINEAR indicates bilinear interpolation type.
      */
     public static final int TYPE_BILINEAR = 2;
-    
-    /** The Constant TYPE_BICUBIC indicates bicubic interpolation type. */
+
+    /**
+     * The Constant TYPE_BICUBIC indicates bi-cubic interpolation type.
+     */
     public static final int TYPE_BICUBIC = 3;
 
-    /** The i type. */
+    /**
+     * The i type.
+     */
     private int iType; // interpolation type
-    
-    /** The at. */
+
+    /**
+     * The at.
+     */
     private AffineTransform at;
-    
-    /** The hints. */
+
+    /**
+     * The hints.
+     */
     private RenderingHints hints;
 
     static {
         // TODO - uncomment
-        //System.loadLibrary("imageops");
+        // System.loadLibrary("imageops");
     }
 
     /**
-     * Instantiates a new AffineTransformOp with the specified
-     * AffineTransform and RenderingHints object which defines 
-     * the interpolation type.
+     * Instantiates a new AffineTransformOp with the specified AffineTransform
+     * and RenderingHints object which defines the interpolation type.
      * 
-     * @param xform the AffineTransform.
-     * @param hints the RenderingHints object which defines 
-     * the interpolation type.
+     * @param xform
+     *            the AffineTransform.
+     * @param hints
+     *            the RenderingHints object which defines the interpolation
+     *            type.
      */
     public AffineTransformOp(AffineTransform xform, RenderingHints hints) {
         this(xform, TYPE_NEAREST_NEIGHBOR);
@@ -95,20 +105,22 @@
                 // Determine from rendering quality
                 if (hint == RenderingHints.VALUE_RENDER_QUALITY) {
                     this.iType = TYPE_BILINEAR;
-                // For speed use nearest neighbor
+                    // For speed use nearest neighbor
                 }
             }
         }
     }
 
     /**
-     * Instantiates a new AffineTransformOp with the specified
-     * AffineTransform and a specified interpolation type from the 
-     * list of predefined interpolation types.
+     * Instantiates a new AffineTransformOp with the specified AffineTransform
+     * and a specified interpolation type from the list of predefined
+     * interpolation types.
      * 
-     * @param xform the AffineTransform.
-     * @param interp the one of predefined interpolation types:
-     * TYPE_NEAREST_NEIGHBOR, TYPE_BILINEAR, or TYPE_BICUBIC.
+     * @param xform
+     *            the AffineTransform.
+     * @param interp
+     *            the one of predefined interpolation types:
+     *            TYPE_NEAREST_NEIGHBOR, TYPE_BILINEAR, or TYPE_BICUBIC.
      */
     public AffineTransformOp(AffineTransform xform, int interp) {
         if (Math.abs(xform.getDeterminant()) <= Double.MIN_VALUE) {
@@ -116,7 +128,7 @@
             throw new ImagingOpException(Messages.getString("awt.24F", xform)); //$NON-NLS-1$
         }
 
-        this.at = (AffineTransform) xform.clone();
+        this.at = (AffineTransform)xform.clone();
 
         if (interp != TYPE_NEAREST_NEIGHBOR && interp != TYPE_BILINEAR && interp != TYPE_BICUBIC) {
             // awt.250=Unknown interpolation type: {0}
@@ -129,7 +141,7 @@
     /**
      * Gets the interpolation type.
      * 
-     * @return the interpolation type
+     * @return the interpolation type.
      */
     public final int getInterpolationType() {
         return iType;
@@ -165,7 +177,7 @@
      * @return the AffineTransform.
      */
     public final AffineTransform getTransform() {
-        return (AffineTransform) at.clone();
+        return (AffineTransform)at.clone();
     }
 
     public final Point2D getPoint2D(Point2D srcPt, Point2D dstPt) {
@@ -177,21 +189,19 @@
     }
 
     public final Rectangle2D getBounds2D(Raster src) {
-        // We position source raster to (0,0) even if it is translated child raster.
+        // We position source raster to (0,0) even if it is translated child
+        // raster.
         // This means that we need only width and height of the src
         int width = src.getWidth();
         int height = src.getHeight();
 
         float[] corners = {
-            0, 0,
-            width, 0,
-            width, height,
-            0, height
+                0, 0, width, 0, width, height, 0, height
         };
 
         at.transform(corners, 0, corners, 0, 4);
 
-        Rectangle2D.Float bounds = new Rectangle2D.Float(corners[0], corners[1], 0 , 0);
+        Rectangle2D.Float bounds = new Rectangle2D.Float(corners[0], corners[1], 0, 0);
         bounds.add(corners[2], corners[3]);
         bounds.add(corners[4], corners[5]);
         bounds.add(corners[6], corners[7]);
@@ -208,17 +218,14 @@
         double dstHeight = newBounds.getY() + newBounds.getHeight();
 
         if (dstWidth <= 0 || dstHeight <= 0) {
-            // awt.251=Transformed width ({0}) and height ({1}) should be greater than 0
-            throw new RasterFormatException(
-                    Messages.getString("awt.251", dstWidth, dstHeight)); //$NON-NLS-1$
+            // awt.251=Transformed width ({0}) and height ({1}) should be
+            // greater than 0
+            throw new RasterFormatException(Messages.getString("awt.251", dstWidth, dstHeight)); //$NON-NLS-1$
         }
 
         if (destCM != null) {
-            return new BufferedImage(destCM,
-                    destCM.createCompatibleWritableRaster((int)dstWidth, (int)dstHeight),
-                    destCM.isAlphaPremultiplied(),
-                    null
-            );
+            return new BufferedImage(destCM, destCM.createCompatibleWritableRaster((int)dstWidth,
+                    (int)dstHeight), destCM.isAlphaPremultiplied(), null);
         }
 
         ColorModel cm = src.getColorModel();
@@ -229,23 +236,18 @@
         }
 
         // OK, we can get source color model
-        return new BufferedImage(cm,
-                src.getRaster().createCompatibleWritableRaster((int)dstWidth, (int)dstHeight),
-                cm.isAlphaPremultiplied(),
-                null
-        );
+        return new BufferedImage(cm, src.getRaster().createCompatibleWritableRaster((int)dstWidth,
+                (int)dstHeight), cm.isAlphaPremultiplied(), null);
     }
 
-    public WritableRaster createCompatibleDestRaster (Raster src) {
+    public WritableRaster createCompatibleDestRaster(Raster src) {
         // Here approach is other then in createCompatibleDestImage -
         // destination should include only
         // transformed image, but not (0,0) in source coordinate system
 
         Rectangle2D newBounds = getBounds2D(src);
-        return src.createCompatibleWritableRaster(
-                (int) newBounds.getX(), (int) newBounds.getY(),
-                (int) newBounds.getWidth(), (int)newBounds.getHeight()
-        );
+        return src.createCompatibleWritableRaster((int)newBounds.getX(), (int)newBounds.getY(),
+                (int)newBounds.getWidth(), (int)newBounds.getHeight());
     }
 
     public final BufferedImage filter(BufferedImage src, BufferedImage dst) {
@@ -257,10 +259,8 @@
         ColorModel srcCM = src.getColorModel();
         BufferedImage finalDst = null;
 
-        if (
-                srcCM instanceof IndexColorModel &&
-                (iType != TYPE_NEAREST_NEIGHBOR || srcCM.getPixelSize() % 8 != 0)
-        ) {
+        if (srcCM instanceof IndexColorModel
+                && (iType != TYPE_NEAREST_NEIGHBOR || srcCM.getPixelSize() % 8 != 0)) {
             src = ((IndexColorModel)srcCM).convertToIntDiscrete(src.getRaster(), true);
             srcCM = src.getColorModel();
         }
@@ -269,15 +269,10 @@
             dst = createCompatibleDestImage(src, srcCM);
         } else {
             if (!srcCM.equals(dst.getColorModel())) {
-                // Treat BufferedImage.TYPE_INT_RGB and BufferedImage.TYPE_INT_ARGB as same
-                if (
-                   !(
-                     (src.getType() == BufferedImage.TYPE_INT_RGB ||
-                      src.getType() == BufferedImage.TYPE_INT_ARGB) &&
-                     (dst.getType() == BufferedImage.TYPE_INT_RGB ||
-                      dst.getType() == BufferedImage.TYPE_INT_ARGB)
-                    )
-                ) {
+                // Treat BufferedImage.TYPE_INT_RGB and
+                // BufferedImage.TYPE_INT_ARGB as same
+                if (!((src.getType() == BufferedImage.TYPE_INT_RGB || src.getType() == BufferedImage.TYPE_INT_ARGB) && (dst
+                        .getType() == BufferedImage.TYPE_INT_RGB || dst.getType() == BufferedImage.TYPE_INT_ARGB))) {
                     finalDst = dst;
                     dst = createCompatibleDestImage(src, srcCM);
                 }
@@ -287,10 +282,11 @@
         // Skip alpha channel for TYPE_INT_RGB images
         if (slowFilter(src.getRaster(), dst.getRaster()) != 0) {
             // awt.21F=Unable to transform source
-            throw new ImagingOpException (Messages.getString("awt.21F")); //$NON-NLS-1$
-        // TODO - uncomment
-        //if (ippFilter(src.getRaster(), dst.getRaster(), src.getType()) != 0)
-            //throw new ImagingOpException ("Unable to transform source");
+            throw new ImagingOpException(Messages.getString("awt.21F")); //$NON-NLS-1$
+            // TODO - uncomment
+            // if (ippFilter(src.getRaster(), dst.getRaster(), src.getType()) !=
+            // 0)
+            // throw new ImagingOpException ("Unable to transform source");
         }
 
         if (finalDst != null) {
@@ -320,9 +316,9 @@
         if (slowFilter(src, dst) != 0) {
             // awt.21F=Unable to transform source
             throw new ImagingOpException(Messages.getString("awt.21F")); //$NON-NLS-1$
-        // TODO - uncomment
-        //if (ippFilter(src, dst, BufferedImage.TYPE_CUSTOM) != 0)
-        //    throw new ImagingOpException("Unable to transform source");
+            // TODO - uncomment
+            // if (ippFilter(src, dst, BufferedImage.TYPE_CUSTOM) != 0)
+            // throw new ImagingOpException("Unable to transform source");
         }
 
         return dst;
@@ -332,11 +328,13 @@
     /**
      * Ipp filter.
      * 
-     * @param src the src
-     * @param dst the dst
-     * @param imageType the image type
-     * 
-     * @return the int
+     * @param src
+     *            the src.
+     * @param dst
+     *            the dst.
+     * @param imageType
+     *            the image type.
+     * @return the int.
      */
     @SuppressWarnings("unused")
     private int ippFilter(Raster src, WritableRaster dst, int imageType) {
@@ -349,8 +347,8 @@
             case BufferedImage.TYPE_INT_RGB:
             case BufferedImage.TYPE_INT_BGR: {
                 channels = 4;
-                srcStride = src.getWidth()*4;
-                dstStride = dst.getWidth()*4;
+                srcStride = src.getWidth() * 4;
+                dstStride = dst.getWidth() * 4;
                 skipChannel = true;
                 break;
             }
@@ -360,8 +358,8 @@
             case BufferedImage.TYPE_4BYTE_ABGR:
             case BufferedImage.TYPE_4BYTE_ABGR_PRE: {
                 channels = 4;
-                srcStride = src.getWidth()*4;
-                dstStride = dst.getWidth()*4;
+                srcStride = src.getWidth() * 4;
+                dstStride = dst.getWidth() * 4;
                 break;
             }
 
@@ -375,12 +373,13 @@
 
             case BufferedImage.TYPE_3BYTE_BGR: {
                 channels = 3;
-                srcStride = src.getWidth()*3;
-                dstStride = dst.getWidth()*3;
+                srcStride = src.getWidth() * 3;
+                dstStride = dst.getWidth() * 3;
                 break;
             }
 
-            case BufferedImage.TYPE_USHORT_GRAY: // TODO - could be done in native code?
+            case BufferedImage.TYPE_USHORT_GRAY: // TODO - could be done in
+                // native code?
             case BufferedImage.TYPE_USHORT_565_RGB:
             case BufferedImage.TYPE_USHORT_555_RGB:
             case BufferedImage.TYPE_BYTE_BINARY: {
@@ -391,34 +390,29 @@
                 SampleModel srcSM = src.getSampleModel();
                 SampleModel dstSM = dst.getSampleModel();
 
-                if (
-                        srcSM instanceof PixelInterleavedSampleModel &&
-                        dstSM instanceof PixelInterleavedSampleModel
-                ) {
+                if (srcSM instanceof PixelInterleavedSampleModel
+                        && dstSM instanceof PixelInterleavedSampleModel) {
                     // Check PixelInterleavedSampleModel
-                    if (
-                            srcSM.getDataType() != DataBuffer.TYPE_BYTE ||
-                            dstSM.getDataType() != DataBuffer.TYPE_BYTE
-                    ) {
+                    if (srcSM.getDataType() != DataBuffer.TYPE_BYTE
+                            || dstSM.getDataType() != DataBuffer.TYPE_BYTE) {
                         return slowFilter(src, dst);
                     }
 
-                    channels = srcSM.getNumBands(); // Have IPP functions for 1, 3 and 4 channels
+                    channels = srcSM.getNumBands(); // Have IPP functions for 1,
+                    // 3 and 4 channels
                     if (channels != 1 && channels != 3 && channels != 4) {
                         return slowFilter(src, dst);
                     }
 
                     int dataTypeSize = DataBuffer.getDataTypeSize(srcSM.getDataType()) / 8;
 
-                    srcStride = ((ComponentSampleModel) srcSM).getScanlineStride() * dataTypeSize;
-                    dstStride = ((ComponentSampleModel) dstSM).getScanlineStride() * dataTypeSize;
-                } else if (
-                        srcSM instanceof SinglePixelPackedSampleModel &&
-                        dstSM instanceof SinglePixelPackedSampleModel
-                ) {
+                    srcStride = ((ComponentSampleModel)srcSM).getScanlineStride() * dataTypeSize;
+                    dstStride = ((ComponentSampleModel)dstSM).getScanlineStride() * dataTypeSize;
+                } else if (srcSM instanceof SinglePixelPackedSampleModel
+                        && dstSM instanceof SinglePixelPackedSampleModel) {
                     // Check SinglePixelPackedSampleModel
-                    SinglePixelPackedSampleModel sppsm1 = (SinglePixelPackedSampleModel) srcSM;
-                    SinglePixelPackedSampleModel sppsm2 = (SinglePixelPackedSampleModel) dstSM;
+                    SinglePixelPackedSampleModel sppsm1 = (SinglePixelPackedSampleModel)srcSM;
+                    SinglePixelPackedSampleModel sppsm2 = (SinglePixelPackedSampleModel)dstSM;
 
                     // No IPP function for this type
                     if (sppsm1.getDataType() == DataBuffer.TYPE_USHORT) {
@@ -432,15 +426,13 @@
                     }
 
                     // Check compatibility of sample models
-                    if (
-                            sppsm1.getDataType() != sppsm2.getDataType() ||
-                            !Arrays.equals(sppsm1.getBitOffsets(), sppsm2.getBitOffsets()) ||
-                            !Arrays.equals(sppsm1.getBitMasks(), sppsm2.getBitMasks())
-                    ) {
+                    if (sppsm1.getDataType() != sppsm2.getDataType()
+                            || !Arrays.equals(sppsm1.getBitOffsets(), sppsm2.getBitOffsets())
+                            || !Arrays.equals(sppsm1.getBitMasks(), sppsm2.getBitMasks())) {
                         return slowFilter(src, dst);
                     }
 
-                    for (int i=0; i<channels; i++) {
+                    for (int i = 0; i < channels; i++) {
                         if (sppsm1.getSampleSize(i) != 8) {
                             return slowFilter(src, dst);
                         }
@@ -460,12 +452,9 @@
 
                 // Fill offsets if there's a child raster
                 if (src.getParent() != null || dst.getParent() != null) {
-                    if (
-                            src.getSampleModelTranslateX() != 0 ||
-                            src.getSampleModelTranslateY() != 0 ||
-                            dst.getSampleModelTranslateX() != 0 ||
-                            dst.getSampleModelTranslateY() != 0
-                    ) {
+                    if (src.getSampleModelTranslateX() != 0 || src.getSampleModelTranslateY() != 0
+                            || dst.getSampleModelTranslateX() != 0
+                            || dst.getSampleModelTranslateY() != 0) {
                         offsets = new int[4];
                         offsets[0] = -src.getSampleModelTranslateX() + src.getMinX();
                         offsets[1] = -src.getSampleModelTranslateY() + src.getMinY();
@@ -492,20 +481,19 @@
             return -1; // Unknown data buffer type
         }
 
-        return ippAffineTransform(
-            m00, m01, m02, m10, m11, m12,
-            srcData, src.getWidth(), src.getHeight(), srcStride,
-            dstData, dst.getWidth(), dst.getHeight(), dstStride,
-            iType, channels, skipChannel, offsets);
+        return ippAffineTransform(m00, m01, m02, m10, m11, m12, srcData, src.getWidth(), src
+                .getHeight(), srcStride, dstData, dst.getWidth(), dst.getHeight(), dstStride,
+                iType, channels, skipChannel, offsets);
     }
 
     /**
      * Slow filter.
      * 
-     * @param src the src
-     * @param dst the dst
-     * 
-     * @return the int
+     * @param src
+     *            the src.
+     * @param dst
+     *            the dst.
+     * @return the int.
      */
     private int slowFilter(Raster src, WritableRaster dst) {
         // TODO: make correct interpolation
@@ -518,7 +506,7 @@
 
         AffineTransform inv = null;
         try {
-             inv = at.createInverse();
+            inv = at.createInverse();
         } catch (NoninvertibleTransformException e) {
             return -1;
         }
@@ -552,7 +540,7 @@
                     int px = sx >> 8;
                     int py = sy >> 8;
                     if (px >= minSrcX && py >= minSrcY && px < maxSrcX && py < maxSrcY) {
-                        Object val = src.getDataElements(px , py , null);
+                        Object val = src.getDataElements(px, py, null);
                         dst.setDataElements(x, y, val);
                     }
                     sx += hx;
@@ -585,33 +573,46 @@
     /**
      * Ipp affine transform.
      * 
-     * @param m00 the m00
-     * @param m01 the m01
-     * @param m02 the m02
-     * @param m10 the m10
-     * @param m11 the m11
-     * @param m12 the m12
-     * @param src the src
-     * @param srcWidth the src width
-     * @param srcHeight the src height
-     * @param srcStride the src stride
-     * @param dst the dst
-     * @param dstWidth the dst width
-     * @param dstHeight the dst height
-     * @param dstStride the dst stride
-     * @param iType the i type
-     * @param channels the channels
-     * @param skipChannel the skip channel
-     * @param offsets the offsets
-     * 
-     * @return the int
+     * @param m00
+     *            the m00.
+     * @param m01
+     *            the m01.
+     * @param m02
+     *            the m02.
+     * @param m10
+     *            the m10.
+     * @param m11
+     *            the m11.
+     * @param m12
+     *            the m12.
+     * @param src
+     *            the src.
+     * @param srcWidth
+     *            the src width.
+     * @param srcHeight
+     *            the src height.
+     * @param srcStride
+     *            the src stride.
+     * @param dst
+     *            the dst.
+     * @param dstWidth
+     *            the dst width.
+     * @param dstHeight
+     *            the dst height.
+     * @param dstStride
+     *            the dst stride.
+     * @param iType
+     *            the i type.
+     * @param channels
+     *            the channels.
+     * @param skipChannel
+     *            the skip channel.
+     * @param offsets
+     *            the offsets.
+     * @return the int.
      */
-    private native int ippAffineTransform(
-            double m00, double m01,
-            double m02, double m10,
-            double m11, double m12,
-            Object src, int srcWidth, int srcHeight, int srcStride,
-            Object dst, int dstWidth, int dstHeight, int dstStride,
-            int iType, int channels, boolean skipChannel,
-            int offsets[]);
+    private native int ippAffineTransform(double m00, double m01, double m02, double m10,
+            double m11, double m12, Object src, int srcWidth, int srcHeight, int srcStride,
+            Object dst, int dstWidth, int dstHeight, int dstStride, int iType, int channels,
+            boolean skipChannel, int offsets[]);
 }
\ No newline at end of file
diff --git a/awt/java/awt/image/AreaAveragingScaleFilter.java b/awt/java/awt/image/AreaAveragingScaleFilter.java
index f4933db..7fb138e 100644
--- a/awt/java/awt/image/AreaAveragingScaleFilter.java
+++ b/awt/java/awt/image/AreaAveragingScaleFilter.java
@@ -18,72 +18,101 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.util.Arrays;
 
-
 /**
- * The AreaAveragingScaleFilter class scales the source image using
- * area averaging algorithm. This algorithm provides a source image
- * with a new image containing the resampled image. 
+ * The AreaAveragingScaleFilter class scales the source image using area
+ * averaging algorithm. This algorithm provides a source image with a new image
+ * containing the resampled image.
+ * 
+ * @since Android 1.0
  */
 public class AreaAveragingScaleFilter extends ReplicateScaleFilter {
 
-    /** The Constant rgbCM. */
+    /**
+     * The Constant rgbCM.
+     */
     private static final ColorModel rgbCM = ColorModel.getRGBdefault();
-    
-    /** The Constant averagingFlags. */
-    private static final int averagingFlags = (ImageConsumer.TOPDOWNLEFTRIGHT |
-            ImageConsumer.COMPLETESCANLINES);
 
-    /** The reset. */
-    private boolean reset = true;   // Flag for used superclass filter
-    
-    /** The inited. */
+    /**
+     * The Constant averagingFlags.
+     */
+    private static final int averagingFlags = (ImageConsumer.TOPDOWNLEFTRIGHT | ImageConsumer.COMPLETESCANLINES);
+
+    /**
+     * The reset.
+     */
+    private boolean reset = true; // Flag for used superclass filter
+
+    /**
+     * The inited.
+     */
     private boolean inited = false; // All data inited
 
-    /** The sum_r. */
+    /**
+     * The sum_r.
+     */
     private int sum_r[]; // Array for average Red samples
-    
-    /** The sum_g. */
+
+    /**
+     * The sum_g.
+     */
     private int sum_g[]; // Array for average Green samples
-    
-    /** The sum_b. */
+
+    /**
+     * The sum_b.
+     */
     private int sum_b[]; // Array for average Blue samples
-    
-    /** The sum_a. */
+
+    /**
+     * The sum_a.
+     */
     private int sum_a[]; // Array for average Alpha samples
 
-    /** The buff. */
-    private int buff[];  // Stride buffer
-    
-    /** The avg factor. */
-    private int avgFactor;  // Global averaging factor
-
-    /** The cached dy. */
-    private int cachedDY;      // Cached number of the destination scanline 
-    
-    /** The cached dv rest. */
-    private int cachedDVRest;  // Cached value of rest src scanlines for sum 
-                               // pixel samples 
-                               // Because data if transfering by whole scanlines
-                               // we are caching only Y coordinate values
-    
     /**
-     * Instantiates a new AreaAveragingScaleFilter object which scales
-     * a source image with the specified width and height.
+     * The buff.
+     */
+    private int buff[]; // Stride buffer
+
+    /**
+     * The avg factor.
+     */
+    private int avgFactor; // Global averaging factor
+
+    /**
+     * The cached dy.
+     */
+    private int cachedDY; // Cached number of the destination scanline
+
+    /**
+     * The cached dv rest.
+     */
+    private int cachedDVRest; // Cached value of rest src scanlines for sum
+
+    // pixel samples
+    // Because data if transferring by whole scanlines
+    // we are caching only Y coordinate values
+
+    /**
+     * Instantiates a new AreaAveragingScaleFilter object which scales a source
+     * image with the specified width and height.
      * 
-     * @param width the scaled width of the image.
-     * @param height the scaled height of the image.
+     * @param width
+     *            the scaled width of the image.
+     * @param height
+     *            the scaled height of the image.
      */
     public AreaAveragingScaleFilter(int width, int height) {
         super(width, height);
     }
 
     @Override
-    public void setPixels(int x, int y, int w, int h, ColorModel model, int[] pixels, int off, int scansize) {
-        if(reset) {
+    public void setPixels(int x, int y, int w, int h, ColorModel model, int[] pixels, int off,
+            int scansize) {
+        if (reset) {
             super.setPixels(x, y, w, h, model, pixels, off, scansize);
         } else {
             setFilteredPixels(x, y, w, h, model, pixels, off, scansize);
@@ -91,8 +120,9 @@
     }
 
     @Override
-    public void setPixels(int x, int y, int w, int h, ColorModel model, byte[] pixels, int off, int scansize) {
-        if(reset) {
+    public void setPixels(int x, int y, int w, int h, ColorModel model, byte[] pixels, int off,
+            int scansize) {
+        if (reset) {
             super.setPixels(x, y, w, h, model, pixels, off, scansize);
         } else {
             setFilteredPixels(x, y, w, h, model, pixels, off, scansize);
@@ -106,37 +136,44 @@
     }
 
     /**
-     * This method implements the Area Averaging Scale filter.
-     * The description of algorithm is presented in Java API Specification.
+     * This method implements the Area Averaging Scale filter. The description
+     * of algorithm is presented in Java API Specification. Arrays sum_r, sum_g,
+     * sum_b, sum_a have length equals width of destination image. In each
+     * array's element is accumulating pixel's component values, proportional to
+     * the area which source pixels will occupy in destination image. Then that
+     * values will divide by Global averaging factor (area of the destination
+     * image) for receiving average values of destination pixels.
      * 
-     * Arrays sum_r, sum_g, sum_b, sum_a have length equals width of destination
-     * image. In each array's element is accumulating pixel's component values,
-     * proportional to the area which source pixels will occupy in destination
-     * image. Then that values will divide by Global averaging
-     * factor (area of the destination image) for receiving
-     * average values of destination pixels.
-     * 
-     * @param x - Src pixels X coordinate
-     * @param y - Src pixels Y coordinate
-     * @param w - width of the area of Src pixels
-     * @param h - height of the area of Src pixels
-     * @param model - Color Model of Src pixels
-     * @param pixels - array of Src pixels
-     * @param off - offset into the Src pixels array
-     * @param scansize - length of scanline in the pixels array
+     * @param x
+     *            the source pixels X coordinate.
+     * @param y
+     *            the source pixels Y coordinate.
+     * @param w
+     *            the width of the area of the source pixels.
+     * @param h
+     *            the height of the area of the source pixels.
+     * @param model
+     *            the color model of the source pixels.
+     * @param pixels
+     *            the array of source pixels.
+     * @param off
+     *            the offset into the source pixels array.
+     * @param scansize
+     *            the length of scanline in the pixels array.
      */
-    private void setFilteredPixels(int x, int y, int w, int h, ColorModel model, Object pixels, int off, int scansize){
-        if(!inited){
+    private void setFilteredPixels(int x, int y, int w, int h, ColorModel model, Object pixels,
+            int off, int scansize) {
+        if (!inited) {
             initialize();
         }
 
         int srcX, srcY, dx, dy;
         int svRest, dvRest, shRest, dhRest, vDif, hDif;
 
-        if(y == 0){
+        if (y == 0) {
             dy = 0;
             dvRest = srcHeight;
-        }else{
+        } else {
             dy = cachedDY;
             dvRest = cachedDVRest;
         }
@@ -166,9 +203,9 @@
 
                 int rgb, pix;
                 if (pixels instanceof int[]) {
-                    pix = ((int[]) pixels)[srcOff + srcX];
+                    pix = ((int[])pixels)[srcOff + srcX];
                 } else {
-                    pix = ((byte[]) pixels)[srcOff + srcX] & 0xff;
+                    pix = ((byte[])pixels)[srcOff + srcX] & 0xff;
                 }
 
                 rgb = model.getRGB(pix);
@@ -208,7 +245,7 @@
 
             if (dvRest == 0) {
                 // averaging destination pixel's values
-                for(int i = 0; i < destWidth; i++){
+                for (int i = 0; i < destWidth; i++) {
                     int a = (sum_a[i] / avgFactor) & 0xff;
                     int r = (sum_r[i] / avgFactor) & 0xff;
                     int g = (sum_g[i] / avgFactor) & 0xff;
@@ -216,8 +253,7 @@
                     int frgb = (a << 24) | (r << 16) | (g << 8) | b;
                     buff[i] = frgb;
                 }
-                consumer.setPixels(0, dy, destWidth, 1, rgbCM, buff, 0,
-                        destWidth);
+                consumer.setPixels(0, dy, destWidth, 1, rgbCM, buff, 0, destWidth);
                 dy++;
                 dvRest = srcHeight;
                 Arrays.fill(sum_a, 0);
@@ -236,18 +272,17 @@
     /**
      * Initialization of the auxiliary data.
      */
-    private void initialize(){
+    private void initialize() {
 
-        sum_a = new int[destWidth]; 
-        sum_r = new int[destWidth]; 
-        sum_g = new int[destWidth]; 
-        sum_b = new int[destWidth]; 
+        sum_a = new int[destWidth];
+        sum_r = new int[destWidth];
+        sum_g = new int[destWidth];
+        sum_b = new int[destWidth];
 
-        buff = new int[destWidth];  
+        buff = new int[destWidth];
         outpixbuf = buff;
-        avgFactor = srcWidth * srcHeight; 
+        avgFactor = srcWidth * srcHeight;
 
         inited = true;
     }
 }
-
diff --git a/awt/java/awt/image/AwtImageBackdoorAccessorImpl.java b/awt/java/awt/image/AwtImageBackdoorAccessorImpl.java
index ce85ddd..6dffee8 100644
--- a/awt/java/awt/image/AwtImageBackdoorAccessorImpl.java
+++ b/awt/java/awt/image/AwtImageBackdoorAccessorImpl.java
@@ -20,6 +20,7 @@
  * Created on 23.11.2005
  *
  */
+
 package java.awt.image;
 
 import java.awt.Image;
@@ -40,41 +41,43 @@
 /**
  * This class not part of public API. It useful for receiving package private
  * data from other packages.
+ * 
+ * @since Android 1.0
  */
 class AwtImageBackdoorAccessorImpl extends AwtImageBackdoorAccessor {
 
-    static void init(){
+    static void init() {
         inst = new AwtImageBackdoorAccessorImpl();
     }
 
     @Override
     public Surface getImageSurface(Image image) {
-        if (image instanceof BufferedImage){
+        if (image instanceof BufferedImage) {
             return ((BufferedImage)image).getImageSurface();
-        } else if (image instanceof GLVolatileImage){
+        } else if (image instanceof GLVolatileImage) {
             return ((GLVolatileImage)image).getImageSurface();
         }
         return null;
     }
 
     @Override
-    public boolean isGrayPallete(IndexColorModel icm){
+    public boolean isGrayPallete(IndexColorModel icm) {
         return icm.isGrayPallete();
     }
 
     @Override
     public Object getData(DataBuffer db) {
-        if (db instanceof DataBufferByte){
+        if (db instanceof DataBufferByte) {
             return ((DataBufferByte)db).getData();
-        } else if (db instanceof DataBufferUShort){
+        } else if (db instanceof DataBufferUShort) {
             return ((DataBufferUShort)db).getData();
-        } else if (db instanceof DataBufferShort){
+        } else if (db instanceof DataBufferShort) {
             return ((DataBufferShort)db).getData();
-        } else if (db instanceof DataBufferInt){
+        } else if (db instanceof DataBufferInt) {
             return ((DataBufferInt)db).getData();
-        } else if (db instanceof DataBufferFloat){
+        } else if (db instanceof DataBufferFloat) {
             return ((DataBufferFloat)db).getData();
-        } else if (db instanceof DataBufferDouble){
+        } else if (db instanceof DataBufferDouble) {
             return ((DataBufferDouble)db).getData();
         } else {
             // awt.235=Wrong Data Buffer type : {0}
@@ -85,7 +88,7 @@
 
     @Override
     public int[] getDataInt(DataBuffer db) {
-        if (db instanceof DataBufferInt){
+        if (db instanceof DataBufferInt) {
             return ((DataBufferInt)db).getData();
         }
         return null;
@@ -93,7 +96,7 @@
 
     @Override
     public byte[] getDataByte(DataBuffer db) {
-        if (db instanceof DataBufferByte){
+        if (db instanceof DataBufferByte) {
             return ((DataBufferByte)db).getData();
         }
         return null;
@@ -101,7 +104,7 @@
 
     @Override
     public short[] getDataShort(DataBuffer db) {
-        if (db instanceof DataBufferShort){
+        if (db instanceof DataBufferShort) {
             return ((DataBufferShort)db).getData();
         }
         return null;
@@ -109,7 +112,7 @@
 
     @Override
     public short[] getDataUShort(DataBuffer db) {
-        if (db instanceof DataBufferUShort){
+        if (db instanceof DataBufferUShort) {
             return ((DataBufferUShort)db).getData();
         }
         return null;
@@ -117,7 +120,7 @@
 
     @Override
     public double[] getDataDouble(DataBuffer db) {
-        if (db instanceof DataBufferDouble){
+        if (db instanceof DataBufferDouble) {
             return ((DataBufferDouble)db).getData();
         }
         return null;
@@ -125,7 +128,7 @@
 
     @Override
     public float[] getDataFloat(DataBuffer db) {
-        if (db instanceof DataBufferFloat){
+        if (db instanceof DataBufferFloat) {
             return ((DataBufferFloat)db).getData();
         }
         return null;
diff --git a/awt/java/awt/image/BandCombineOp.java b/awt/java/awt/image/BandCombineOp.java
index cd77a21..da2cc89 100644
--- a/awt/java/awt/image/BandCombineOp.java
+++ b/awt/java/awt/image/BandCombineOp.java
@@ -32,82 +32,124 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The BandCombineOp class translates coordinates from 
- * coordinates in the source Raster to coordinates in 
- * the destination Raster by an arbitrary linear combination 
- * of the bands in a source Raster, using a specified matrix.
- * The number of bands in the matrix should equal to 
- * the number of bands in the source Raster plus 1.
+ * The BandCombineOp class translates coordinates from coordinates in the source
+ * Raster to coordinates in the destination Raster by an arbitrary linear
+ * combination of the bands in a source Raster, using a specified matrix. The
+ * number of bands in the matrix should equal to the number of bands in the
+ * source Raster plus 1.
+ * 
+ * @since Android 1.0
  */
 public class BandCombineOp implements RasterOp {
-    
-    /** The Constant offsets3c. */
-    static final int offsets3c[] = {16, 8, 0};
-    
-    /** The Constant offsets4ac. */
-    static final int offsets4ac[] = {16, 8, 0, 24};
-    
-    /** The Constant masks3c. */
-    static final int masks3c[] = {0xFF0000, 0xFF00, 0xFF};
-    
-    /** The Constant masks4ac. */
-    static final int masks4ac[] = {0xFF0000, 0xFF00, 0xFF, 0xFF000000};
-    
-    /** The Constant piOffsets. */
-    private static final int piOffsets[] = {0, 1, 2};
-    
-    /** The Constant piInvOffsets. */
-    private static final int piInvOffsets[] = {2, 1, 0};
 
-    /** The Constant TYPE_BYTE3C. */
+    /**
+     * The Constant offsets3c.
+     */
+    static final int offsets3c[] = {
+            16, 8, 0
+    };
+
+    /**
+     * The Constant offsets4ac.
+     */
+    static final int offsets4ac[] = {
+            16, 8, 0, 24
+    };
+
+    /**
+     * The Constant masks3c.
+     */
+    static final int masks3c[] = {
+            0xFF0000, 0xFF00, 0xFF
+    };
+
+    /**
+     * The Constant masks4ac.
+     */
+    static final int masks4ac[] = {
+            0xFF0000, 0xFF00, 0xFF, 0xFF000000
+    };
+
+    /**
+     * The Constant piOffsets.
+     */
+    private static final int piOffsets[] = {
+            0, 1, 2
+    };
+
+    /**
+     * The Constant piInvOffsets.
+     */
+    private static final int piInvOffsets[] = {
+            2, 1, 0
+    };
+
+    /**
+     * The Constant TYPE_BYTE3C.
+     */
     private static final int TYPE_BYTE3C = 0;
-    
-    /** The Constant TYPE_BYTE4AC. */
+
+    /**
+     * The Constant TYPE_BYTE4AC.
+     */
     private static final int TYPE_BYTE4AC = 1;
-    
-    /** The Constant TYPE_USHORT3C. */
+
+    /**
+     * The Constant TYPE_USHORT3C.
+     */
     private static final int TYPE_USHORT3C = 2;
-    
-    /** The Constant TYPE_SHORT3C. */
+
+    /**
+     * The Constant TYPE_SHORT3C.
+     */
     private static final int TYPE_SHORT3C = 3;
 
-    /** The mx width. */
+    /**
+     * The mx width.
+     */
     private int mxWidth;
-    
-    /** The mx height. */
+
+    /**
+     * The mx height.
+     */
     private int mxHeight;
-    
-    /** The matrix. */
+
+    /**
+     * The matrix.
+     */
     private float matrix[][];
-    
-    /** The r hints. */
+
+    /**
+     * The r hints.
+     */
     private RenderingHints rHints;
 
     static {
         // XXX - todo
-        //System.loadLibrary("imageops");
+        // System.loadLibrary("imageops");
     }
 
     /**
-     * Instantiates a new BandCombineOp object with the specified
-     * matrix.
+     * Instantiates a new BandCombineOp object with the specified matrix.
      * 
-     * @param matrix the specified matrix for band combining.
-     * @param hints the RenderingHints.
+     * @param matrix
+     *            the specified matrix for band combining.
+     * @param hints
+     *            the RenderingHints.
      */
     public BandCombineOp(float matrix[][], RenderingHints hints) {
         this.mxHeight = matrix.length;
         this.mxWidth = matrix[0].length;
         this.matrix = new float[mxHeight][mxWidth];
 
-        for (int i=0; i<mxHeight; i++){
+        for (int i = 0; i < mxHeight; i++) {
             System.arraycopy(matrix[i], 0, this.matrix[i], 0, mxWidth);
         }
 
         this.rHints = hints;
     }
 
-    public final RenderingHints getRenderingHints(){
+    public final RenderingHints getRenderingHints() {
         return this.rHints;
     }
 
@@ -119,14 +161,14 @@
     public final float[][] getMatrix() {
         float res[][] = new float[mxHeight][mxWidth];
 
-        for (int i=0; i<mxHeight; i++) {
+        for (int i = 0; i < mxHeight; i++) {
             System.arraycopy(matrix[i], 0, res[i], 0, mxWidth);
         }
 
         return res;
     }
 
-    public final Point2D getPoint2D (Point2D srcPoint, Point2D dstPoint) {
+    public final Point2D getPoint2D(Point2D srcPoint, Point2D dstPoint) {
         if (dstPoint == null) {
             dstPoint = new Point2D.Float();
         }
@@ -135,17 +177,19 @@
         return dstPoint;
     }
 
-    public final Rectangle2D getBounds2D(Raster src){
+    public final Rectangle2D getBounds2D(Raster src) {
         return src.getBounds();
     }
 
-    public WritableRaster createCompatibleDestRaster (Raster src) {
+    public WritableRaster createCompatibleDestRaster(Raster src) {
         int numBands = src.getNumBands();
-        if (mxWidth != numBands && mxWidth != (numBands+1) || numBands != mxHeight) {
+        if (mxWidth != numBands && mxWidth != (numBands + 1) || numBands != mxHeight) {
             // awt.254=Number of bands in the source raster ({0}) is
-            //          incompatible with the matrix [{1}x{2}]
+            // incompatible with the matrix [{1}x{2}]
             throw new IllegalArgumentException(Messages.getString("awt.254", //$NON-NLS-1$
-                    new Object[]{numBands, mxWidth, mxHeight}));
+                    new Object[] {
+                            numBands, mxWidth, mxHeight
+                    }));
         }
 
         return src.createCompatibleWritableRaster(src.getWidth(), src.getHeight());
@@ -154,27 +198,31 @@
     public WritableRaster filter(Raster src, WritableRaster dst) {
         int numBands = src.getNumBands();
 
-        if (mxWidth != numBands && mxWidth != (numBands+1)) {
+        if (mxWidth != numBands && mxWidth != (numBands + 1)) {
             // awt.254=Number of bands in the source raster ({0}) is
-            //          incompatible with the matrix [{1}x{2}]
-            throw new IllegalArgumentException(
-                    Messages.getString("awt.254", //$NON-NLS-1$
-                    new Object[]{numBands, mxWidth, mxHeight}));
+            // incompatible with the matrix [{1}x{2}]
+            throw new IllegalArgumentException(Messages.getString("awt.254", //$NON-NLS-1$
+                    new Object[] {
+                            numBands, mxWidth, mxHeight
+                    }));
         }
 
         if (dst == null) {
             dst = createCompatibleDestRaster(src);
         } else if (dst.getNumBands() != mxHeight) {
-            // awt.255=Number of bands in the destination raster ({0}) is incompatible with the matrix [{1}x{2}]
+            // awt.255=Number of bands in the destination raster ({0}) is
+            // incompatible with the matrix [{1}x{2}]
             throw new IllegalArgumentException(Messages.getString("awt.255", //$NON-NLS-1$
-                    new Object[]{dst.getNumBands(), mxWidth, mxHeight}));
+                    new Object[] {
+                            dst.getNumBands(), mxWidth, mxHeight
+                    }));
         }
 
         // XXX - todo
-        //if (ippFilter(src, dst) != 0)
+        // if (ippFilter(src, dst) != 0)
         if (verySlowFilter(src, dst) != 0) {
             // awt.21F=Unable to transform source
-            throw new ImagingOpException (Messages.getString("awt.21F")); //$NON-NLS-1$
+            throw new ImagingOpException(Messages.getString("awt.21F")); //$NON-NLS-1$
         }
 
         return dst;
@@ -184,23 +232,29 @@
      * The Class SampleModelInfo.
      */
     private static final class SampleModelInfo {
-        
-        /** The channels. */
+
+        /**
+         * The channels.
+         */
         int channels;
-        
-        /** The channels order. */
+
+        /**
+         * The channels order.
+         */
         int channelsOrder[];
-        
-        /** The stride. */
+
+        /**
+         * The stride.
+         */
         int stride;
     }
 
     /**
      * Check sample model.
      * 
-     * @param sm the sm
-     * 
-     * @return the sample model info
+     * @param sm
+     *            the sm.
+     * @return the sample model info.
      */
     private final SampleModelInfo checkSampleModel(SampleModel sm) {
         SampleModelInfo ret = new SampleModelInfo();
@@ -212,12 +266,12 @@
             }
 
             ret.channels = sm.getNumBands();
-            ret.stride = ((ComponentSampleModel) sm).getScanlineStride();
-            ret.channelsOrder = ((ComponentSampleModel) sm).getBandOffsets();
+            ret.stride = ((ComponentSampleModel)sm).getScanlineStride();
+            ret.channelsOrder = ((ComponentSampleModel)sm).getBandOffsets();
 
         } else if (sm instanceof SinglePixelPackedSampleModel) {
             // Check SinglePixelPackedSampleModel
-            SinglePixelPackedSampleModel sppsm1 = (SinglePixelPackedSampleModel) sm;
+            SinglePixelPackedSampleModel sppsm1 = (SinglePixelPackedSampleModel)sm;
 
             ret.channels = sppsm1.getNumBands();
             if (sppsm1.getDataType() != DataBuffer.TYPE_INT) {
@@ -225,7 +279,7 @@
             }
 
             // Check sample models
-            for (int i=0; i<ret.channels; i++) {
+            for (int i = 0; i < ret.channels; i++) {
                 if (sppsm1.getSampleSize(i) != 8) {
                     return null;
                 }
@@ -233,7 +287,7 @@
 
             ret.channelsOrder = new int[ret.channels];
             int bitOffsets[] = sppsm1.getBitOffsets();
-            for (int i=0; i<ret.channels; i++) {
+            for (int i = 0; i < ret.channels; i++) {
                 if (bitOffsets[i] % 8 != 0) {
                     return null;
                 }
@@ -253,10 +307,11 @@
     /**
      * Slow filter.
      * 
-     * @param src the src
-     * @param dst the dst
-     * 
-     * @return the int
+     * @param src
+     *            the src.
+     * @param dst
+     *            the dst.
+     * @return the int.
      */
     private final int slowFilter(Raster src, WritableRaster dst) {
         int res = 0;
@@ -272,8 +327,8 @@
 
         // Fill offsets if there's a child raster
         if (src.getParent() != null || dst.getParent() != null) {
-            if (src.getSampleModelTranslateX() != 0 || src.getSampleModelTranslateY() != 0 ||
-                    dst.getSampleModelTranslateX() != 0 || dst.getSampleModelTranslateY() != 0) {
+            if (src.getSampleModelTranslateX() != 0 || src.getSampleModelTranslateY() != 0
+                    || dst.getSampleModelTranslateX() != 0 || dst.getSampleModelTranslateY() != 0) {
                 offsets = new int[4];
                 offsets[0] = -src.getSampleModelTranslateX() + src.getMinX();
                 offsets[1] = -src.getSampleModelTranslateY() + src.getMinY();
@@ -282,23 +337,22 @@
             }
         }
 
-        int rmxWidth = (srcInfo.channels+1); // width of the reordered matrix
-        float reorderedMatrix[] = new float[rmxWidth*dstInfo.channels];
-        for (int j=0; j<dstInfo.channels; j++) {
+        int rmxWidth = (srcInfo.channels + 1); // width of the reordered matrix
+        float reorderedMatrix[] = new float[rmxWidth * dstInfo.channels];
+        for (int j = 0; j < dstInfo.channels; j++) {
             if (j >= dstInfo.channelsOrder.length) {
                 continue;
             }
 
-            for (int i=0; i<srcInfo.channels; i++) {
+            for (int i = 0; i < srcInfo.channels; i++) {
                 if (i >= srcInfo.channelsOrder.length) {
                     break;
                 }
 
-                reorderedMatrix[dstInfo.channelsOrder[j]*rmxWidth + srcInfo.channelsOrder[i]] =
-                        matrix[j][i];
+                reorderedMatrix[dstInfo.channelsOrder[j] * rmxWidth + srcInfo.channelsOrder[i]] = matrix[j][i];
             }
             if (mxWidth == rmxWidth) {
-                reorderedMatrix[(dstInfo.channelsOrder[j]+1)*rmxWidth - 1] = matrix[j][mxWidth-1];
+                reorderedMatrix[(dstInfo.channelsOrder[j] + 1) * rmxWidth - 1] = matrix[j][mxWidth - 1];
             }
         }
 
@@ -311,11 +365,9 @@
             return -1; // Unknown data buffer type
         }
 
-        simpleCombineBands(
-                srcData, src.getWidth(), src.getHeight(), srcInfo.stride, srcInfo.channels,
-                dstData, dstInfo.stride, dstInfo.channels,
-                reorderedMatrix, offsets
-        );
+        simpleCombineBands(srcData, src.getWidth(), src.getHeight(), srcInfo.stride,
+                srcInfo.channels, dstData, dstInfo.stride, dstInfo.channels, reorderedMatrix,
+                offsets);
 
         return res;
     }
@@ -323,10 +375,11 @@
     /**
      * Very slow filter.
      * 
-     * @param src the src
-     * @param dst the dst
-     * 
-     * @return the int
+     * @param src
+     *            the src.
+     * @param dst
+     *            the dst.
+     * @return the int.
      */
     private int verySlowFilter(Raster src, WritableRaster dst) {
         int numBands = src.getNumBands();
@@ -337,33 +390,35 @@
         int dstMinX = dst.getMinX();
         int dstY = dst.getMinY();
 
-        int dX = src.getWidth();//< dst.getWidth() ? src.getWidth() : dst.getWidth();
-        int dY = src.getHeight();//< dst.getHeight() ? src.getHeight() : dst.getHeight();
+        int dX = src.getWidth();// < dst.getWidth() ? src.getWidth() :
+        // dst.getWidth();
+        int dY = src.getHeight();// < dst.getHeight() ? src.getHeight() :
+        // dst.getHeight();
 
         float sample;
-        int srcPixels[] = new int[numBands*dX*dY];
-        int dstPixels[] = new int[mxHeight*dX*dY];
+        int srcPixels[] = new int[numBands * dX * dY];
+        int dstPixels[] = new int[mxHeight * dX * dY];
 
         srcPixels = src.getPixels(srcMinX, srcY, dX, dY, srcPixels);
 
         if (numBands == mxWidth) {
-            for (int i=0, j=0; i<srcPixels.length; i+=numBands) {
+            for (int i = 0, j = 0; i < srcPixels.length; i += numBands) {
                 for (int dstB = 0; dstB < mxHeight; dstB++) {
                     sample = 0f;
                     for (int srcB = 0; srcB < numBands; srcB++) {
-                        sample += matrix[dstB][srcB] * srcPixels[i+srcB];
+                        sample += matrix[dstB][srcB] * srcPixels[i + srcB];
                     }
-                    dstPixels[j++] = (int) sample;
+                    dstPixels[j++] = (int)sample;
                 }
             }
         } else {
-            for (int i=0, j=0; i<srcPixels.length; i+=numBands) {
+            for (int i = 0, j = 0; i < srcPixels.length; i += numBands) {
                 for (int dstB = 0; dstB < mxHeight; dstB++) {
                     sample = 0f;
                     for (int srcB = 0; srcB < numBands; srcB++) {
-                        sample += matrix[dstB][srcB] * srcPixels[i+srcB];
+                        sample += matrix[dstB][srcB] * srcPixels[i + srcB];
                     }
-                    dstPixels[j++] = (int) (sample + matrix[dstB][numBands]);
+                    dstPixels[j++] = (int)(sample + matrix[dstB][numBands]);
                 }
             }
         }
@@ -373,14 +428,15 @@
         return 0;
     }
 
-    //TODO remove when method is used
+    // TODO remove when method is used
     /**
      * Ipp filter.
      * 
-     * @param src the src
-     * @param dst the dst
-     * 
-     * @return the int
+     * @param src
+     *            the src.
+     * @param dst
+     *            the dst.
+     * @return the int.
      */
     @SuppressWarnings("unused")
     private int ippFilter(Raster src, WritableRaster dst) {
@@ -393,56 +449,39 @@
         int srcBands = src.getNumBands();
         int dstBands = dst.getNumBands();
 
-        if (
-                dstBands != 3 ||
-                (srcBands != 3 &&
-                !(srcBands == 4 &&
-                  matrix[0][3] == 0 &&
-                  matrix[1][3] == 0 &&
-                  matrix[2][3] == 0)
-                )
-        ) {
+        if (dstBands != 3
+                || (srcBands != 3 && !(srcBands == 4 && matrix[0][3] == 0 && matrix[1][3] == 0 && matrix[2][3] == 0))) {
             return slowFilter(src, dst);
         }
 
         SampleModel srcSM = src.getSampleModel();
         SampleModel dstSM = dst.getSampleModel();
 
-        if (
-                srcSM instanceof SinglePixelPackedSampleModel &&
-                dstSM instanceof SinglePixelPackedSampleModel
-        ) {
+        if (srcSM instanceof SinglePixelPackedSampleModel
+                && dstSM instanceof SinglePixelPackedSampleModel) {
             // Check SinglePixelPackedSampleModel
-            SinglePixelPackedSampleModel sppsm1 = (SinglePixelPackedSampleModel) srcSM;
-            SinglePixelPackedSampleModel sppsm2 = (SinglePixelPackedSampleModel) dstSM;
+            SinglePixelPackedSampleModel sppsm1 = (SinglePixelPackedSampleModel)srcSM;
+            SinglePixelPackedSampleModel sppsm2 = (SinglePixelPackedSampleModel)dstSM;
 
-            if (
-                    sppsm1.getDataType() != DataBuffer.TYPE_INT ||
-                    sppsm2.getDataType() != DataBuffer.TYPE_INT
-            ) {
+            if (sppsm1.getDataType() != DataBuffer.TYPE_INT
+                    || sppsm2.getDataType() != DataBuffer.TYPE_INT) {
                 return slowFilter(src, dst);
             }
 
             // Check sample models
-            if (
-                    !Arrays.equals(sppsm2.getBitOffsets(), offsets3c) ||
-                    !Arrays.equals(sppsm2.getBitMasks(), masks3c)
-            ) {
+            if (!Arrays.equals(sppsm2.getBitOffsets(), offsets3c)
+                    || !Arrays.equals(sppsm2.getBitMasks(), masks3c)) {
                 return slowFilter(src, dst);
             }
 
             if (srcBands == 3) {
-                if (
-                        !Arrays.equals(sppsm1.getBitOffsets(), offsets3c) ||
-                        !Arrays.equals(sppsm1.getBitMasks(), masks3c)
-                ) {
+                if (!Arrays.equals(sppsm1.getBitOffsets(), offsets3c)
+                        || !Arrays.equals(sppsm1.getBitMasks(), masks3c)) {
                     return slowFilter(src, dst);
                 }
             } else if (srcBands == 4) {
-                if (
-                        !Arrays.equals(sppsm1.getBitOffsets(), offsets4ac) ||
-                        !Arrays.equals(sppsm1.getBitMasks(), masks4ac)
-                ) {
+                if (!Arrays.equals(sppsm1.getBitOffsets(), offsets4ac)
+                        || !Arrays.equals(sppsm1.getBitMasks(), masks4ac)) {
                     return slowFilter(src, dst);
                 }
             }
@@ -452,10 +491,8 @@
 
             srcStride = sppsm1.getScanlineStride() * 4;
             dstStride = sppsm2.getScanlineStride() * 4;
-        } else if (
-            srcSM instanceof PixelInterleavedSampleModel &&
-            dstSM instanceof PixelInterleavedSampleModel
-        ) {
+        } else if (srcSM instanceof PixelInterleavedSampleModel
+                && dstSM instanceof PixelInterleavedSampleModel) {
             if (srcBands != 3) {
                 return slowFilter(src, dst);
             }
@@ -477,15 +514,12 @@
             }
 
             // Check PixelInterleavedSampleModel
-            PixelInterleavedSampleModel pism1 = (PixelInterleavedSampleModel) srcSM;
-            PixelInterleavedSampleModel pism2 = (PixelInterleavedSampleModel) dstSM;
+            PixelInterleavedSampleModel pism1 = (PixelInterleavedSampleModel)srcSM;
+            PixelInterleavedSampleModel pism2 = (PixelInterleavedSampleModel)dstSM;
 
-            if (
-                    srcDataType != pism2.getDataType() ||
-                    pism1.getPixelStride() != 3 ||
-                    pism2.getPixelStride() != 3 ||
-                    !Arrays.equals(pism1.getBandOffsets(), pism2.getBandOffsets())
-            ) {
+            if (srcDataType != pism2.getDataType() || pism1.getPixelStride() != 3
+                    || pism2.getPixelStride() != 3
+                    || !Arrays.equals(pism1.getBandOffsets(), pism2.getBandOffsets())) {
                 return slowFilter(src, dst);
             }
 
@@ -507,8 +541,8 @@
 
         // Fill offsets if there's a child raster
         if (src.getParent() != null || dst.getParent() != null) {
-            if (src.getSampleModelTranslateX() != 0 || src.getSampleModelTranslateY() != 0 ||
-               dst.getSampleModelTranslateX() != 0 || dst.getSampleModelTranslateY() != 0) {
+            if (src.getSampleModelTranslateX() != 0 || src.getSampleModelTranslateY() != 0
+                    || dst.getSampleModelTranslateX() != 0 || dst.getSampleModelTranslateY() != 0) {
                 offsets = new int[4];
                 offsets[0] = -src.getSampleModelTranslateX() + src.getMinX();
                 offsets[1] = -src.getSampleModelTranslateY() + src.getMinY();
@@ -532,79 +566,93 @@
             // IPP treats big endian integers like BGR, so we have to
             // swap columns 1 and 3 and rows 1 and 3
             for (int i = 0; i < mxHeight; i++) {
-                ippMatrix[i*4] = matrix[2-i][2];
-                ippMatrix[i*4+1] = matrix[2-i][1];
-                ippMatrix[i*4+2] = matrix[2-i][0];
+                ippMatrix[i * 4] = matrix[2 - i][2];
+                ippMatrix[i * 4 + 1] = matrix[2 - i][1];
+                ippMatrix[i * 4 + 2] = matrix[2 - i][0];
 
                 if (mxWidth == 4) {
-                    ippMatrix[i*4+3] = matrix[2-i][3];
+                    ippMatrix[i * 4 + 3] = matrix[2 - i][3];
                 } else if (mxWidth == 5) {
-                    ippMatrix[i*4+3] = matrix[2-i][4];
+                    ippMatrix[i * 4 + 3] = matrix[2 - i][4];
                 }
             }
         } else {
             for (int i = 0; i < mxHeight; i++) {
-                ippMatrix[i*4] = matrix[i][0];
-                ippMatrix[i*4+1] = matrix[i][1];
-                ippMatrix[i*4+2] = matrix[i][2];
+                ippMatrix[i * 4] = matrix[i][0];
+                ippMatrix[i * 4 + 1] = matrix[i][1];
+                ippMatrix[i * 4 + 2] = matrix[i][2];
 
                 if (mxWidth == 4) {
-                    ippMatrix[i*4+3] = matrix[i][3];
+                    ippMatrix[i * 4 + 3] = matrix[i][3];
                 } else if (mxWidth == 5) {
-                    ippMatrix[i*4+3] = matrix[i][4];
+                    ippMatrix[i * 4 + 3] = matrix[i][4];
                 }
             }
         }
 
-        return ippColorTwist(
-                srcData, src.getWidth(), src.getHeight(), srcStride,
-                dstData, dst.getWidth(), dst.getHeight(), dstStride,
-                ippMatrix, type, offsets, inPlace);
+        return ippColorTwist(srcData, src.getWidth(), src.getHeight(), srcStride, dstData, dst
+                .getWidth(), dst.getHeight(), dstStride, ippMatrix, type, offsets, inPlace);
     }
 
     /**
      * Ipp color twist.
      * 
-     * @param srcData the src data
-     * @param srcWidth the src width
-     * @param srcHeight the src height
-     * @param srcStride the src stride
-     * @param dstData the dst data
-     * @param dstWidth the dst width
-     * @param dstHeight the dst height
-     * @param dstStride the dst stride
-     * @param ippMatrix the ipp matrix
-     * @param type the type
-     * @param offsets the offsets
-     * @param inPlace the in place
-     * 
-     * @return the int
+     * @param srcData
+     *            the src data.
+     * @param srcWidth
+     *            the src width.
+     * @param srcHeight
+     *            the src height.
+     * @param srcStride
+     *            the src stride.
+     * @param dstData
+     *            the dst data.
+     * @param dstWidth
+     *            the dst width.
+     * @param dstHeight
+     *            the dst height.
+     * @param dstStride
+     *            the dst stride.
+     * @param ippMatrix
+     *            the ipp matrix.
+     * @param type
+     *            the type.
+     * @param offsets
+     *            the offsets.
+     * @param inPlace
+     *            the in place.
+     * @return the int.
      */
-    private final native int ippColorTwist(
-            Object srcData, int srcWidth, int srcHeight, int srcStride,
-            Object dstData, int dstWidth, int dstHeight, int dstStride,
-            float ippMatrix[], int type, int offsets[], boolean inPlace
-    );
+    private final native int ippColorTwist(Object srcData, int srcWidth, int srcHeight,
+            int srcStride, Object dstData, int dstWidth, int dstHeight, int dstStride,
+            float ippMatrix[], int type, int offsets[], boolean inPlace);
 
     /**
      * Simple combine bands.
      * 
-     * @param srcData the src data
-     * @param srcWidth the src width
-     * @param srcHeight the src height
-     * @param srcStride the src stride
-     * @param srcChannels the src channels
-     * @param dstData the dst data
-     * @param dstStride the dst stride
-     * @param dstChannels the dst channels
-     * @param m the m
-     * @param offsets the offsets
-     * 
-     * @return the int
+     * @param srcData
+     *            the src data.
+     * @param srcWidth
+     *            the src width.
+     * @param srcHeight
+     *            the src height.
+     * @param srcStride
+     *            the src stride.
+     * @param srcChannels
+     *            the src channels.
+     * @param dstData
+     *            the dst data.
+     * @param dstStride
+     *            the dst stride.
+     * @param dstChannels
+     *            the dst channels.
+     * @param m
+     *            the m.
+     * @param offsets
+     *            the offsets.
+     * @return the int.
      */
-    private final native int simpleCombineBands(
-            Object srcData, int srcWidth, int srcHeight, int srcStride, int srcChannels,
-            Object dstData, int dstStride, int dstChannels,
-            float m[], int offsets[]
-    );
+    private final native int simpleCombineBands(Object srcData, int srcWidth, int srcHeight,
+            int srcStride, int srcChannels, Object dstData, int dstStride, int dstChannels,
+            float m[], int offsets[]);
 }
diff --git a/awt/java/awt/image/BandedSampleModel.java b/awt/java/awt/image/BandedSampleModel.java
index 392e44c..0aa30d7 100644
--- a/awt/java/awt/image/BandedSampleModel.java
+++ b/awt/java/awt/image/BandedSampleModel.java
@@ -18,24 +18,26 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The BandedSampleModel class provides samples of pixels in an image 
- * which is stored in a band interleaved method. Each pixel's sample 
- * takes one data element of the DataBuffer. The pixel stride for a 
- * BandedSampleModel is one. 
+ * The BandedSampleModel class provides samples of pixels in an image which is
+ * stored in a band interleaved method. Each pixel's sample takes one data
+ * element of the DataBuffer. The pixel stride for a BandedSampleModel is one.
+ * 
+ * @since Android 1.0
  */
 public final class BandedSampleModel extends ComponentSampleModel {
 
     /**
      * Creates the indices.
      * 
-     * @param numBands the num bands
-     * 
-     * @return the int[]
+     * @param numBands
+     *            the num bands.
+     * @return the int[].
      */
     private static int[] createIndices(int numBands) {
         int indices[] = new int[numBands];
@@ -48,9 +50,9 @@
     /**
      * Creates the offsets.
      * 
-     * @param numBands the num bands
-     * 
-     * @return the int[]
+     * @param numBands
+     *            the num bands.
+     * @return the int[].
      */
     private static int[] createOffsets(int numBands) {
         int offsets[] = new int[numBands];
@@ -61,41 +63,48 @@
     }
 
     /**
-     * Instantiates a new BandedSampleModel object with the specified 
-     * data type of samples, the width, height and bands number
-     * of image data.
+     * Instantiates a new BandedSampleModel object with the specified data type
+     * of samples, the width, height and bands number of image data.
      * 
-     * @param dataType the data type of samples.
-     * @param w the width of image data.
-     * @param h the height of image data.
-     * @param numBands the number of bands.
+     * @param dataType
+     *            the data type of samples.
+     * @param w
+     *            the width of image data.
+     * @param h
+     *            the height of image data.
+     * @param numBands
+     *            the number of bands.
      */
     public BandedSampleModel(int dataType, int w, int h, int numBands) {
-        this(dataType, w, h, w, BandedSampleModel.createIndices(numBands),
-                BandedSampleModel.createOffsets(numBands));
+        this(dataType, w, h, w, BandedSampleModel.createIndices(numBands), BandedSampleModel
+                .createOffsets(numBands));
     }
 
     /**
-     * Instantiates a new BandedSampleModel object with the specified 
-     * data type of samples, the width, height and bands number
-     * of image data.
+     * Instantiates a new BandedSampleModel object with the specified data type
+     * of samples, the width, height and bands number of image data.
      * 
-     * @param dataType the data type of samples.
-     * @param w the width of image data.
-     * @param h the height of image data.
-     * @param scanlineStride the scanline stride of the of the image data.
-     * @param bankIndices the array of the bank indecies.
-     * @param bandOffsets the array of the band offsets.
+     * @param dataType
+     *            the data type of samples.
+     * @param w
+     *            the width of image data.
+     * @param h
+     *            the height of image data.
+     * @param scanlineStride
+     *            the scanline stride of the of the image data.
+     * @param bankIndices
+     *            the array of the bank indices.
+     * @param bandOffsets
+     *            the array of the band offsets.
      */
-    public BandedSampleModel(int dataType, int w, int h, int scanlineStride,
-            int bankIndices[], int bandOffsets[]) {
+    public BandedSampleModel(int dataType, int w, int h, int scanlineStride, int bankIndices[],
+            int bandOffsets[]) {
         super(dataType, w, h, 1, scanlineStride, bankIndices, bandOffsets);
     }
 
     @Override
     public SampleModel createCompatibleSampleModel(int w, int h) {
-        return new BandedSampleModel(dataType, w, h, w, bankIndices,
-                bandOffsets);
+        return new BandedSampleModel(dataType, w, h, w, bankIndices, bandOffsets);
     }
 
     @Override
@@ -104,22 +113,22 @@
         int size = scanlineStride * height;
 
         switch (dataType) {
-        case DataBuffer.TYPE_BYTE:
-            data = new DataBufferByte(size, numBanks);
-            break;
-        case DataBuffer.TYPE_SHORT:
-        case DataBuffer.TYPE_USHORT:
-            data = new DataBufferShort(size, numBanks);
-            break;
-        case DataBuffer.TYPE_INT:
-            data = new DataBufferInt(size, numBanks);
-            break;
-        case DataBuffer.TYPE_FLOAT:
-            data = new DataBufferFloat(size, numBanks);
-            break;
-        case DataBuffer.TYPE_DOUBLE:
-            data = new DataBufferDouble(size, numBanks);
-            break;
+            case DataBuffer.TYPE_BYTE:
+                data = new DataBufferByte(size, numBanks);
+                break;
+            case DataBuffer.TYPE_SHORT:
+            case DataBuffer.TYPE_USHORT:
+                data = new DataBufferShort(size, numBanks);
+                break;
+            case DataBuffer.TYPE_INT:
+                data = new DataBufferInt(size, numBanks);
+                break;
+            case DataBuffer.TYPE_FLOAT:
+                data = new DataBufferFloat(size, numBanks);
+                break;
+            case DataBuffer.TYPE_DOUBLE:
+                data = new DataBufferDouble(size, numBanks);
+                break;
         }
 
         return data;
@@ -129,7 +138,8 @@
     @Override
     public SampleModel createSubsetSampleModel(int[] bands) {
         if (bands.length > numBands) {
-            // awt.64=The number of the bands in the subset is greater than the number of bands in the sample model
+            // awt.64=The number of the bands in the subset is greater than the
+            // number of bands in the sample model
             throw new RasterFormatException(Messages.getString("awt.64")); //$NON-NLS-1$
         }
 
@@ -141,94 +151,93 @@
             offsets[i] = bandOffsets[bands[i]];
         }
 
-        return new BandedSampleModel(dataType, width, height, scanlineStride,
-                indices, offsets);
+        return new BandedSampleModel(dataType, width, height, scanlineStride, indices, offsets);
     }
 
     @Override
     public Object getDataElements(int x, int y, Object obj, DataBuffer data) {
         switch (dataType) {
-        case DataBuffer.TYPE_BYTE: {
-            byte bdata[];
+            case DataBuffer.TYPE_BYTE: {
+                byte bdata[];
 
-            if (obj == null) {
-                bdata = new byte[numBands];
-            } else {
-                bdata = (byte[]) obj;
+                if (obj == null) {
+                    bdata = new byte[numBands];
+                } else {
+                    bdata = (byte[])obj;
+                }
+
+                for (int i = 0; i < numBands; i++) {
+                    bdata[i] = (byte)getSample(x, y, i, data);
+                }
+
+                obj = bdata;
+                break;
             }
+            case DataBuffer.TYPE_SHORT:
+            case DataBuffer.TYPE_USHORT: {
+                short sdata[];
 
-            for (int i = 0; i < numBands; i++) {
-                bdata[i] = (byte) getSample(x, y, i, data);
+                if (obj == null) {
+                    sdata = new short[numBands];
+                } else {
+                    sdata = (short[])obj;
+                }
+
+                for (int i = 0; i < numBands; i++) {
+                    sdata[i] = (short)getSample(x, y, i, data);
+                }
+
+                obj = sdata;
+                break;
             }
+            case DataBuffer.TYPE_INT: {
+                int idata[];
 
-            obj = bdata;
-            break;
-        }
-        case DataBuffer.TYPE_SHORT:
-        case DataBuffer.TYPE_USHORT: {
-            short sdata[];
+                if (obj == null) {
+                    idata = new int[numBands];
+                } else {
+                    idata = (int[])obj;
+                }
 
-            if (obj == null) {
-                sdata = new short[numBands];
-            } else {
-                sdata = (short[]) obj;
+                for (int i = 0; i < numBands; i++) {
+                    idata[i] = getSample(x, y, i, data);
+                }
+
+                obj = idata;
+                break;
             }
+            case DataBuffer.TYPE_FLOAT: {
+                float fdata[];
 
-            for (int i = 0; i < numBands; i++) {
-                sdata[i] = (short) getSample(x, y, i, data);
+                if (obj == null) {
+                    fdata = new float[numBands];
+                } else {
+                    fdata = (float[])obj;
+                }
+
+                for (int i = 0; i < numBands; i++) {
+                    fdata[i] = getSampleFloat(x, y, i, data);
+                }
+
+                obj = fdata;
+                break;
             }
+            case DataBuffer.TYPE_DOUBLE: {
+                double ddata[];
 
-            obj = sdata;
-            break;
-        }
-        case DataBuffer.TYPE_INT: {
-            int idata[];
+                if (obj == null) {
+                    ddata = new double[numBands];
+                } else {
+                    ddata = (double[])obj;
+                }
 
-            if (obj == null) {
-                idata = new int[numBands];
-            } else {
-                idata = (int[]) obj;
+                for (int i = 0; i < numBands; i++) {
+                    ddata[i] = getSampleDouble(x, y, i, data);
+                }
+
+                obj = ddata;
+                break;
             }
-
-            for (int i = 0; i < numBands; i++) {
-                idata[i] = getSample(x, y, i, data);
-            }
-
-            obj = idata;
-            break;
-        }
-        case DataBuffer.TYPE_FLOAT: {
-            float fdata[];
-
-            if (obj == null) {
-                fdata = new float[numBands];
-            } else {
-                fdata = (float[]) obj;
-            }
-
-            for (int i = 0; i < numBands; i++) {
-                fdata[i] = getSampleFloat(x, y, i, data);
-            }
-
-            obj = fdata;
-            break;
-        }
-        case DataBuffer.TYPE_DOUBLE: {
-            double ddata[];
-
-            if (obj == null) {
-                ddata = new double[numBands];
-            } else {
-                ddata = (double[]) obj;
-            }
-
-            for (int i = 0; i < numBands; i++) {
-                ddata[i] = getSampleDouble(x, y, i, data);
-            }
-
-            obj = ddata;
-            break;
-        }
         }
 
         return obj;
@@ -257,8 +266,7 @@
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
 
-        return data.getElem(bankIndices[b], y * scanlineStride + x +
-               bandOffsets[b]);
+        return data.getElem(bankIndices[b], y * scanlineStride + x + bandOffsets[b]);
     }
 
     @Override
@@ -268,8 +276,7 @@
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
 
-        return data.getElemDouble(bankIndices[b], y * scanlineStride + x +
-               bandOffsets[b]);
+        return data.getElemDouble(bankIndices[b], y * scanlineStride + x + bandOffsets[b]);
     }
 
     @Override
@@ -279,13 +286,11 @@
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
 
-        return data.getElemFloat(bankIndices[b], y * scanlineStride + x +
-               bandOffsets[b]);
+        return data.getElemFloat(bankIndices[b], y * scanlineStride + x + bandOffsets[b]);
     }
 
     @Override
-    public int[] getSamples(int x, int y, int w, int h, int b, int iArray[],
-            DataBuffer data) {
+    public int[] getSamples(int x, int y, int w, int h, int b, int iArray[], DataBuffer data) {
         int samples[];
         int idx = 0;
 
@@ -317,41 +322,41 @@
     @Override
     public void setDataElements(int x, int y, Object obj, DataBuffer data) {
         switch (dataType) {
-        case DataBuffer.TYPE_BYTE:
-            byte bdata[] = (byte[]) obj;
-            for (int i = 0; i < numBands; i++) {
-                setSample(x, y, i, bdata[i] & 0xff, data);
-            }
-            break;
+            case DataBuffer.TYPE_BYTE:
+                byte bdata[] = (byte[])obj;
+                for (int i = 0; i < numBands; i++) {
+                    setSample(x, y, i, bdata[i] & 0xff, data);
+                }
+                break;
 
-        case DataBuffer.TYPE_SHORT:
-        case DataBuffer.TYPE_USHORT:
-            short sdata[] = (short[]) obj;
-            for (int i = 0; i < numBands; i++) {
-                setSample(x, y, i, sdata[i] & 0xffff, data);
-            }
-            break;
+            case DataBuffer.TYPE_SHORT:
+            case DataBuffer.TYPE_USHORT:
+                short sdata[] = (short[])obj;
+                for (int i = 0; i < numBands; i++) {
+                    setSample(x, y, i, sdata[i] & 0xffff, data);
+                }
+                break;
 
-        case DataBuffer.TYPE_INT:
-            int idata[] = (int[]) obj;
-            for (int i = 0; i < numBands; i++) {
-                setSample(x, y, i, idata[i], data);
-            }
-            break;
+            case DataBuffer.TYPE_INT:
+                int idata[] = (int[])obj;
+                for (int i = 0; i < numBands; i++) {
+                    setSample(x, y, i, idata[i], data);
+                }
+                break;
 
-        case DataBuffer.TYPE_FLOAT:
-            float fdata[] = (float[]) obj;
-            for (int i = 0; i < numBands; i++) {
-                setSample(x, y, i, fdata[i], data);
-            }
-            break;
+            case DataBuffer.TYPE_FLOAT:
+                float fdata[] = (float[])obj;
+                for (int i = 0; i < numBands; i++) {
+                    setSample(x, y, i, fdata[i], data);
+                }
+                break;
 
-        case DataBuffer.TYPE_DOUBLE:
-            double ddata[] = (double[]) obj;
-            for (int i = 0; i < numBands; i++) {
-                setSample(x, y, i, ddata[i], data);
-            }
-            break;
+            case DataBuffer.TYPE_DOUBLE:
+                double ddata[] = (double[])obj;
+                for (int i = 0; i < numBands; i++) {
+                    setSample(x, y, i, ddata[i], data);
+                }
+                break;
         }
     }
 
@@ -363,8 +368,7 @@
     }
 
     @Override
-    public void setPixels(int x, int y, int w, int h, int iArray[],
-            DataBuffer data) {
+    public void setPixels(int x, int y, int w, int h, int iArray[], DataBuffer data) {
         int idx = 0;
 
         for (int i = y; i < y + h; i++) {
@@ -383,8 +387,7 @@
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
 
-        data.setElemDouble(bankIndices[b], y * scanlineStride + x +
-               bandOffsets[b], s);
+        data.setElemDouble(bankIndices[b], y * scanlineStride + x + bandOffsets[b], s);
     }
 
     @Override
@@ -394,8 +397,7 @@
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
 
-        data.setElemFloat(bankIndices[b], y * scanlineStride + x +
-               bandOffsets[b], s);
+        data.setElemFloat(bankIndices[b], y * scanlineStride + x + bandOffsets[b], s);
     }
 
     @Override
@@ -405,13 +407,11 @@
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
 
-        data.setElem(bankIndices[b], y * scanlineStride + x +
-                       bandOffsets[b], s);
+        data.setElem(bankIndices[b], y * scanlineStride + x + bandOffsets[b], s);
     }
 
     @Override
-    public void setSamples(int x, int y, int w, int h, int b, int iArray[],
-            DataBuffer data) {
+    public void setSamples(int x, int y, int w, int h, int b, int iArray[], DataBuffer data) {
         int idx = 0;
 
         for (int i = y; i < y + h; i++) {
@@ -423,4 +423,3 @@
     }
 
 }
-
diff --git a/awt/java/awt/image/BufferStrategy.java b/awt/java/awt/image/BufferStrategy.java
index e0508f0..3c8779d 100644
--- a/awt/java/awt/image/BufferStrategy.java
+++ b/awt/java/awt/image/BufferStrategy.java
@@ -18,35 +18,37 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.awt.BufferCapabilities;
 import java.awt.Graphics;
 
 /**
- * The BufferStrategy abstract class provides an opportunity 
- * to organize the buffers for a Canvas or Window. The BufferStrategy
- * implementation depends on hardware and software limitations.
- * These limitations are detectible through the capabilities 
- * object which can be obtained by the GraphicsConfiguration of the Canvas 
- * or Window.
+ * The BufferStrategy abstract class provides an opportunity to organize the
+ * buffers for a Canvas or Window. The BufferStrategy implementation depends on
+ * hardware and software limitations. These limitations are detectable through
+ * the capabilities object which can be obtained by the GraphicsConfiguration of
+ * the Canvas or Window.
+ * 
+ * @since Android 1.0
  */
 public abstract class BufferStrategy {
 
     /**
-     * Returns true if the drawing buffer was lost since the last call 
-     * of getDrawGraphics. 
+     * Returns true if the drawing buffer was lost since the last call of
+     * getDrawGraphics.
      * 
-     * @return true if the drawing buffer was lost since the last call 
-     * of getDrawGraphics, false otherwise.
+     * @return true if the drawing buffer was lost since the last call of
+     *         getDrawGraphics, false otherwise.
      */
     public abstract boolean contentsLost();
 
     /**
-     * Returns true if the drawing buffer is restored from a lost state. 
+     * Returns true if the drawing buffer is restored from a lost state.
      * 
-     * @return true if the drawing buffer is restored from a lost state,
-     * false otherwise.
+     * @return true if the drawing buffer is restored from a lost state, false
+     *         otherwise.
      */
     public abstract boolean contentsRestored();
 
diff --git a/awt/java/awt/image/BufferedImage.java b/awt/java/awt/image/BufferedImage.java
index d305d66..c9d58d9 100644
--- a/awt/java/awt/image/BufferedImage.java
+++ b/awt/java/awt/image/BufferedImage.java
@@ -18,6 +18,7 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import com.android.internal.awt.AndroidGraphics2D;
@@ -39,184 +40,215 @@
 import org.apache.harmony.awt.gl.image.BufferedImageSource;
 import org.apache.harmony.awt.internal.nls.Messages;
 
-
 /**
- * The BufferedImage class describes an Image which contains a buffer 
- * of image data and includes a ColorModel and a Raster for this data.
- * This class provides methods for obtaining and setting the Raster
- * and for manipulating the ColorModel parameters.
+ * The BufferedImage class describes an Image which contains a buffer of image
+ * data and includes a ColorModel and a Raster for this data. This class
+ * provides methods for obtaining and setting the Raster and for manipulating
+ * the ColorModel parameters.
+ * 
+ * @since Android 1.0
  */
-public class BufferedImage extends 
-Image implements WritableRenderedImage, Transparency{
+public class BufferedImage extends Image implements WritableRenderedImage, Transparency {
 
-    /** 
-     * The Constant TYPE_CUSTOM indicates that Image type 
-     * is unknown. 
+    /**
+     * The Constant TYPE_CUSTOM indicates that Image type is unknown.
      */
     public static final int TYPE_CUSTOM = 0;
 
-    /** 
-     * The Constant TYPE_INT_RGB indicates an image with 
-     * 8 bit RGB color components, it has a DirectColorModel 
-     * without alpha. 
+    /**
+     * The Constant TYPE_INT_RGB indicates an image with 8 bit RGB color
+     * components, it has a DirectColorModel without alpha.
      */
     public static final int TYPE_INT_RGB = 1;
 
-    /** 
-     * The Constant TYPE_INT_ARGB indicates an image with 
-     * 8 bit RGBA color components, it has a DirectColorModel 
-     * with alpha. 
+    /**
+     * The Constant TYPE_INT_ARGB indicates an image with 8 bit RGBA color
+     * components, it has a DirectColorModel with alpha.
      */
     public static final int TYPE_INT_ARGB = 2;
 
-    /** 
-     * The Constant TYPE_INT_ARGB_PRE indicates an image with 
-     * 8 bit RGBA color components, it has a DirectColorModel 
-     * with alpha, and image data is premultiplied by alpha. 
+    /**
+     * The Constant TYPE_INT_ARGB_PRE indicates an image with 8 bit RGBA color
+     * components, it has a DirectColorModel with alpha, and image data is
+     * pre-multiplied by alpha.
      */
     public static final int TYPE_INT_ARGB_PRE = 3;
 
-    /** 
-     * The Constant TYPE_INT_BGR indicates an image with 
-     * 8 bit RGB color components, BGR color model 
-     * (with the colors Blue, Green, and Red). There is no 
-     * alpha. The image has a DirectColorModel. 
+    /**
+     * The Constant TYPE_INT_BGR indicates an image with 8 bit RGB color
+     * components, BGR color model (with the colors Blue, Green, and Red). There
+     * is no alpha. The image has a DirectColorModel.
      */
     public static final int TYPE_INT_BGR = 4;
 
-    /** 
-     * The Constant TYPE_3BYTE_BGR indicates an image with 
-     * 8 bit RGB color components, BGR color model 
-     * (with the colors Blue, Green, and Red stored in 3 bytes). 
-     * There is no alpha. The image has a ComponentColorModel. 
+    /**
+     * The Constant TYPE_3BYTE_BGR indicates an image with 8 bit RGB color
+     * components, BGR color model (with the colors Blue, Green, and Red stored
+     * in 3 bytes). There is no alpha. The image has a ComponentColorModel.
      */
     public static final int TYPE_3BYTE_BGR = 5;
 
-    /** 
-     * The Constant TYPE_4BYTE_ABGR indicates an image with 
-     * 8 bit RGBA color components stored in 3 bytes and 1 byte of alpha.
-     * It has a ComponentColorModel with alpha.  
+    /**
+     * The Constant TYPE_4BYTE_ABGR indicates an image with 8 bit RGBA color
+     * components stored in 3 bytes and 1 byte of alpha. It has a
+     * ComponentColorModel with alpha.
      */
     public static final int TYPE_4BYTE_ABGR = 6;
 
-    /** 
-     * The Constant TYPE_4BYTE_ABGR_PRE indicates an image with 
-     * 8 bit RGBA color components stored in 3 bytes and 1 byte 
-     * for alpha. The image has a ComponentColorModel with alpha. 
-     * The color data is premultiplied with alpha.
+    /**
+     * The Constant TYPE_4BYTE_ABGR_PRE indicates an image with 8 bit RGBA color
+     * components stored in 3 bytes and 1 byte for alpha. The image has a
+     * ComponentColorModel with alpha. The color data is pre-multiplied with
+     * alpha.
      */
     public static final int TYPE_4BYTE_ABGR_PRE = 7;
 
-    /** 
-     * The Constant TYPE_USHORT_565_RGB indicates an image with 
-     * 565 RGB color components (5-bits red, 6-bits green, 5-bits blue) 
-     * with no alpha. This image has a DirectColorModel. 
+    /**
+     * The Constant TYPE_USHORT_565_RGB indicates an image with 565 RGB color
+     * components (5-bits red, 6-bits green, 5-bits blue) with no alpha. This
+     * image has a DirectColorModel.
      */
     public static final int TYPE_USHORT_565_RGB = 8;
 
-    /** 
-     * The Constant TYPE_USHORT_555_RGB indicates an image with 
-     * 555 RGB color components (5-bits red, 5-bits green, 5-bits blue) 
-     * with no alpha. This image has a DirectColorModel. 
+    /**
+     * The Constant TYPE_USHORT_555_RGB indicates an image with 555 RGB color
+     * components (5-bits red, 5-bits green, 5-bits blue) with no alpha. This
+     * image has a DirectColorModel.
      */
     public static final int TYPE_USHORT_555_RGB = 9;
 
-    /** 
-     * The Constant TYPE_BYTE_GRAY indicates a unsigned byte 
-     * image. This image has a ComponentColorModel with 
-     * a CS_GRAY ColorSpace. 
+    /**
+     * The Constant TYPE_BYTE_GRAY indicates a unsigned byte image. This image
+     * has a ComponentColorModel with a CS_GRAY ColorSpace.
      */
     public static final int TYPE_BYTE_GRAY = 10;
 
-    /** 
-     * The Constant TYPE_USHORT_GRAY indicates an unsigned short 
-     * image. This image has a ComponentColorModel with a CS_GRAY 
-     * ColorSpace. 
+    /**
+     * The Constant TYPE_USHORT_GRAY indicates an unsigned short image. This
+     * image has a ComponentColorModel with a CS_GRAY ColorSpace.
      */
     public static final int TYPE_USHORT_GRAY = 11;
 
-    /** 
-     * The Constant TYPE_BYTE_BINARY indicates an opaque byte-packed
-     * 1, 2 or 4 bit image. The image has an IndexColorModel without 
-     * alpha.  
+    /**
+     * The Constant TYPE_BYTE_BINARY indicates an opaque byte-packed 1, 2 or 4
+     * bit image. The image has an IndexColorModel without alpha.
      */
     public static final int TYPE_BYTE_BINARY = 12;
 
-    /** 
-     * The Constant TYPE_BYTE_INDEXED indicates an indexed byte image. 
+    /**
+     * The Constant TYPE_BYTE_INDEXED indicates an indexed byte image.
      */
     public static final int TYPE_BYTE_INDEXED = 13;
 
-    /** The Constant ALPHA_MASK. */
+    /**
+     * The Constant ALPHA_MASK.
+     */
     private static final int ALPHA_MASK = 0xff000000;
 
-    /** The Constant RED_MASK. */
+    /**
+     * The Constant RED_MASK.
+     */
     private static final int RED_MASK = 0x00ff0000;
 
-    /** The Constant GREEN_MASK. */
+    /**
+     * The Constant GREEN_MASK.
+     */
     private static final int GREEN_MASK = 0x0000ff00;
 
-    /** The Constant BLUE_MASK. */
+    /**
+     * The Constant BLUE_MASK.
+     */
     private static final int BLUE_MASK = 0x000000ff;
 
-    /** The Constant RED_BGR_MASK. */
+    /**
+     * The Constant RED_BGR_MASK.
+     */
     private static final int RED_BGR_MASK = 0x000000ff;
 
-    /** The Constant GREEN_BGR_MASK. */
+    /**
+     * The Constant GREEN_BGR_MASK.
+     */
     private static final int GREEN_BGR_MASK = 0x0000ff00;
 
-    /** The Constant BLUE_BGR_MASK. */
+    /**
+     * The Constant BLUE_BGR_MASK.
+     */
     private static final int BLUE_BGR_MASK = 0x00ff0000;
 
-    /** The Constant RED_565_MASK. */
+    /**
+     * The Constant RED_565_MASK.
+     */
     private static final int RED_565_MASK = 0xf800;
 
-    /** The Constant GREEN_565_MASK. */
+    /**
+     * The Constant GREEN_565_MASK.
+     */
     private static final int GREEN_565_MASK = 0x07e0;
 
-    /** The Constant BLUE_565_MASK. */
+    /**
+     * The Constant BLUE_565_MASK.
+     */
     private static final int BLUE_565_MASK = 0x001f;
 
-    /** The Constant RED_555_MASK. */
+    /**
+     * The Constant RED_555_MASK.
+     */
     private static final int RED_555_MASK = 0x7c00;
 
-    /** The Constant GREEN_555_MASK. */
+    /**
+     * The Constant GREEN_555_MASK.
+     */
     private static final int GREEN_555_MASK = 0x03e0;
 
-    /** The Constant BLUE_555_MASK. */
+    /**
+     * The Constant BLUE_555_MASK.
+     */
     private static final int BLUE_555_MASK = 0x001f;
 
-    /** The cm. */
+    /**
+     * The cm.
+     */
     private ColorModel cm;
 
-    /** The raster. */
+    /**
+     * The raster.
+     */
     private final WritableRaster raster;
 
-    /** The image type. */
+    /**
+     * The image type.
+     */
     private final int imageType;
 
-    /** The properties. */
+    /**
+     * The properties.
+     */
     private Hashtable<?, ?> properties;
 
-    // Surface of the Buffered Image - used for blitting one Buffered Image 
+    // Surface of the Buffered Image - used for blitting one Buffered Image
     // on the other one or on the Component
-    /** The image surf. */
+    /**
+     * The image surf.
+     */
     private final ImageSurface imageSurf;
 
     /**
-     * Instantiates a new BufferedImage with the specified ColorModel,
-     * and WritableRaster objects. The Raster data can be
-     * be divided or multiplied by alpha. It depends on the 
-     * alphaPremultiplied state in the ColorModel.
+     * Instantiates a new BufferedImage with the specified ColorModel, and
+     * WritableRaster objects. The Raster data can be be divided or multiplied
+     * by alpha. It depends on the alphaPremultiplied state in the ColorModel.
      * 
-     * @param cm the ColorModel of the new image.
-     * @param raster the WritableRaster of the new image.
-     * @param isRasterPremultiplied if true the data of the specified
-     * Raster is premultiplied by alpha.
-     * @param properties the properties of new Image.
+     * @param cm
+     *            the ColorModel of the new image.
+     * @param raster
+     *            the WritableRaster of the new image.
+     * @param isRasterPremultiplied
+     *            if true the data of the specified Raster is pre-multiplied by
+     *            alpha.
+     * @param properties
+     *            the properties of new Image.
      */
-    public BufferedImage(ColorModel cm, WritableRaster raster,
-            boolean isRasterPremultiplied, Hashtable<?, ?> properties) {
+    public BufferedImage(ColorModel cm, WritableRaster raster, boolean isRasterPremultiplied,
+            Hashtable<?, ?> properties) {
         if (!cm.isCompatibleRaster(raster)) {
             // awt.4D=The raster is incompatible with this ColorModel
             throw new IllegalArgumentException(Messages.getString("awt.4D")); //$NON-NLS-1$
@@ -227,7 +259,7 @@
             throw new IllegalArgumentException(Messages.getString("awt.228")); //$NON-NLS-1$
         }
 
-        this.cm  = cm;
+        this.cm = cm;
         this.raster = raster;
         this.properties = properties;
 
@@ -240,47 +272,52 @@
 
     /**
      * Instantiates a new BufferedImage with the specified width, height
-     * predefined image type (TYPE_BYTE_BINARY or TYPE_BYTE_INDEXED) 
-     * and the specified IndexColorModel.
+     * predefined image type (TYPE_BYTE_BINARY or TYPE_BYTE_INDEXED) and the
+     * specified IndexColorModel.
      * 
-     * @param width the width of new image.
-     * @param height the height of new image.
-     * @param imageType the predefined image type. 
-     * @param cm the specified IndexColorModel.
+     * @param width
+     *            the width of new image.
+     * @param height
+     *            the height of new image.
+     * @param imageType
+     *            the predefined image type.
+     * @param cm
+     *            the specified IndexColorModel.
      */
-    public BufferedImage(int width, int height, int imageType,
-            IndexColorModel cm) {
+    public BufferedImage(int width, int height, int imageType, IndexColorModel cm) {
         switch (imageType) {
-        case TYPE_BYTE_BINARY:
-            if (cm.hasAlpha()) {
-                // awt.227=This image type can't have alpha
-                throw new IllegalArgumentException(Messages.getString("awt.227")); //$NON-NLS-1$
-            }
-            int pixel_bits = 0;
-            int mapSize = cm.getMapSize();
-            if (mapSize <= 2) {
-                pixel_bits = 1;
-            } else if (mapSize <= 4) {
-                pixel_bits = 2;
-            } else if (mapSize <= 16) {
-                pixel_bits = 4;
-            } else {
-                // awt.221=The imageType is TYPE_BYTE_BINARY and the color map has more than 16 entries
-                throw new IllegalArgumentException(Messages.getString("awt.221")); //$NON-NLS-1$
-            }
+            case TYPE_BYTE_BINARY:
+                if (cm.hasAlpha()) {
+                    // awt.227=This image type can't have alpha
+                    throw new IllegalArgumentException(Messages.getString("awt.227")); //$NON-NLS-1$
+                }
+                int pixel_bits = 0;
+                int mapSize = cm.getMapSize();
+                if (mapSize <= 2) {
+                    pixel_bits = 1;
+                } else if (mapSize <= 4) {
+                    pixel_bits = 2;
+                } else if (mapSize <= 16) {
+                    pixel_bits = 4;
+                } else {
+                    // awt.221=The imageType is TYPE_BYTE_BINARY and the color
+                    // map has more than 16 entries
+                    throw new IllegalArgumentException(Messages.getString("awt.221")); //$NON-NLS-1$
+                }
 
-            raster = Raster.createPackedRaster(DataBuffer.TYPE_BYTE, width,
-                    height, 1, pixel_bits, null);
-            break;
+                raster = Raster.createPackedRaster(DataBuffer.TYPE_BYTE, width, height, 1,
+                        pixel_bits, null);
+                break;
 
-        case TYPE_BYTE_INDEXED:
-            raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE,
-                    width, height, 1, null);
-            break;
+            case TYPE_BYTE_INDEXED:
+                raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, width, height, 1,
+                        null);
+                break;
 
-        default:
-            // awt.222=The imageType is not TYPE_BYTE_BINARY or TYPE_BYTE_INDEXED
-            throw new IllegalArgumentException(Messages.getString("awt.222")); //$NON-NLS-1$
+            default:
+                // awt.222=The imageType is not TYPE_BYTE_BINARY or
+                // TYPE_BYTE_INDEXED
+                throw new IllegalArgumentException(Messages.getString("awt.222")); //$NON-NLS-1$
 
         }
 
@@ -296,187 +333,159 @@
     }
 
     /**
-     * Instantiates a new BufferedImage with the specified width, height
-     * and predefined image type.
+     * Instantiates a new BufferedImage with the specified width, height and
+     * predefined image type.
      * 
-     * @param width the width of new image.
-     * @param height the height of new image.
-     * @param imageType the predefined image type. 
+     * @param width
+     *            the width of new image.
+     * @param height
+     *            the height of new image.
+     * @param imageType
+     *            the predefined image type.
      */
     public BufferedImage(int width, int height, int imageType) {
 
         switch (imageType) {
-        case TYPE_INT_RGB:
-            cm = new DirectColorModel(24, RED_MASK, GREEN_MASK, BLUE_MASK);
-            raster = cm.createCompatibleWritableRaster(width, height);
-            break;
+            case TYPE_INT_RGB:
+                cm = new DirectColorModel(24, RED_MASK, GREEN_MASK, BLUE_MASK);
+                raster = cm.createCompatibleWritableRaster(width, height);
+                break;
 
-        case TYPE_INT_ARGB:
-            cm = ColorModel.getRGBdefault();
-            raster = cm.createCompatibleWritableRaster(width, height);
-            break;
+            case TYPE_INT_ARGB:
+                cm = ColorModel.getRGBdefault();
+                raster = cm.createCompatibleWritableRaster(width, height);
+                break;
 
-        case TYPE_INT_ARGB_PRE:
-            cm = new DirectColorModel(
-                    ColorSpace.getInstance(ColorSpace.CS_sRGB),
-                    32,
-                    RED_MASK,
-                    GREEN_MASK,
-                    BLUE_MASK,
-                    ALPHA_MASK,
-                    true,
-                    DataBuffer.TYPE_INT);
+            case TYPE_INT_ARGB_PRE:
+                cm = new DirectColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), 32, RED_MASK,
+                        GREEN_MASK, BLUE_MASK, ALPHA_MASK, true, DataBuffer.TYPE_INT);
 
-            raster = cm.createCompatibleWritableRaster(width, height);
-            break;
+                raster = cm.createCompatibleWritableRaster(width, height);
+                break;
 
-        case TYPE_INT_BGR:
-            cm = new DirectColorModel(24,
-                    RED_BGR_MASK,
-                    GREEN_BGR_MASK,
-                    BLUE_BGR_MASK);
+            case TYPE_INT_BGR:
+                cm = new DirectColorModel(24, RED_BGR_MASK, GREEN_BGR_MASK, BLUE_BGR_MASK);
 
-            raster = cm.createCompatibleWritableRaster(width, height);
-            break;
+                raster = cm.createCompatibleWritableRaster(width, height);
+                break;
 
-        case TYPE_3BYTE_BGR: {
-            int bits[] = { 8, 8, 8 };
-            int bandOffsets[] = { 2, 1, 0 };
-            cm = new ComponentColorModel(
-                    ColorSpace.getInstance(ColorSpace.CS_sRGB),
-                    bits, 
-                    false, 
-                    false, 
-                    Transparency.OPAQUE, 
-                    DataBuffer.TYPE_BYTE);
+            case TYPE_3BYTE_BGR: {
+                int bits[] = {
+                        8, 8, 8
+                };
+                int bandOffsets[] = {
+                        2, 1, 0
+                };
+                cm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), bits,
+                        false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE);
 
-            raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE,
-                    width, height, width * 3, 3, bandOffsets, null);
+                raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, width, height,
+                        width * 3, 3, bandOffsets, null);
             }
-            break;
+                break;
 
-        case TYPE_4BYTE_ABGR: {
-            int bits[] = { 8, 8, 8, 8 };
-            int bandOffsets[] = { 3, 2, 1, 0 };
-            cm = new ComponentColorModel(
-                    ColorSpace.getInstance(ColorSpace.CS_sRGB),
-                    bits, 
-                    true, 
-                    false, 
-                    Transparency.TRANSLUCENT, 
-                    DataBuffer.TYPE_BYTE);
+            case TYPE_4BYTE_ABGR: {
+                int bits[] = {
+                        8, 8, 8, 8
+                };
+                int bandOffsets[] = {
+                        3, 2, 1, 0
+                };
+                cm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), bits,
+                        true, false, Transparency.TRANSLUCENT, DataBuffer.TYPE_BYTE);
 
-            raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE,
-                    width, height, width * 4, 4, bandOffsets, null);
+                raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, width, height,
+                        width * 4, 4, bandOffsets, null);
             }
-            break;
+                break;
 
-        case TYPE_4BYTE_ABGR_PRE: {
-            int bits[] = { 8, 8, 8, 8 };
-            int bandOffsets[] = { 3, 2, 1, 0 };
-            cm = new ComponentColorModel(
-                    ColorSpace.getInstance(ColorSpace.CS_sRGB),
-                    bits, 
-                    true, 
-                    true, 
-                    Transparency.TRANSLUCENT, DataBuffer.TYPE_BYTE);
+            case TYPE_4BYTE_ABGR_PRE: {
+                int bits[] = {
+                        8, 8, 8, 8
+                };
+                int bandOffsets[] = {
+                        3, 2, 1, 0
+                };
+                cm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), bits,
+                        true, true, Transparency.TRANSLUCENT, DataBuffer.TYPE_BYTE);
 
-            raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE,
-                    width, height, width * 4, 4, bandOffsets, null);
+                raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, width, height,
+                        width * 4, 4, bandOffsets, null);
             }
-            break;
+                break;
 
-        case TYPE_USHORT_565_RGB:
-            cm = new DirectColorModel(
-                    ColorSpace.getInstance(ColorSpace.CS_sRGB),
-                    16,
-                    RED_565_MASK,
-                    GREEN_565_MASK,
-                    BLUE_565_MASK,
-                    0,
-                    false,
-                    DataBuffer.TYPE_USHORT);
+            case TYPE_USHORT_565_RGB:
+                cm = new DirectColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), 16,
+                        RED_565_MASK, GREEN_565_MASK, BLUE_565_MASK, 0, false,
+                        DataBuffer.TYPE_USHORT);
 
-            raster = cm.createCompatibleWritableRaster(width, height);
-            break;
+                raster = cm.createCompatibleWritableRaster(width, height);
+                break;
 
-        case TYPE_USHORT_555_RGB:
-            cm = new DirectColorModel(
-                    ColorSpace.getInstance(ColorSpace.CS_sRGB),
-                    15,
-                    RED_555_MASK,
-                    GREEN_555_MASK,
-                    BLUE_555_MASK,
-                    0,
-                    false,
-                    DataBuffer.TYPE_USHORT);
+            case TYPE_USHORT_555_RGB:
+                cm = new DirectColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), 15,
+                        RED_555_MASK, GREEN_555_MASK, BLUE_555_MASK, 0, false,
+                        DataBuffer.TYPE_USHORT);
 
-            raster = cm.createCompatibleWritableRaster(width, height);
-            break;
+                raster = cm.createCompatibleWritableRaster(width, height);
+                break;
 
-        case TYPE_BYTE_GRAY: {
-            int bits[] = { 8 };
-            cm = new ComponentColorModel(
-                    ColorSpace.getInstance(ColorSpace.CS_GRAY),
-                    bits, 
-                    false, 
-                    false, 
-                    Transparency.OPAQUE, 
-                    DataBuffer.TYPE_BYTE);
+            case TYPE_BYTE_GRAY: {
+                int bits[] = {
+                    8
+                };
+                cm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_GRAY), bits,
+                        false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE);
 
-            raster = cm.createCompatibleWritableRaster(width, height);
+                raster = cm.createCompatibleWritableRaster(width, height);
             }
-            break;
+                break;
 
-        case TYPE_USHORT_GRAY: {
-            int bits[] = { 16 };
-            cm = new ComponentColorModel(
-                    ColorSpace.getInstance(ColorSpace.CS_GRAY),
-                    bits, 
-                    false, 
-                    false, 
-                    Transparency.OPAQUE, 
-                    DataBuffer.TYPE_USHORT);
-            raster = cm.createCompatibleWritableRaster(width, height);
+            case TYPE_USHORT_GRAY: {
+                int bits[] = {
+                    16
+                };
+                cm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_GRAY), bits,
+                        false, false, Transparency.OPAQUE, DataBuffer.TYPE_USHORT);
+                raster = cm.createCompatibleWritableRaster(width, height);
             }
-            break;
+                break;
 
-        case TYPE_BYTE_BINARY: {
-            int colorMap[] = { 0, 0xffffff };
-            cm = new IndexColorModel(1, 2, colorMap, 0, false, -1,
-                    DataBuffer.TYPE_BYTE);
+            case TYPE_BYTE_BINARY: {
+                int colorMap[] = {
+                        0, 0xffffff
+                };
+                cm = new IndexColorModel(1, 2, colorMap, 0, false, -1, DataBuffer.TYPE_BYTE);
 
-            raster = Raster.createPackedRaster(DataBuffer.TYPE_BYTE, width,
-                    height, 1, 1, null);
+                raster = Raster.createPackedRaster(DataBuffer.TYPE_BYTE, width, height, 1, 1, null);
             }
-            break;
+                break;
 
-        case TYPE_BYTE_INDEXED: {
-            int colorMap[] = new int[256];
-            int i = 0;
-            for (int r = 0; r < 256; r += 51) {
-                for (int g = 0; g < 256; g += 51) {
-                    for (int b = 0; b < 256; b += 51) {
-                        colorMap[i] = (r << 16) | (g << 8) | b;
-                        i++;
+            case TYPE_BYTE_INDEXED: {
+                int colorMap[] = new int[256];
+                int i = 0;
+                for (int r = 0; r < 256; r += 51) {
+                    for (int g = 0; g < 256; g += 51) {
+                        for (int b = 0; b < 256; b += 51) {
+                            colorMap[i] = (r << 16) | (g << 8) | b;
+                            i++;
+                        }
                     }
                 }
-            }
 
-            int gray = 0x12;
-            for (; i < 256; i++, gray += 6) {
-                colorMap[i] = (gray << 16) | (gray << 8) | gray;
-            }
-            cm = new IndexColorModel(8, 256, colorMap, 0, false, -1,
-                    DataBuffer.TYPE_BYTE);
-            raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE,
-                    width, height, 1, null);
+                int gray = 0x12;
+                for (; i < 256; i++, gray += 6) {
+                    colorMap[i] = (gray << 16) | (gray << 8) | gray;
+                }
+                cm = new IndexColorModel(8, 256, colorMap, 0, false, -1, DataBuffer.TYPE_BYTE);
+                raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, width, height, 1,
+                        null);
 
             }
-            break;
-        default:
-            // awt.224=Unknown image type
-            throw new IllegalArgumentException(Messages.getString("awt.224")); //$NON-NLS-1$
+                break;
+            default:
+                // awt.224=Unknown image type
+                throw new IllegalArgumentException(Messages.getString("awt.224")); //$NON-NLS-1$
         }
         this.imageType = imageType;
         imageSurf = createImageSurface(imageType);
@@ -488,7 +497,7 @@
     }
 
     public Object getProperty(String name) {
-        if(name == null) {
+        if (name == null) {
             // awt.225=Property name is null
             throw new NullPointerException(Messages.getString("awt.225")); //$NON-NLS-1$
         }
@@ -504,9 +513,8 @@
 
     public WritableRaster copyData(WritableRaster outRaster) {
         if (outRaster == null) {
-            outRaster = Raster.createWritableRaster(raster.getSampleModel(),
-                    new Point(raster.getSampleModelTranslateX(),
-                            raster.getSampleModelTranslateY()));
+            outRaster = Raster.createWritableRaster(raster.getSampleModel(), new Point(raster
+                    .getSampleModelTranslateX(), raster.getSampleModelTranslateY()));
         }
 
         int w = outRaster.getWidth();
@@ -530,8 +538,7 @@
 
         SampleModel sm = raster.getSampleModel();
         SampleModel nsm = sm.createCompatibleSampleModel(w, h);
-        WritableRaster outr = Raster.createWritableRaster(nsm, 
-                rect.getLocation());
+        WritableRaster outr = Raster.createWritableRaster(nsm, rect.getLocation());
         Object data = null;
 
         data = raster.getDataElements(minX, minY, w, h, data);
@@ -550,7 +557,7 @@
         Vector<String> v = new Vector<String>();
         for (Enumeration<?> e = properties.keys(); e.hasMoreElements();) {
             try {
-                v.add((String) e.nextElement());
+                v.add((String)e.nextElement());
             } catch (ClassCastException ex) {
             }
         }
@@ -573,7 +580,7 @@
     @Override
     public String toString() {
         return "BufferedImage@" + Integer.toHexString(hashCode()) + //$NON-NLS-1$
-            ": type = " + imageType + " " + cm + " " + raster; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+                ": type = " + imageType + " " + cm + " " + raster; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
     }
 
     public WritableRaster getWritableTile(int tileX, int tileY) {
@@ -590,13 +597,12 @@
     }
 
     /**
-     * Gets a WritableRaster object which contains the alpha channel of 
-     * BufferedImage object with ColorModel objects that supports 
-     * a separate alpha channel such as ComponentColorModel 
-     * or DirectColorModel.
+     * Gets a WritableRaster object which contains the alpha channel of
+     * BufferedImage object with ColorModel objects that supports a separate
+     * alpha channel such as ComponentColorModel or DirectColorModel.
      * 
-     * @return the WritableRaster object which contains the alpha 
-     * channel of this BufferedImage. 
+     * @return the WritableRaster object which contains the alpha channel of
+     *         this BufferedImage.
      */
     public WritableRaster getAlphaRaster() {
         return cm.getAlphaRaster(raster);
@@ -643,10 +649,8 @@
         int minX = raster.getMinX();
         int minY = raster.getMinY();
 
-        WritableRaster outr = Raster.createWritableRaster(
-                raster.getSampleModel(),
-                new Point(raster.getSampleModelTranslateX(),
-                raster.getSampleModelTranslateY()));
+        WritableRaster outr = Raster.createWritableRaster(raster.getSampleModel(), new Point(raster
+                .getSampleModelTranslateX(), raster.getSampleModelTranslateY()));
 
         Object data = null;
 
@@ -678,11 +682,14 @@
     /**
      * Gets the rectangular area of this BufferedImage as a subimage.
      * 
-     * @param x the x coordinate.
-     * @param y the y coordinate.
-     * @param w the width of the subimage.
-     * @param h the height of the subimage.
-     * 
+     * @param x
+     *            the x coordinate.
+     * @param y
+     *            the y coordinate.
+     * @param w
+     *            the width of the subimage.
+     * @param h
+     *            the height of the subimage.
      * @return the BufferedImage.
      */
     public BufferedImage getSubimage(int x, int y, int w, int h) {
@@ -697,18 +704,17 @@
     }
 
     /**
-     * Creates the Graphics2D object which allows to draw into 
-     * this BufferedImage.
+     * Creates the Graphics2D object which allows to draw into this
+     * BufferedImage.
      * 
      * @return the graphics2D object.
      */
     public Graphics2D createGraphics() {
-        GraphicsEnvironment ge = 
-            GraphicsEnvironment.getLocalGraphicsEnvironment();
-        //return ge.createGraphics(this);
-        //???AWT hack, FIXME
-        //return AndroidGraphics2D.getInstance();
-        //throw new RuntimeException("Not implemented!");
+        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
+        // return ge.createGraphics(this);
+        // ???AWT hack, FIXME
+        // return AndroidGraphics2D.getInstance();
+        // throw new RuntimeException("Not implemented!");
         return null;
     }
 
@@ -718,38 +724,44 @@
     }
 
     /**
-     * Coerces the data to achieve the state which is specified by 
-     * the isAlphaPremultiplied variable. 
+     * Coerces the data to achieve the state which is specified by the
+     * isAlphaPremultiplied variable.
      * 
-     * @param isAlphaPremultiplied the is alpha premultiplied state.
+     * @param isAlphaPremultiplied
+     *            the is alpha pre-multiplied state.
      */
     public void coerceData(boolean isAlphaPremultiplied) {
-        if (cm.hasAlpha() && 
-                cm.isAlphaPremultiplied() != isAlphaPremultiplied) {
+        if (cm.hasAlpha() && cm.isAlphaPremultiplied() != isAlphaPremultiplied) {
             cm = cm.coerceData(raster, isAlphaPremultiplied);
         }
     }
 
     /**
-     * Gets an array of colors in the TYPE_INT_ARGB color model and 
-     * default sRGB colorspace of the specified area of this
-     * BufferedImage. The result array is composed by the following
-     * algirithm:
-     * <p> 
-     * pixel   = rgbArray[offset + (y-startY)*scansize + (x-startX)]
+     * Gets an array of colors in the TYPE_INT_ARGB color model and default sRGB
+     * color space of the specified area of this BufferedImage. The result array
+     * is composed by the following algorithm:
+     * <p>
+     * pixel = rgbArray[offset + (y-startY)*scansize + (x-startX)]
+     * </p>
      * 
-     * @param startX the start X area coordinate. 
-     * @param startY the start Y area coordinate.
-     * @param w the width of the area. 
-     * @param h the height of the area.
-     * @param rgbArray the result array will be stored to this array.
-     * @param offset the offset of the rgbArray array. 
-     * @param scansize the scanline stride for the rgbArray.
-     * 
+     * @param startX
+     *            the start X area coordinate.
+     * @param startY
+     *            the start Y area coordinate.
+     * @param w
+     *            the width of the area.
+     * @param h
+     *            the height of the area.
+     * @param rgbArray
+     *            the result array will be stored to this array.
+     * @param offset
+     *            the offset of the rgbArray array.
+     * @param scansize
+     *            the scanline stride for the rgbArray.
      * @return an array of colors for the specified area.
      */
-    public int[] getRGB(int startX, int startY, int w, int h, int[] rgbArray,
-            int offset, int scansize) {
+    public int[] getRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset,
+            int scansize) {
         if (rgbArray == null) {
             rgbArray = new int[offset + h * scansize];
         }
@@ -765,38 +777,47 @@
     }
 
     /**
-     * Sets RGB values from the specified array to the specified
-     * BufferedImage area. The pixels are in the default RGB color model 
-     * (TYPE_INT_ARGB) and default sRGB color space.
+     * Sets RGB values from the specified array to the specified BufferedImage
+     * area. The pixels are in the default RGB color model (TYPE_INT_ARGB) and
+     * default sRGB color space.
      * 
-     * @param startX the start X coordinate.
-     * @param startY the start Y coordinate.
-     * @param w the width of the BufferedImage area.
-     * @param h the height of the BufferedImage area.
-     * @param rgbArray the array of RGB values.
-     * @param offset the offset of the rgbArray array. 
-     * @param scansize the scanline stride for the rgbArray.
+     * @param startX
+     *            the start X coordinate.
+     * @param startY
+     *            the start Y coordinate.
+     * @param w
+     *            the width of the BufferedImage area.
+     * @param h
+     *            the height of the BufferedImage area.
+     * @param rgbArray
+     *            the array of RGB values.
+     * @param offset
+     *            the offset of the rgbArray array.
+     * @param scansize
+     *            the scanline stride for the rgbArray.
      */
-    public void setRGB(int startX, int startY, int w, int h, int[] rgbArray,
-            int offset, int scansize) {
+    public void setRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset,
+            int scansize) {
         int off = offset;
         for (int y = startY; y < startY + h; y++, off += scansize) {
             int i = off;
             for (int x = startX; x < startX + w; x++, i++) {
-                raster.setDataElements(x, y, 
-                        cm.getDataElements(rgbArray[i], null));
+                raster.setDataElements(x, y, cm.getDataElements(rgbArray[i], null));
             }
         }
     }
 
     /**
-     * Sets a the specified RGB value to the specified pixel of
-     * this BufferedImage. The pixel should be in the default 
-     * RGB color model (TYPE_INT_ARGB) and default sRGB color space. 
-     *  
-     * @param x the X coordinate of the pixel.
-     * @param y the Y coordinate of the pixel.
-     * @param rgb the RGB value to be set.
+     * Sets a the specified RGB value to the specified pixel of this
+     * BufferedImage. The pixel should be in the default RGB color model
+     * (TYPE_INT_ARGB) and default sRGB color space.
+     * 
+     * @param x
+     *            the X coordinate of the pixel.
+     * @param y
+     *            the Y coordinate of the pixel.
+     * @param rgb
+     *            the RGB value to be set.
      */
     public synchronized void setRGB(int x, int y, int rgb) {
         raster.setDataElements(x, y, cm.getDataElements(rgb, null));
@@ -814,25 +835,26 @@
     }
 
     /**
-     * Gets a color in the TYPE_INT_ARGB color model and default 
-     * sRGB colorspace of the specified pixel. 
+     * Gets a color in the TYPE_INT_ARGB color model and default sRGB color
+     * space of the specified pixel.
      * 
-     * @param x the X coordinate of the pixel.
-     * @param y the Y coordinate of the pixel.
-     * 
-     * @return the color of the specified pixel in the TYPE_INT_ARGB 
-     * color model and default sRGB colorspace. 
+     * @param x
+     *            the X coordinate of the pixel.
+     * @param y
+     *            the Y coordinate of the pixel.
+     * @return the color of the specified pixel in the TYPE_INT_ARGB color model
+     *         and default sRGB color space.
      */
     public int getRGB(int x, int y) {
         return cm.getRGB(raster.getDataElements(x, y, null));
     }
 
     /**
-     * Returnes true if alpha is premultiplied, 
-     * false if alpha is not premultiplied or there is no alpha.
+     * Returns true if alpha is pre-multiplied, false if alpha is not
+     * pre-multiplied or there is no alpha.
      * 
-     * @return true if alpha is premultiplied, 
-     * false if alpha is not premultiplied or there is no alpha.
+     * @return true if alpha is pre-multiplied, false if alpha is not
+     *         pre-multiplied or there is no alpha.
      */
     public boolean isAlphaPremultiplied() {
         return cm.isAlphaPremultiplied();
@@ -907,9 +929,9 @@
     /**
      * Creates the image surface.
      * 
-     * @param type the type
-     * 
-     * @return the image surface
+     * @param type
+     *            the type.
+     * @return the image surface.
      */
     private ImageSurface createImageSurface(int type) {
         return new ImageSurface(getColorModel(), getRaster(), type);
@@ -918,7 +940,7 @@
     /**
      * Gets the image surface.
      * 
-     * @return the image surface
+     * @return the image surface.
      */
     ImageSurface getImageSurface() {
         return imageSurf;
@@ -928,4 +950,3 @@
         return cm.getTransparency();
     }
 }
-
diff --git a/awt/java/awt/image/BufferedImageFilter.java b/awt/java/awt/image/BufferedImageFilter.java
index 44b3c2e..8b6fcf0 100644
--- a/awt/java/awt/image/BufferedImageFilter.java
+++ b/awt/java/awt/image/BufferedImageFilter.java
@@ -27,49 +27,72 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The BufferedImageFilter class provides filtering operations to 
- * the BufferedImage objects using operators which implement
- * BufferedImageOp interface.
+ * The BufferedImageFilter class provides filtering operations to the
+ * BufferedImage objects using operators which implement BufferedImageOp
+ * interface.
+ * 
+ * @since Android 1.0
  */
 public class BufferedImageFilter extends ImageFilter implements Cloneable {
-    
-    /** The Constant accessor. */
+
+    /**
+     * The Constant accessor.
+     */
     private static final AwtImageBackdoorAccessor accessor = AwtImageBackdoorAccessor.getInstance();
 
-    /** The op. */
+    /**
+     * The op.
+     */
     private BufferedImageOp op;
 
-    /** The raster. */
+    /**
+     * The raster.
+     */
     private WritableRaster raster;
 
-    /** The i data. */
+    /**
+     * The i data.
+     */
     private int iData[];
-    
-    /** The b data. */
+
+    /**
+     * The b data.
+     */
     private byte bData[];
 
-    /** The width. */
+    /**
+     * The width.
+     */
     private int width;
-    
-    /** The height. */
+
+    /**
+     * The height.
+     */
     private int height;
 
-    /** The cm. */
+    /**
+     * The cm.
+     */
     private ColorModel cm;
 
-    /** The forced rgb. */
+    /**
+     * The forced rgb.
+     */
     private boolean forcedRGB = false;
-    
-    /** The transfer type. */
+
+    /**
+     * The transfer type.
+     */
     private int transferType = DataBuffer.TYPE_UNDEFINED;
 
     /**
-     * Instantiates a new BufferedImageFilter with the specified
-     * BufferedImageOp operator.
+     * Instantiates a new BufferedImageFilter with the specified BufferedImageOp
+     * operator.
      * 
-     * @param op the specified BufferedImageOp operator.
-     * 
-     * @throws NullPointerException if BufferedImageOp is null.
+     * @param op
+     *            the specified BufferedImageOp operator.
+     * @throws NullPointerException
+     *             if BufferedImageOp is null.
      */
     public BufferedImageFilter(BufferedImageOp op) {
         if (op == null) {
@@ -79,11 +102,11 @@
     }
 
     /**
-     * Gets the BufferedImageOp operator associated with this 
+     * Gets the BufferedImageOp operator associated with this
      * BufferedImageFilter object.
      * 
-     * @return the BufferedImageOp associated with this 
-     * BufferedImageFilter object.
+     * @return the BufferedImageOp associated with this BufferedImageFilter
+     *         object.
      */
     public BufferedImageOp getBufferedImageOp() {
         return op;
@@ -110,22 +133,14 @@
     }
 
     @Override
-    public void setPixels(
-            int x, int y, int
-            w, int h,
-            ColorModel model, byte[] pixels,
-            int off, int scansize
-    ) {
+    public void setPixels(int x, int y, int w, int h, ColorModel model, byte[] pixels, int off,
+            int scansize) {
         setPixels(x, y, w, h, model, pixels, off, scansize, true);
     }
 
     @Override
-    public void setPixels(
-            int x, int y,
-            int w, int h,
-            ColorModel model, int[] pixels,
-            int off, int scansize
-    ) {
+    public void setPixels(int x, int y, int w, int h, ColorModel model, int[] pixels, int off,
+            int scansize) {
         setPixels(x, y, w, h, model, pixels, off, scansize, false);
     }
 
@@ -163,22 +178,27 @@
     /**
      * Sets the pixels.
      * 
-     * @param x the x
-     * @param y the y
-     * @param w the w
-     * @param h the h
-     * @param model the model
-     * @param pixels the pixels
-     * @param off the off
-     * @param scansize the scansize
-     * @param isByteData the is byte data
+     * @param x
+     *            the x.
+     * @param y
+     *            the y.
+     * @param w
+     *            the w.
+     * @param h
+     *            the h.
+     * @param model
+     *            the model.
+     * @param pixels
+     *            the pixels.
+     * @param off
+     *            the off.
+     * @param scansize
+     *            the scansize.
+     * @param isByteData
+     *            the is byte data.
      */
-    private void setPixels(
-            int x, int y,
-            int w, int h,
-            ColorModel model, Object pixels,
-            int off, int scansize, boolean isByteData
-    ) {
+    private void setPixels(int x, int y, int w, int h, ColorModel model, Object pixels, int off,
+            int scansize, boolean isByteData) {
         // Check bounds
         // Need to copy only the pixels that will fit into the destination area
         if (x < 0) {
@@ -216,23 +236,24 @@
 
         boolean canArraycopy;
         // Process pixels
-        switch(transferType) {
+        switch (transferType) {
             case DataBuffer.TYPE_UNDEFINED: {
                 if (isByteData) {
                     transferType = DataBuffer.TYPE_BYTE;
                     createRaster(transferType);
-                    //bData = new byte[width*height];
+                    // bData = new byte[width*height];
                     canArraycopy = !forcedRGB;
                     break;
                 }
                 transferType = DataBuffer.TYPE_INT;
                 createRaster(transferType);
-                //iData = new int[width*height];
+                // iData = new int[width*height];
                 canArraycopy = !forcedRGB || model.equals(ColorModel.getRGBdefault());
                 break;
             } // And proceed to copy the pixels
             case DataBuffer.TYPE_INT: {
-                if (isByteData) { // There are int data already but the new data are bytes
+                if (isByteData) { // There are int data already but the new data
+                    // are bytes
                     forceRGB();
                     canArraycopy = false;
                     break;
@@ -250,7 +271,8 @@
                 // RGB conversion
                 canArraycopy = false;
                 break;
-            } default: {
+            }
+            default: {
                 throw new IllegalStateException(Messages.getString("awt.06")); //$NON-NLS-1$
             }
         }
@@ -260,7 +282,7 @@
         int dstOffset = x + y * width;
 
         if (canArraycopy) {
-            Object dstArray = isByteData ? (Object) bData : (Object) iData;
+            Object dstArray = isByteData ? (Object)bData : (Object)iData;
             for (; off < maxOffset; off += scansize, dstOffset += width) {
                 System.arraycopy(pixels, off, dstArray, dstOffset, w);
             }
@@ -271,11 +293,8 @@
                 int dstPos = dstOffset;
                 int maxDstPos = dstOffset + w;
                 for (; dstPos < maxDstPos; dstPos++, srcPos++) {
-                    iData[dstPos] = model.getRGB(
-                            isByteData ?
-                            ((byte[])pixels)[srcPos] :
-                            ((int[])pixels)[srcPos]
-                    );
+                    iData[dstPos] = model.getRGB(isByteData ? ((byte[])pixels)[srcPos]
+                            : ((int[])pixels)[srcPos]);
                 }
             }
         }
@@ -287,22 +306,24 @@
     private void forceRGB() {
         if (!forcedRGB) {
             forcedRGB = true;
-            int size = width*height;
+            int size = width * height;
             int rgbData[] = new int[size];
 
             if (bData != null) {
-                for (int i=0; i<size; i++) {
+                for (int i = 0; i < size; i++) {
                     rgbData[i] = cm.getRGB(bData[i]);
                 }
             } else if (iData != null) {
-                for (int i=0; i<size; i++) {
+                for (int i = 0; i < size; i++) {
                     rgbData[i] = cm.getRGB(iData[i]);
                 }
             }
 
             cm = ColorModel.getRGBdefault();
             DataBufferInt db = new DataBufferInt(rgbData, size);
-            int masks[] = new int[] {0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000};
+            int masks[] = new int[] {
+                    0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000
+            };
             raster = Raster.createPackedRaster(db, width, height, width, masks, null);
             iData = accessor.getDataInt(db);
             bData = null;
@@ -327,11 +348,12 @@
     /**
      * Creates the raster.
      * 
-     * @param dataType the data type
+     * @param dataType
+     *            the data type.
      */
     private void createRaster(int dataType) {
         boolean createdValidBuffer = false;
-        try{
+        try {
             raster = cm.createCompatibleWritableRaster(width, height);
             int rasterType = raster.getDataBuffer().getDataType();
             if (rasterType == dataType) {
@@ -354,13 +376,13 @@
                         createdValidBuffer = false;
                 }
 
-                if(cm == ColorModel.getRGBdefault()){
+                if (cm == ColorModel.getRGBdefault()) {
                     forcedRGB = true;
                 }
             } else {
                 createdValidBuffer = false;
             }
-        } catch(Exception e) {
+        } catch (Exception e) {
             createdValidBuffer = false;
         }
 
diff --git a/awt/java/awt/image/BufferedImageOp.java b/awt/java/awt/image/BufferedImageOp.java
index 85b9f4e..883a39d 100644
--- a/awt/java/awt/image/BufferedImageOp.java
+++ b/awt/java/awt/image/BufferedImageOp.java
@@ -18,6 +18,7 @@
  * @author Alexey A. Petrenko
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.awt.RenderingHints;
@@ -27,32 +28,36 @@
 /**
  * The BufferedImageOp interface provides methods for performing transformations
  * from source data to destination data for BufferedImage objects. An object
- * implementing this interface can be passed into a BufferedImageFilter 
- * to operate on a BufferedImage.
+ * implementing this interface can be passed into a BufferedImageFilter to
+ * operate on a BufferedImage.
+ * 
+ * @since Android 1.0
  */
 public interface BufferedImageOp {
-    
+
     /**
      * Creates a destination image with the specified BufferedImage and
-     * ColorModel; this destination image is empty and has the correct size 
-     * and number of bands.   
+     * ColorModel; this destination image is empty and has the correct size and
+     * number of bands.
      * 
-     * @param src the source BufferedImage.
-     * @param destCM the destination ColorModel.
-     * 
+     * @param src
+     *            the source BufferedImage.
+     * @param destCM
+     *            the destination ColorModel.
      * @return the BufferedImage.
      */
     public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel destCM);
 
     /**
-     * Performs a filter operation on the source BufferedImage and stores 
-     * the resulting BufferedImage to the destination BufferedImage. If 
-     * the destination BufferedImage is null, a BufferedImage with an 
-     * appropriate ColorModel is created.
+     * Performs a filter operation on the source BufferedImage and stores the
+     * resulting BufferedImage to the destination BufferedImage. If the
+     * destination BufferedImage is null, a BufferedImage with an appropriate
+     * ColorModel is created.
      * 
-     * @param src the source BufferedImage.
-     * @param dest the destination BufferedImage, where the result is stored.
-     * 
+     * @param src
+     *            the source BufferedImage.
+     * @param dest
+     *            the destination BufferedImage, where the result is stored.
      * @return the filtered BufferedImage.
      */
     public BufferedImage filter(BufferedImage src, BufferedImage dest);
@@ -60,19 +65,20 @@
     /**
      * Gets the bounds of filtered image.
      * 
-     * @param src the source BufferedImage to be filtered.
-     * 
+     * @param src
+     *            the source BufferedImage to be filtered.
      * @return the rectangle bounds of filtered image.
      */
     public Rectangle2D getBounds2D(BufferedImage src);
 
     /**
-     * Gets the point of the destination image which corresponds
-     * to the specified point in the source image. 
+     * Gets the point of the destination image which corresponds to the
+     * specified point in the source image.
      * 
-     * @param srcPt the point of the source image.
-     * @param dstPt the point where the result will be stored.
-     * 
+     * @param srcPt
+     *            the point of the source image.
+     * @param dstPt
+     *            the point where the result will be stored.
      * @return the destination point.
      */
     public Point2D getPoint2D(Point2D srcPt, Point2D dstPt);
diff --git a/awt/java/awt/image/ByteLookupTable.java b/awt/java/awt/image/ByteLookupTable.java
index 043b533..27cee30 100644
--- a/awt/java/awt/image/ByteLookupTable.java
+++ b/awt/java/awt/image/ByteLookupTable.java
@@ -24,25 +24,29 @@
 package java.awt.image;
 
 /**
- * The ByteLookupTable class provides functionality for lookup operations, 
- * and is defined by an input byte array for bands or components of 
- * image and an offset value.
- * The offset value will be subtracted from the input values before 
- * indexing the input arrays. The output of a lookup operation is 
+ * The ByteLookupTable class provides functionality for lookup operations, and
+ * is defined by an input byte array for bands or components of image and an
+ * offset value. The offset value will be subtracted from the input values
+ * before indexing the input arrays. The output of a lookup operation is
  * represented as an array of unsigned bytes.
+ * 
+ * @since Android 1.0
  */
 public class ByteLookupTable extends LookupTable {
-    
-    /** The data. */
-    private byte data[][];
-    
+
     /**
-     * Instantiates a new ByteLookupTable with the specified offset value
-     * and the specified byte array which represents the lookup table for
-     * all bands.
+     * The data.
+     */
+    private byte data[][];
+
+    /**
+     * Instantiates a new ByteLookupTable with the specified offset value and
+     * the specified byte array which represents the lookup table for all bands.
      * 
-     * @param offset the offset value.
-     * @param data the data array of bytes.
+     * @param offset
+     *            the offset value.
+     * @param data
+     *            the data array of bytes.
      */
     public ByteLookupTable(int offset, byte[] data) {
         super(offset, 1);
@@ -54,12 +58,14 @@
     }
 
     /**
-     * Instantiates a new ByteLookupTable with the specified offset value
-     * and the specified byte array of arrays which represents the lookup table
-     * for each band.
+     * Instantiates a new ByteLookupTable with the specified offset value and
+     * the specified byte array of arrays which represents the lookup table for
+     * each band.
      * 
-     * @param offset the offset value.
-     * @param data the data array of bytes array for each band.
+     * @param offset
+     *            the offset value.
+     * @param data
+     *            the data array of bytes array for each band.
      */
     public ByteLookupTable(int offset, byte[][] data) {
         super(offset, data.length);
@@ -71,9 +77,9 @@
     }
 
     /**
-     * Gets the lookup table of this ByteLookupTable object. If 
-     * this ByteLookupTable object has one byte array for all bands, 
-     * the returned array length is one.
+     * Gets the lookup table of this ByteLookupTable object. If this
+     * ByteLookupTable object has one byte array for all bands, the returned
+     * array length is one.
      * 
      * @return the lookup table of this ByteLookupTable object.
      */
@@ -91,11 +97,11 @@
         int offset = getOffset();
         if (getNumComponents() == 1) {
             for (int i = 0; i < src.length; i++) {
-                dst[i] = data[0][src[i]-offset];
+                dst[i] = data[0][src[i] - offset];
             }
         } else {
             for (int i = 0; i < getNumComponents(); i++) {
-                dst[i] = data[i][src[i]-offset];
+                dst[i] = data[i][src[i] - offset];
             }
         }
 
@@ -103,14 +109,14 @@
     }
 
     /**
-     * Returns a byte array which contains samples of the specified
-     * pixel which is translated with the lookup table of this 
-     * ByteLookupTable object. The resulted array is stored to
-     * the dst array.
+     * Returns a byte array which contains samples of the specified pixel which
+     * is translated with the lookup table of this ByteLookupTable object. The
+     * resulted array is stored to the dst array.
      * 
-     * @param src the source array.
-     * @param dst the destination array where the result can be stored.
-     * 
+     * @param src
+     *            the source array.
+     * @param dst
+     *            the destination array where the result can be stored.
      * @return the byte array of translated samples of a pixel.
      */
     public byte[] lookupPixel(byte[] src, byte[] dst) {
@@ -121,11 +127,11 @@
         int offset = getOffset();
         if (getNumComponents() == 1) {
             for (int i = 0; i < src.length; i++) {
-                dst[i] = data[0][src[i]-offset];
+                dst[i] = data[0][src[i] - offset];
             }
         } else {
             for (int i = 0; i < getNumComponents(); i++) {
-                dst[i] = data[i][src[i]-offset];
+                dst[i] = data[i][src[i] - offset];
             }
         }
 
diff --git a/awt/java/awt/image/ColorConvertOp.java b/awt/java/awt/image/ColorConvertOp.java
index 6d503d7..1a1700b 100644
--- a/awt/java/awt/image/ColorConvertOp.java
+++ b/awt/java/awt/image/ColorConvertOp.java
@@ -17,9 +17,9 @@
 /** 
  * @author Oleg V. Khaschansky
  * @version $Revision$
- */  
-package java.awt.image;
+ */
 
+package java.awt.image;
 
 import java.awt.Graphics2D;
 import java.awt.Point;
@@ -37,76 +37,94 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The ColorConvertOp class converts the pixels of the data in the
- * source image with the specified ColorSpace objects or an array 
- * of ICC_Profile objects. The result pixels are scaled to the precision
- * of the destination image.
+ * The ColorConvertOp class converts the pixels of the data in the source image
+ * with the specified ColorSpace objects or an array of ICC_Profile objects. The
+ * result pixels are scaled to the precision of the destination image.
+ * 
+ * @since Android 1.0
  */
 public class ColorConvertOp implements BufferedImageOp, RasterOp {
     // Unused but required by interfaces
-    /** The rendering hints. */
+    /**
+     * The rendering hints.
+     */
     RenderingHints renderingHints;
-        
-    // Sequence consisting of ColorSpace and ICC_Profile elements
-    /** The conversion sequence. */
-    Object conversionSequence[] = new ICC_Profile[0]; // To eliminate checks for null
-    
-    // Not null if ColorConvertOp is constructed from the array of ICC profiles
-    /** The mid profiles. */
-    private ICC_Profile midProfiles[];   
 
-    /** The cc. */
+    // Sequence consisting of ColorSpace and ICC_Profile elements
+    /**
+     * The conversion sequence.
+     */
+    Object conversionSequence[] = new ICC_Profile[0]; // To eliminate checks for
+
+    // null
+
+    // Not null if ColorConvertOp is constructed from the array of ICC profiles
+    /**
+     * The mid profiles.
+     */
+    private ICC_Profile midProfiles[];
+
+    /**
+     * The cc.
+     */
     private final ColorConverter cc = new ColorConverter();
-    
-    /** The t creator. */
+
+    /**
+     * The t creator.
+     */
     private final ICC_TransfomCreator tCreator = new ICC_TransfomCreator();
-    
-    /** The is icc. */
+
+    /**
+     * The is icc.
+     */
     private boolean isICC = true;
-    
-    
+
     // Cached ICC_Transform
     /**
      * The Class ICC_TransfomCreator.
      */
     private class ICC_TransfomCreator {
-        
-        /** The transform. */
+
+        /**
+         * The transform.
+         */
         private ICC_Transform transform;
-        
-        /** The max components. */
+
+        /**
+         * The max components.
+         */
         private int maxComponents;
-        
+
         /**
          * For the full ICC case.
          * 
-         * @param src the src
-         * @param dst the dst
-         * @param convSeq the conv seq
-         * 
-         * @return the transform
+         * @param src
+         *            the src.
+         * @param dst
+         *            the dst.
+         * @param convSeq
+         *            the conv seq.
+         * @return the transform.
          */
         public ICC_Transform getTransform(ICC_Profile src, ICC_Profile dst, ICC_Profile convSeq[]) {
-            if (transform != null &&
-               src == transform.getSrc() && 
-               dst == transform.getDst()) {
+            if (transform != null && src == transform.getSrc() && dst == transform.getDst()) {
                 return transform;
             }
-            
+
             int length = convSeq.length;
             int srcFlg = 0, dstFlg = 0;
-            
+
             if (length == 0 || src != convSeq[0]) {
                 if (src != null) {
                     srcFlg = 1; // need src profile
                 }
             }
-            if (length == 0 || dst != convSeq[length-1]) {
+            if (length == 0 || dst != convSeq[length - 1]) {
                 if (dst != null) {
                     dstFlg = 1; // need dst profile
                 }
             }
-            
+
             ICC_Profile profiles[];
             int nProfiles = length + srcFlg + dstFlg;
             if (nProfiles == length) {
@@ -117,30 +135,31 @@
                 if (srcFlg != 0) {
                     profiles[pos++] = src;
                 }
-                for (int i=0; i<length; i++) {
+                for (int i = 0; i < length; i++) {
                     profiles[pos++] = convSeq[i];
                 }
                 if (dstFlg != 0) {
                     profiles[pos++] = dst;
                 }
             }
-            
+
             return transform = new ICC_Transform(profiles);
         }
-        
+
         /**
-         * Used only when there are non-ICC color spaces.
-         * Returns sequence of non-ICC color spaces and ICC transforms
-         * made from src, dst and conversionSequence.
+         * Used only when there are non-ICC color spaces. Returns sequence of
+         * non-ICC color spaces and ICC transforms made from src, dst and
+         * conversionSequence.
          * 
-         * @param src the src
-         * @param dst the dst
-         * 
-         * @return the sequence
+         * @param src
+         *            the src.
+         * @param dst
+         *            the dst.
+         * @return the sequence.
          */
         public Object[] getSequence(Object src, Object dst) {
             ArrayList<Object> profiles = new ArrayList<Object>(10);
-            ArrayList<Object> sequence = new ArrayList<Object>(10);         
+            ArrayList<Object> sequence = new ArrayList<Object>(10);
 
             // We need this profile anyway
             ICC_Profile xyzProfile = ICC_Profile.getInstance(ColorSpace.CS_CIEXYZ);
@@ -149,41 +168,42 @@
             int conversionLength = conversionSequence.length;
             if (conversionLength > 0) {
                 conversionFirst = conversionSequence[0];
-                conversionLast = conversionSequence[conversionLength-1];
+                conversionLast = conversionSequence[conversionLength - 1];
             }
 
             boolean iccSequenceStarted = false;
-            
+
             if (src != conversionFirst && src != null) {
                 if (src instanceof ICC_Profile) {
                     profiles.add(src);
                     iccSequenceStarted = true;
                 } else {
                     profiles.add(xyzProfile);
-                    sequence.add(src); // Add non-ICC color space to the sequence
-                } 
+                    sequence.add(src); // Add non-ICC color space to the
+                    // sequence
+                }
             } else {
                 profiles.add(xyzProfile);
             }
-            
-            for (int i=0; i<conversionLength; i++) {
+
+            for (int i = 0; i < conversionLength; i++) {
                 if (conversionSequence[i] instanceof ICC_Profile) {
                     profiles.add(conversionSequence[i]);
                     iccSequenceStarted = true;
                 } else if (iccSequenceStarted) {
                     profiles.add(xyzProfile);
-                    
+
                     // Eliminate same profiles if there are any
                     // (e.g. xyzProfile may occur several times)
                     Object prev = profiles.get(0);
-                    for (int k=1; k<profiles.size(); k++) {                     
+                    for (int k = 1; k < profiles.size(); k++) {
                         if (prev == profiles.get(k)) {
                             k--;
                             profiles.remove(k);
                         }
                         prev = profiles.get(k);
                     }
-                    
+
                     // If only one profile left we skip the transform -
                     // it can be only CIEXYZ
                     if (profiles.size() > 1) {
@@ -192,109 +212,111 @@
                         // Add non-ICC color space to the sequence
                         sequence.add(conversionSequence[i]);
                     }
-                    
+
                     profiles.clear();
                     profiles.add(xyzProfile);
-                    iccSequenceStarted = false; // Sequence of ICC profiles is processed
+                    iccSequenceStarted = false; // Sequence of ICC profiles is
+                    // processed
                 } else { // Add non-ICC color space to the sequence
-                    sequence.add(conversionSequence[i]); 
-                }               
+                    sequence.add(conversionSequence[i]);
+                }
             }
-            
-            if (dst != conversionLast && dst != null) { // Add last profile if needed
+
+            if (dst != conversionLast && dst != null) { // Add last profile if
+                // needed
                 if (dst instanceof ICC_Profile) {
                     profiles.add(dst);
                     iccSequenceStarted = true;
                 } else if (iccSequenceStarted) {
                     profiles.add(xyzProfile);
                 } else {
-                    sequence.add(dst); // Add last non-ICC color space to the sequence
+                    sequence.add(dst); // Add last non-ICC color space to the
+                    // sequence
                 }
             }
-            
+
             if (iccSequenceStarted) { // Make last transform if needed
                 sequence.add(new ICC_Transform(profiles.toArray(new ICC_Profile[0])));
                 if (dst != null && !(dst instanceof ICC_Profile)) {
                     sequence.add(dst); // Add last non-ICC color space to the
-                                        // sequence
+                    // sequence
                 }
             }
 
             // Calculate max number of components
             // This number will be used for memory allocation
             maxComponents = 0;
-            Object o;           
-            for (int i=0, size = sequence.size(); i<size; i++) {
+            Object o;
+            for (int i = 0, size = sequence.size(); i < size; i++) {
                 o = sequence.get(i);
                 if (o instanceof ICC_Transform) {
-                    ICC_Transform t = (ICC_Transform) o; 
-                    maxComponents = 
-                        (maxComponents > t.getNumInputChannels() + 1) ?
-                            maxComponents : 
-                            t.getNumInputChannels() + 1;
-                    maxComponents = 
-                        (maxComponents > t.getNumOutputChannels() + 1) ?
-                            maxComponents : 
-                            t.getNumOutputChannels() + 1;
+                    ICC_Transform t = (ICC_Transform)o;
+                    maxComponents = (maxComponents > t.getNumInputChannels() + 1) ? maxComponents
+                            : t.getNumInputChannels() + 1;
+                    maxComponents = (maxComponents > t.getNumOutputChannels() + 1) ? maxComponents
+                            : t.getNumOutputChannels() + 1;
                 } else {
-                    ColorSpace cs = (ColorSpace) o;
-                    maxComponents = 
-                        (maxComponents > cs.getNumComponents() + 1) ?
-                            maxComponents : 
-                            cs.getNumComponents() + 1;
-                }               
+                    ColorSpace cs = (ColorSpace)o;
+                    maxComponents = (maxComponents > cs.getNumComponents() + 1) ? maxComponents
+                            : cs.getNumComponents() + 1;
+                }
             }
-            
+
             return sequence.toArray();
         }
     }
-    
+
     /**
-     * Instantiates a new ColorConvertOp object using two specified
-     * ColorSpace objects.
+     * Instantiates a new ColorConvertOp object using two specified ColorSpace
+     * objects.
      * 
-     * @param srcCS the source ColorSpace.
-     * @param dstCS the destination ColorSpace.
-     * @param hints the RenderingHints object used for 
-     * the color conversion, or null.
+     * @param srcCS
+     *            the source ColorSpace.
+     * @param dstCS
+     *            the destination ColorSpace.
+     * @param hints
+     *            the RenderingHints object used for the color conversion, or
+     *            null.
      */
     public ColorConvertOp(ColorSpace srcCS, ColorSpace dstCS, RenderingHints hints) {
         if (srcCS == null || dstCS == null) {
             throw new NullPointerException(Messages.getString("awt.25B")); //$NON-NLS-1$
         }
-        
+
         renderingHints = hints;
-        
+
         boolean srcICC = srcCS instanceof ICC_ColorSpace;
         boolean dstICC = dstCS instanceof ICC_ColorSpace;
-        
+
         if (srcICC && dstICC) {
             conversionSequence = new ICC_Profile[2];
         } else {
             conversionSequence = new Object[2];
             isICC = false;
         }
-        
+
         if (srcICC) {
-            conversionSequence[0] = ((ICC_ColorSpace) srcCS).getProfile();
+            conversionSequence[0] = ((ICC_ColorSpace)srcCS).getProfile();
         } else {
             conversionSequence[0] = srcCS;
         }
-        
+
         if (dstICC) {
-            conversionSequence[1] = ((ICC_ColorSpace) dstCS).getProfile();
+            conversionSequence[1] = ((ICC_ColorSpace)dstCS).getProfile();
         } else {
             conversionSequence[1] = dstCS;
         }
     }
 
     /**
-     * Instantiates a new ColorConvertOp object from the specified 
-     * ICC_Profile objects.
+     * Instantiates a new ColorConvertOp object from the specified ICC_Profile
+     * objects.
      * 
-     * @param profiles the array of ICC_Profile objects.
-     * @param hints the RenderingHints object used for 
-     * the color conversion, or null.
+     * @param profiles
+     *            the array of ICC_Profile objects.
+     * @param hints
+     *            the RenderingHints object used for the color conversion, or
+     *            null.
      */
     public ColorConvertOp(ICC_Profile profiles[], RenderingHints hints) {
         if (profiles == null) {
@@ -302,37 +324,39 @@
         }
 
         renderingHints = hints;
-        
+
         // This array is not used in the program logic, so don't need to copy it
         // Store it only to return back
-        midProfiles = profiles;  
-        
+        midProfiles = profiles;
+
         conversionSequence = new ICC_Profile[midProfiles.length];
-        
+
         // Add profiles to the conversion sequence
-        for (int i=0, length=midProfiles.length; i<length; i++) {
+        for (int i = 0, length = midProfiles.length; i < length; i++) {
             conversionSequence[i] = midProfiles[i];
-        }       
+        }
     }
 
     /**
-     * Instantiates a new ColorConvertOp object using the specified
-     * ColorSpace object.
+     * Instantiates a new ColorConvertOp object using the specified ColorSpace
+     * object.
      * 
-     * @param cs the destination ColorSpace or an intermediate ColorSpace.
-     * @param hints the RenderingHints object used for 
-     * the color conversion, or null.
+     * @param cs
+     *            the destination ColorSpace or an intermediate ColorSpace.
+     * @param hints
+     *            the RenderingHints object used for the color conversion, or
+     *            null.
      */
     public ColorConvertOp(ColorSpace cs, RenderingHints hints) {
         if (cs == null) {
             throw new NullPointerException(Messages.getString("awt.25B")); //$NON-NLS-1$
         }
-        
+
         renderingHints = hints;
-                        
+
         if (cs instanceof ICC_ColorSpace) {
             conversionSequence = new ICC_Profile[1];
-            conversionSequence[0] = ((ICC_ColorSpace) cs).getProfile();
+            conversionSequence[0] = ((ICC_ColorSpace)cs).getProfile();
         } else {
             conversionSequence = new Object[1];
             conversionSequence[0] = cs;
@@ -341,11 +365,12 @@
     }
 
     /**
-     * Instantiates a new ColorConvertOp object which converts from 
-     * a source color space to a destination color space.
+     * Instantiates a new ColorConvertOp object which converts from a source
+     * color space to a destination color space.
      * 
-     * @param hints the RenderingHints object used for 
-     * the color conversion, or null.
+     * @param hints
+     *            the RenderingHints object used for the color conversion, or
+     *            null.
      */
     public ColorConvertOp(RenderingHints hints) {
         renderingHints = hints;
@@ -360,26 +385,26 @@
         int nSrcColorComps, nDstColorComps;
         Object first = conversionSequence[0];
         Object last = conversionSequence[conversionSequence.length - 1];
-        
+
         // Get the number of input/output color components
         if (isICC) {
-            srcPf = (ICC_Profile) first;
-            dstPf = (ICC_Profile) last;
+            srcPf = (ICC_Profile)first;
+            dstPf = (ICC_Profile)last;
             nSrcColorComps = srcPf.getNumComponents();
             nDstColorComps = dstPf.getNumComponents();
         } else {
             if (first instanceof ICC_Profile) {
-                srcPf = (ICC_Profile) first;
+                srcPf = (ICC_Profile)first;
                 nSrcColorComps = srcPf.getNumComponents();
             } else {
-                nSrcColorComps = ((ColorSpace) first).getNumComponents();
+                nSrcColorComps = ((ColorSpace)first).getNumComponents();
             }
-            
+
             if (last instanceof ICC_Profile) {
-                dstPf = (ICC_Profile) last;
+                dstPf = (ICC_Profile)last;
                 nDstColorComps = dstPf.getNumComponents();
             } else {
-                nDstColorComps = ((ColorSpace) last).getNumComponents();
+                nDstColorComps = ((ColorSpace)last).getNumComponents();
             }
         }
 
@@ -387,51 +412,45 @@
         // transforms and with each other
         if (src.getNumBands() != nSrcColorComps) {
             // awt.25E=Incorrect number of source raster bands. Should be equal
-            //          to the number of color components of source colorspace.
+            // to the number of color components of source colorspace.
             throw new IllegalArgumentException(Messages.getString("awt.25E")); //$NON-NLS-1$
         }
-        
+
         if (dst != null) { // Check destination raster
-            if (dst.getNumBands() !=
-                nDstColorComps) {
+            if (dst.getNumBands() != nDstColorComps) {
                 // awt.25F=Incorrect number of destination raster bands. Should
-                //          be equal to the number of color components of destination
-                //          colorspace.
+                // be equal to the number of color components of destination
+                // colorspace.
                 throw new IllegalArgumentException(Messages.getString("awt.25F")); //$NON-NLS-1$
             }
-            
-            if (src.getWidth() != dst.getWidth() ||
-               src.getHeight() != dst.getHeight()) {
+
+            if (src.getWidth() != dst.getWidth() || src.getHeight() != dst.getHeight()) {
                 throw new IllegalArgumentException(Messages.getString("awt.260")); //$NON-NLS-1$
             }
-            
+
         } else {
-          dst = createCompatibleDestRaster(src);
+            dst = createCompatibleDestRaster(src);
         }
-        
+
         if (isICC) {
             // Create transform
-            ICC_Transform t = tCreator.getTransform(srcPf, dstPf, 
-                    (ICC_Profile[])conversionSequence); 
-            cc.translateColor(t, src, dst);         
+            ICC_Transform t = tCreator
+                    .getTransform(srcPf, dstPf, (ICC_Profile[])conversionSequence);
+            cc.translateColor(t, src, dst);
         } else {
             Object[] sequence = tCreator.getSequence(null, null);
-            
+
             // Get data from the source raster
             ColorScaler scaler = new ColorScaler();
             scaler.loadScalingData(src, null);
             float tmpData[][] = scaler.scaleNormalize(src);
-            
+
             // Get source and destination color spaces
-            ColorSpace srcCS = (srcPf == null) ? 
-                    (ColorSpace) first:
-                    new ICC_ColorSpace(srcPf);
-            ColorSpace dstCS = (dstPf == null) ? 
-                    (ColorSpace) last:
-                    new ICC_ColorSpace(dstPf);
-                    
+            ColorSpace srcCS = (srcPf == null) ? (ColorSpace)first : new ICC_ColorSpace(srcPf);
+            ColorSpace dstCS = (dstPf == null) ? (ColorSpace)last : new ICC_ColorSpace(dstPf);
+
             applySequence(sequence, tmpData, srcCS, dstCS);
-            
+
             scaler.loadScalingData(dst, null);
             scaler.unscaleNormalized(dst, tmpData);
         }
@@ -442,36 +461,27 @@
     public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel destCM) {
         // If destination color model is passed only one line needed
         if (destCM != null) {
-            return new BufferedImage(destCM,
-                    destCM.createCompatibleWritableRaster(src.getWidth(), src.getHeight()),
-                    destCM.isAlphaPremultiplied(), 
-                    null);
+            return new BufferedImage(destCM, destCM.createCompatibleWritableRaster(src.getWidth(),
+                    src.getHeight()), destCM.isAlphaPremultiplied(), null);
         }
-        
+
         int nSpaces = conversionSequence.length;
-        
+
         if (nSpaces < 1) {
             throw new IllegalArgumentException(Messages.getString("awt.261")); //$NON-NLS-1$
         }
-        
+
         // Get destination color space
-        Object destination = conversionSequence[nSpaces-1];
-        ColorSpace dstCS = 
-            (destination instanceof ColorSpace) ? 
-                    (ColorSpace) destination : 
-                    new ICC_ColorSpace((ICC_Profile) destination);
-        
-        ColorModel srcCM = src.getColorModel();     
-        ColorModel dstCM = new ComponentColorModel(dstCS, 
-                srcCM.hasAlpha(), 
-                srcCM.isAlphaPremultiplied(),
-                srcCM.getTransparency(),
-                srcCM.getTransferType());
-        
-        return new BufferedImage(dstCM,
-                destCM.createCompatibleWritableRaster(src.getWidth(), src.getHeight()),
-                destCM.isAlphaPremultiplied(), 
-                null);
+        Object destination = conversionSequence[nSpaces - 1];
+        ColorSpace dstCS = (destination instanceof ColorSpace) ? (ColorSpace)destination
+                : new ICC_ColorSpace((ICC_Profile)destination);
+
+        ColorModel srcCM = src.getColorModel();
+        ColorModel dstCM = new ComponentColorModel(dstCS, srcCM.hasAlpha(), srcCM
+                .isAlphaPremultiplied(), srcCM.getTransparency(), srcCM.getTransferType());
+
+        return new BufferedImage(dstCM, destCM.createCompatibleWritableRaster(src.getWidth(), src
+                .getHeight()), destCM.isAlphaPremultiplied(), null);
     }
 
     public final BufferedImage filter(BufferedImage src, BufferedImage dst) {
@@ -481,32 +491,31 @@
 
         ColorModel srcCM = src.getColorModel();
         // First handle index color model
-        if (srcCM instanceof IndexColorModel) {            
-            src = ((IndexColorModel) srcCM).convertToIntDiscrete(src.getRaster(), false);
+        if (srcCM instanceof IndexColorModel) {
+            src = ((IndexColorModel)srcCM).convertToIntDiscrete(src.getRaster(), false);
         }
-        ColorSpace srcCS = srcCM.getColorSpace();        
-                
+        ColorSpace srcCS = srcCM.getColorSpace();
+
         BufferedImage res;
         boolean isDstIndex = false;
         if (dst != null) {
-          
-          if (src.getWidth() != dst.getWidth() ||
-             src.getHeight() != dst.getHeight()) {
-              throw new IllegalArgumentException(Messages.getString("awt.263")); //$NON-NLS-1$
-          }
+
+            if (src.getWidth() != dst.getWidth() || src.getHeight() != dst.getHeight()) {
+                throw new IllegalArgumentException(Messages.getString("awt.263")); //$NON-NLS-1$
+            }
 
             if (dst.getColorModel() instanceof IndexColorModel) {
                 isDstIndex = true;
                 res = createCompatibleDestImage(src, null);
-            } else {                
+            } else {
                 res = dst;
-            }           
+            }
         } else {
             res = createCompatibleDestImage(src, null);
         }
         ColorModel dstCM = res.getColorModel();
         ColorSpace dstCS = dstCM.getColorSpace();
-        
+
         ICC_Profile srcPf = null, dstPf = null;
         if (srcCS instanceof ICC_ColorSpace) {
             srcPf = ((ICC_ColorSpace)srcCS).getProfile();
@@ -514,31 +523,27 @@
         if (dstCS instanceof ICC_ColorSpace) {
             dstPf = ((ICC_ColorSpace)dstCS).getProfile();
         }
-        
+
         boolean isFullICC = isICC && srcPf != null && dstPf != null;
-        
+
         if (isFullICC) {
-            ICC_Transform t =
-                    tCreator.getTransform(srcPf, dstPf, (ICC_Profile[]) conversionSequence);
+            ICC_Transform t = tCreator
+                    .getTransform(srcPf, dstPf, (ICC_Profile[])conversionSequence);
             cc.translateColor(t, src, res);
         } else { // Perform non-ICC transform
-            Object sequence[] = tCreator.getSequence(
-                    srcPf == null ? (Object) srcCS : srcPf,
-                    dstPf == null ? (Object) dstCS : dstPf);            
-            
+            Object sequence[] = tCreator.getSequence(srcPf == null ? (Object)srcCS : srcPf,
+                    dstPf == null ? (Object)dstCS : dstPf);
+
             int srcW = src.getWidth();
             int srcH = src.getHeight();
-            int numPixels = srcW*srcH;
+            int numPixels = srcW * srcH;
 
-            // Load all pixel data into array tmpData 
-            float tmpData[][] = 
-                new float[numPixels][tCreator.maxComponents];
-            for (int row=0, dataPos=0; row<srcW; row++) {
-                for (int col=0; col<srcH; col++) {
-                    tmpData[dataPos] = 
-                        srcCM.getNormalizedComponents(
-                                src.getRaster().getDataElements(row, col, null), 
-                                tmpData[dataPos], 0);
+            // Load all pixel data into array tmpData
+            float tmpData[][] = new float[numPixels][tCreator.maxComponents];
+            for (int row = 0, dataPos = 0; row < srcW; row++) {
+                for (int col = 0; col < srcH; col++) {
+                    tmpData[dataPos] = srcCM.getNormalizedComponents(src.getRaster()
+                            .getDataElements(row, col, null), tmpData[dataPos], 0);
                     dataPos++;
                 }
             }
@@ -548,11 +553,11 @@
             int alphaIdx = srcCM.numComponents - 1;
             if (srcCM.hasAlpha() && dstCM.hasAlpha()) {
                 alpha = new float[numPixels];
-                for (int i=0; i<numPixels; i++) {
+                for (int i = 0; i < numPixels; i++) {
                     alpha[i] = tmpData[i][alphaIdx];
                 }
             }
-            
+
             // Translate colors
             applySequence(sequence, tmpData, srcCS, dstCS);
 
@@ -560,24 +565,24 @@
             if (dstCM.hasAlpha()) {
                 alphaIdx = dstCM.numComponents - 1;
                 if (alpha != null) {
-                    for (int i=0; i<numPixels; i++) {
+                    for (int i = 0; i < numPixels; i++) {
                         tmpData[i][alphaIdx] = alpha[i];
-                    }                   
+                    }
                 } else {
-                    for (int i=0; i<numPixels; i++) {
+                    for (int i = 0; i < numPixels; i++) {
                         tmpData[i][alphaIdx] = 1f;
-                    }                                       
+                    }
                 }
             }
-            
-            // Store data back to the image            
-            for (int row=0, dataPos=0; row<srcW; row++) {
-                for (int col=0; col<srcH; col++) {
-                    res.getRaster().setDataElements(row, col, 
-                            dstCM.getDataElements(tmpData[dataPos++], 0 , null));
+
+            // Store data back to the image
+            for (int row = 0, dataPos = 0; row < srcW; row++) {
+                for (int col = 0; col < srcH; col++) {
+                    res.getRaster().setDataElements(row, col,
+                            dstCM.getDataElements(tmpData[dataPos++], 0, null));
                 }
             }
-        }               
+        }
 
         if (isDstIndex) { // Convert image into indexed color
             Graphics2D g2d = dst.createGraphics();
@@ -585,59 +590,59 @@
             g2d.dispose();
             return dst;
         }
-        
+
         return res;
     }
 
     /**
      * Apply sequence.
      * 
-     * @param sequence the sequence
-     * @param tmpData the tmp data
-     * @param srcCS the src cs
-     * @param dstCS the dst cs
+     * @param sequence
+     *            the sequence.
+     * @param tmpData
+     *            the tmp data.
+     * @param srcCS
+     *            the src cs.
+     * @param dstCS
+     *            the dst cs.
      */
-    private void applySequence(
-            Object sequence[], 
-            float tmpData[][],
-            ColorSpace srcCS, 
-            ColorSpace dstCS
-            ) {
+    private void applySequence(Object sequence[], float tmpData[][], ColorSpace srcCS,
+            ColorSpace dstCS) {
         ColorSpace xyzCS = ColorSpace.getInstance(ColorSpace.CS_CIEXYZ);
-        
+
         int numPixels = tmpData.length;
-        
+
         // First transform...
         if (sequence[0] instanceof ICC_Transform) { // ICC
             ICC_Transform t = (ICC_Transform)sequence[0];
             cc.translateColor(t, tmpData, srcCS, xyzCS, numPixels);
         } else { // non ICC
-            for (int k=0; k<numPixels; k++) {
-                tmpData[k] = srcCS.toCIEXYZ(tmpData[k]); 
+            for (int k = 0; k < numPixels; k++) {
+                tmpData[k] = srcCS.toCIEXYZ(tmpData[k]);
             }
             cc.loadScalingData(xyzCS); // prepare for scaling XYZ
         }
-        
+
         for (Object element : sequence) {
             if (element instanceof ICC_Transform) {
                 ICC_Transform t = (ICC_Transform)element;
                 cc.translateColor(t, tmpData, null, null, numPixels);
             } else {
-                ColorSpace cs = (ColorSpace) element;
-                for (int k=0; k<numPixels; k++) {
+                ColorSpace cs = (ColorSpace)element;
+                for (int k = 0; k < numPixels; k++) {
                     tmpData[k] = cs.fromCIEXYZ(tmpData[k]);
-                    tmpData[k] = cs.toCIEXYZ(tmpData[k]); 
+                    tmpData[k] = cs.toCIEXYZ(tmpData[k]);
                 }
             }
         }
-        
+
         // Last transform...
-        if (sequence[sequence.length-1] instanceof ICC_Transform) { // ICC
-            ICC_Transform t = (ICC_Transform)sequence[sequence.length-1];
+        if (sequence[sequence.length - 1] instanceof ICC_Transform) { // ICC
+            ICC_Transform t = (ICC_Transform)sequence[sequence.length - 1];
             cc.translateColor(t, tmpData, xyzCS, dstCS, numPixels);
         } else { // non ICC
-            for (int k=0; k<numPixels; k++) {
-                tmpData[k] = dstCS.fromCIEXYZ(tmpData[k]); 
+            for (int k = 0; k < numPixels; k++) {
+                tmpData[k] = dstCS.fromCIEXYZ(tmpData[k]);
             }
         }
     }
@@ -647,38 +652,32 @@
             dstPt.setLocation(srcPt);
             return dstPt;
         }
-        return new Point2D.Float((float) srcPt.getX(), (float) srcPt.getY());
+        return new Point2D.Float((float)srcPt.getX(), (float)srcPt.getY());
     }
 
     public WritableRaster createCompatibleDestRaster(Raster src) {
         int nComps = 0;
         int nSpaces = conversionSequence.length;
-        
+
         if (nSpaces < 2) {
             throw new IllegalArgumentException(Messages.getString("awt.261")); //$NON-NLS-1$
         }
-        
-        Object lastCS = conversionSequence[nSpaces-1];
+
+        Object lastCS = conversionSequence[nSpaces - 1];
         if (lastCS instanceof ColorSpace) {
-            nComps = ((ColorSpace) lastCS).getNumComponents();
+            nComps = ((ColorSpace)lastCS).getNumComponents();
         } else {
-            nComps = ((ICC_Profile) lastCS).getNumComponents(); 
+            nComps = ((ICC_Profile)lastCS).getNumComponents();
         }
-        
+
         // Calculate correct data type
         int dstDataType = src.getDataBuffer().getDataType();
-        if (dstDataType != DataBuffer.TYPE_BYTE &&
-           dstDataType != DataBuffer.TYPE_SHORT) {
-                dstDataType = DataBuffer.TYPE_SHORT;
+        if (dstDataType != DataBuffer.TYPE_BYTE && dstDataType != DataBuffer.TYPE_SHORT) {
+            dstDataType = DataBuffer.TYPE_SHORT;
         }
-        
-        return Raster.createInterleavedRaster(
-                dstDataType, 
-                src.getWidth(),
-                src.getHeight(),
-                nComps,
-                new Point(src.getMinX(), src.getMinY())
-            );
+
+        return Raster.createInterleavedRaster(dstDataType, src.getWidth(), src.getHeight(), nComps,
+                new Point(src.getMinX(), src.getMinY()));
     }
 
     public final Rectangle2D getBounds2D(Raster src) {
@@ -690,13 +689,13 @@
     }
 
     /**
-     * Gets an array of ICC_Profiles objects which constructs
-     * this ColorConvertOp object or returns null if this ColorConvertOp 
-     * is not constructed from array of ICC_Profiles.
+     * Gets an array of ICC_Profiles objects which constructs this
+     * ColorConvertOp object or returns null if this ColorConvertOp is not
+     * constructed from array of ICC_Profiles.
      * 
-     * @return an array of ICC_Profiles objects which constructs
-     * this ColorConvertOp object or returns null if this ColorConvertOp 
-     * is not constructed from array of ICC_Profiles.
+     * @return an array of ICC_Profiles objects which constructs this
+     *         ColorConvertOp object or returns null if this ColorConvertOp is
+     *         not constructed from array of ICC_Profiles.
      */
     public final ICC_Profile[] getICC_Profiles() {
         if (midProfiles != null) {
@@ -707,5 +706,5 @@
 
     public final RenderingHints getRenderingHints() {
         return renderingHints;
-    }    
+    }
 }
diff --git a/awt/java/awt/image/ColorModel.java b/awt/java/awt/image/ColorModel.java
index 945c087..1b084e1 100644
--- a/awt/java/awt/image/ColorModel.java
+++ b/awt/java/awt/image/ColorModel.java
@@ -18,6 +18,7 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.awt.Transparency;
@@ -27,62 +28,95 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Class ColorModel.
+ * The class ColorModel.
+ * 
+ * @since Android 1.0
  */
 public abstract class ColorModel implements Transparency {
 
-    /** The pixel_bits. */
-    protected int pixel_bits;  // Pixel length in bits
+    /**
+     * The pixel_bits.
+     */
+    protected int pixel_bits; // Pixel length in bits
 
-    /** The transfer type. */
+    /**
+     * The transfer type.
+     */
     protected int transferType;
 
-    /** The cs. */
+    /**
+     * The cs.
+     */
     ColorSpace cs;
 
-    /** The has alpha. */
+    /**
+     * The has alpha.
+     */
     boolean hasAlpha;
 
-    /** The is alpha premultiplied. */
+    /**
+     * The is alpha premultiplied.
+     */
     boolean isAlphaPremultiplied;
 
-    /** The transparency. */
+    /**
+     * The transparency.
+     */
     int transparency;
 
-    /** The num color components. */
+    /**
+     * The num color components.
+     */
     int numColorComponents;
 
-    /** The num components. */
+    /**
+     * The num components.
+     */
     int numComponents;
 
-    /** The bits. */
-    int[] bits;             // Array of components masks 
+    /**
+     * The bits.
+     */
+    int[] bits; // Array of components masks
 
-    /** The max values. */
+    /**
+     * The max values.
+     */
     int[] maxValues = null; // Max values that may be represent by color
-                            // components
 
-    /** The max bit length. */
-    int maxBitLength;       // Max length color components in bits
+    // components
 
-    /** The RG bdefault. */
+    /**
+     * The max bit length.
+     */
+    int maxBitLength; // Max length color components in bits
+
+    /**
+     * The RG bdefault.
+     */
     private static ColorModel RGBdefault;
 
     /**
      * Instantiates a new color model with the specified values.
      * 
-     * @param pixel_bits the pixel length in bits
-     * @param bits the array of component masks
-     * @param cspace the colorspace
-     * @param hasAlpha whether the color model has alpha
-     * @param isAlphaPremultiplied whether the alpha is premultiplied
-     * @param transparency the transparency strategy, @see java.awt.Transparency
-     * @param transferType the transfer type (primitive java type 
-     * to use for the components)
+     * @param pixel_bits
+     *            the pixel length in bits.
+     * @param bits
+     *            the array of component masks.
+     * @param cspace
+     *            the color space.
+     * @param hasAlpha
+     *            whether the color model has alpha.
+     * @param isAlphaPremultiplied
+     *            whether the alpha is pre-multiplied.
+     * @param transparency
+     *            the transparency strategy, @see java.awt.Transparency.
+     * @param transferType
+     *            the transfer type (primitive java type to use for the
+     *            components).
      */
-    protected ColorModel(int pixel_bits, int[] bits, ColorSpace cspace,
-            boolean hasAlpha, boolean isAlphaPremultiplied, int transparency,
-            int transferType) {
+    protected ColorModel(int pixel_bits, int[] bits, ColorSpace cspace, boolean hasAlpha,
+            boolean isAlphaPremultiplied, int transparency, int transferType) {
 
         if (pixel_bits < 1) {
             // awt.26B=The number of bits in the pixel values is less than 1
@@ -113,8 +147,7 @@
             throw new IllegalArgumentException(Messages.getString("awt.26F")); //$NON-NLS-1$
         }
 
-        if (transparency < Transparency.OPAQUE ||
-               transparency > Transparency.TRANSLUCENT) {
+        if (transparency < Transparency.OPAQUE || transparency > Transparency.TRANSLUCENT) {
             // awt.270=The transparency is not a valid value
             throw new IllegalArgumentException(Messages.getString("awt.270")); //$NON-NLS-1$
         }
@@ -148,11 +181,12 @@
     }
 
     /**
-     * Instantiates a new color model with the specified pixel bit depth.
-     * The transferType is chosen based on the pixel bits, and the other
-     * data fields are given default values.
+     * Instantiates a new color model with the specified pixel bit depth. The
+     * transferType is chosen based on the pixel bits, and the other data fields
+     * are given default values.
      * 
-     * @param bits the array of component masks
+     * @param bits
+     *            the array of component masks.
      */
     public ColorModel(int bits) {
 
@@ -178,14 +212,17 @@
      * Gets the data elements from the specified component array, transforming
      * them according to rules of the color model.
      * 
-     * @param components the components
-     * @param offset the offset in the normComponents array
-     * @param obj the array that the result is written to: an array of values
-     * whose length must be the number of components used by the color model and 
-     * whose type depends on the transfer type (based on the pixel bit depth),
-     * or null to have the appropriate array created
-     * 
-     * @return the array of data elements
+     * @param components
+     *            the components.
+     * @param offset
+     *            the offset in the normComponents array.
+     * @param obj
+     *            the array that the result is written to: an array of values
+     *            whose length must be the number of components used by the
+     *            color model and whose type depends on the transfer type (based
+     *            on the pixel bit depth), or null to have the appropriate array
+     *            created.
+     * @return the array of data elements.
      */
     public Object getDataElements(int[] components, int offset, Object obj) {
         throw new UnsupportedOperationException("This method is not " + //$NON-NLS-1$
@@ -195,33 +232,36 @@
     /**
      * Gets the data elements from the specified array of normalized components.
      * 
-     * @param normComponents the array normalized components
-     * @param normOffset the offset in the normComponents array
-     * @param obj the array that the result is written to: an array of values
-     * whose length must be the number of components used by the color model and 
-     * whose type depends on the transfer type (based on the pixel bit depth),
-     * or null to have the appropriate array created
-     * 
-     * @return the array of data elements
+     * @param normComponents
+     *            the array normalized components.
+     * @param normOffset
+     *            the offset in the normComponents array.
+     * @param obj
+     *            the array that the result is written to: an array of values
+     *            whose length must be the number of components used by the
+     *            color model and whose type depends on the transfer type (based
+     *            on the pixel bit depth), or null to have the appropriate array
+     *            created.
+     * @return the array of data elements.
      */
-    public Object getDataElements(float[] normComponents, int normOffset,
-            Object obj) {
-        int unnormComponents[] = getUnnormalizedComponents(normComponents,
-                normOffset, null, 0);
+    public Object getDataElements(float[] normComponents, int normOffset, Object obj) {
+        int unnormComponents[] = getUnnormalizedComponents(normComponents, normOffset, null, 0);
         return getDataElements(unnormComponents, 0, obj);
     }
 
     /**
-     * Gets the data elements corresponding to the pixel determined by the 
-     * RGB data.
+     * Gets the data elements corresponding to the pixel determined by the RGB
+     * data.
      * 
-     * @param rgb the rgb int that defines the pixel
-     * @param pixel the array that the result is written to: an array of values
-     * whose length must be the number of components used by the color model and 
-     * whose type depends on the transfer type (based on the pixel bit depth),
-     * or null to have the appropriate array created
-     * 
-     * @return the array of data elements
+     * @param rgb
+     *            the RGB integer value that defines the pixel.
+     * @param pixel
+     *            the array that the result is written to: an array of values
+     *            whose length must be the number of components used by the
+     *            color model and whose type depends on the transfer type (based
+     *            on the pixel bit depth), or null to have the appropriate array
+     *            created.
+     * @return the array of data elements.
      */
     public Object getDataElements(int rgb, Object pixel) {
         throw new UnsupportedOperationException("This method is not " + //$NON-NLS-1$
@@ -229,38 +269,38 @@
     }
 
     /**
-     * Gets the child raster corresponding to the alpha channel of the 
-     * specified writable raster, or null if alpha is not supported.
+     * Gets the child raster corresponding to the alpha channel of the specified
+     * writable raster, or null if alpha is not supported.
      * 
-     * @param raster the raster
-     * 
-     * @return the alpha raster
+     * @param raster
+     *            the raster.
+     * @return the alpha raster.
      */
     public WritableRaster getAlphaRaster(WritableRaster raster) {
         return null;
     }
 
     /**
-     * Creates a new color model by coercing the data in the writable raster 
-     * in accordance with the alpha strategy of this color model.
+     * Creates a new color model by coercing the data in the writable raster in
+     * accordance with the alpha strategy of this color model.
      * 
-     * @param raster the raster
-     * @param isAlphaPremultiplied whether the alpha is premultiplied in this 
-     * color model
-     * 
-     * @return the new color model
+     * @param raster
+     *            the raster.
+     * @param isAlphaPremultiplied
+     *            whether the alpha is pre-multiplied in this color model
+     * @return the new color model.
      */
-    public ColorModel coerceData(WritableRaster raster,
-            boolean isAlphaPremultiplied) {
+    public ColorModel coerceData(WritableRaster raster, boolean isAlphaPremultiplied) {
         throw new UnsupportedOperationException("This method is not " + //$NON-NLS-1$
                 "supported by this ColorModel"); //$NON-NLS-1$
     }
 
     @Override
     public String toString() {
-        // The output format based on 1.5 release behaviour. 
+        // The output format based on 1.5 release behavior.
         // It could be reveled such way:
-        // ColorModel cm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB,
+        // ColorModel cm = new
+        // ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB,
         // false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE);
         // System.out.println(cm.toString());
         return "ColorModel: Color Space = " + cs.toString() + "; has alpha = " //$NON-NLS-1$ //$NON-NLS-2$
@@ -274,15 +314,17 @@
     /**
      * Gets the components of the pixel determined by the data array.
      * 
-     * @param pixel the data array that defines the pixel (whose 
-     * primitive type corresponds to the pixel length in bits, 
+     * @param pixel
+     *            the data array that defines the pixel (whose primitive type
+     *            corresponds to the pixel length in bits.
      * @see ColorModel#getTransferType()
-     * @param components the the array where the resulting components
-     * are written (or null to prompt the method to create the return array)
-     * @param offset the offset that tells where the results should be written
-     * in the return array
-     * 
-     * @return the array of components
+     * @param components
+     *            the the array where the resulting components are written (or
+     *            null to prompt the method to create the return array).
+     * @param offset
+     *            the offset that tells where the results should be written in
+     *            the return array.
+     * @return the array of components.
      */
     public int[] getComponents(Object pixel, int[] components, int offset) {
         throw new UnsupportedOperationException("This method is not " + //$NON-NLS-1$
@@ -292,18 +334,20 @@
     /**
      * Gets the normalized components of the pixel determined by the data array.
      * 
-     * @param pixel the data array that defines the pixel (whose 
-     * primitive type corresponds to the pixel length in bits, 
+     * @param pixel
+     *            the data array that defines the pixel (whose primitive type
+     *            corresponds to the pixel length in bits.
      * @see ColorModel#getTransferType()
-     * @param normComponents the array where the resulting normalised components
-     * are written (or null to prompt the method to create the return array)
-     * @param normOffset the offset that tells where the results should be written
-     * in the return array
-     * 
-     * @return the array of normalized components
+     * @param normComponents
+     *            the array where the resulting normalized components are
+     *            written (or null to prompt the method to create the return
+     *            array).
+     * @param normOffset
+     *            the offset that tells where the results should be written in
+     *            the return array.
+     * @return the array of normalized components.
      */
-    public float[] getNormalizedComponents(Object pixel,
-            float[] normComponents, int normOffset) {
+    public float[] getNormalizedComponents(Object pixel, float[] normComponents, int normOffset) {
 
         if (pixel == null) {
             // awt.294=pixel is null
@@ -311,8 +355,7 @@
         }
 
         int unnormComponents[] = getComponents(pixel, null, 0);
-        return getNormalizedComponents(unnormComponents, 0, normComponents,
-                normOffset);
+        return getNormalizedComponents(unnormComponents, 0, normComponents, normOffset);
     }
 
     @Override
@@ -320,54 +363,52 @@
         if (!(obj instanceof ColorModel)) {
             return false;
         }
-        ColorModel cm = (ColorModel) obj;
+        ColorModel cm = (ColorModel)obj;
 
-        return (pixel_bits == cm.getPixelSize() &&
-               transferType == cm.getTransferType() &&
-               cs.getType() == cm.getColorSpace().getType() &&
-               hasAlpha == cm.hasAlpha() &&
-               isAlphaPremultiplied == cm.isAlphaPremultiplied() &&
-               transparency == cm.getTransparency() &&
-               numColorComponents == cm.getNumColorComponents() &&
-               numComponents == cm.getNumComponents() &&
-               Arrays.equals(bits, cm.getComponentSize()));
+        return (pixel_bits == cm.getPixelSize() && transferType == cm.getTransferType()
+                && cs.getType() == cm.getColorSpace().getType() && hasAlpha == cm.hasAlpha()
+                && isAlphaPremultiplied == cm.isAlphaPremultiplied()
+                && transparency == cm.getTransparency()
+                && numColorComponents == cm.getNumColorComponents()
+                && numComponents == cm.getNumComponents() && Arrays.equals(bits, cm
+                .getComponentSize()));
     }
 
     /**
      * Gets the red component of the pixel determined by the data array.
      * 
-     * @param inData the data array that defines the pixel (whose 
-     * primitive type corresponds to the pixel length in bits, 
+     * @param inData
+     *            the data array that defines the pixel (whose primitive type
+     *            corresponds to the pixel length in bits.
      * @see ColorModel#getTransferType()
-     * 
-     * @return the red
+     * @return the red.
      */
     public int getRed(Object inData) {
         return getRed(constructPixel(inData));
     }
 
     /**
-     * Gets the RGB int corresponding to the pixel defined by the data array.
+     * Gets the RGB integer value corresponding to the pixel defined by the data
+     * array.
      * 
-     * @param inData the data array that defines the pixel (whose 
-     * primitive type corresponds to the pixel length in bits, 
+     * @param inData
+     *            the data array that defines the pixel (whose primitive type
+     *            corresponds to the pixel length in bits.
      * @see ColorModel#getTransferType()
-     * 
-     * @return the int that gives the pixel's colors in RGB format
+     * @return the integer value that gives the pixel's colors in RGB format.
      */
     public int getRGB(Object inData) {
-        return (getAlpha(inData) << 24 | getRed(inData) << 16 |
-               getGreen(inData) << 8 | getBlue(inData));
+        return (getAlpha(inData) << 24 | getRed(inData) << 16 | getGreen(inData) << 8 | getBlue(inData));
     }
 
     /**
      * Gets the green component of the pixel defined by the data array.
      * 
-     * @param inData the data array that defines the pixel (whose 
-     * primitive type corresponds to the pixel length in bits, 
+     * @param inData
+     *            the data array that defines the pixel (whose primitive type
+     *            corresponds to the pixel length in bits.
      * @see ColorModel#getTransferType()
-     * 
-     * @return the green
+     * @return the green.
      */
     public int getGreen(Object inData) {
         return getGreen(constructPixel(inData));
@@ -376,11 +417,11 @@
     /**
      * Gets the blue component of the pixel defined by the data array.
      * 
-     * @param inData the data array that defines the pixel (whose 
-     * primitive type corresponds to the pixel length in bits, 
+     * @param inData
+     *            the data array that defines the pixel (whose primitive type
+     *            corresponds to the pixel length in bits.
      * @see ColorModel#getTransferType()
-     * 
-     * @return the blue
+     * @return the blue.
      */
     public int getBlue(Object inData) {
         return getBlue(constructPixel(inData));
@@ -389,11 +430,11 @@
     /**
      * Gets the alpha component of the pixel defined by the data array.
      * 
-     * @param inData the data array that defines the pixel (whose 
-     * primitive type corresponds to the pixel length in bits, 
+     * @param inData
+     *            the data array that defines the pixel (whose primitive type
+     *            corresponds to the pixel length in bits.
      * @see ColorModel#getTransferType()
-     * 
-     * @return the alpha
+     * @return the alpha.
      */
     public int getAlpha(Object inData) {
         return getAlpha(constructPixel(inData));
@@ -402,10 +443,11 @@
     /**
      * Creates a compatible writable raster.
      * 
-     * @param w the width of the desired writable raster
-     * @param h the height of the desired writable raster
-     * 
-     * @return the writable raster
+     * @param w
+     *            the width of the desired writable raster.
+     * @param h
+     *            the height of the desired writable raster.
+     * @return the writable raster.
      */
     public WritableRaster createCompatibleWritableRaster(int w, int h) {
         throw new UnsupportedOperationException("This method is not " + //$NON-NLS-1$
@@ -415,9 +457,9 @@
     /**
      * Checks if the sample model is compatible with this color model.
      * 
-     * @param sm the sample model
-     * 
-     * @return true, if the sample model is compatible with this color model
+     * @param sm
+     *            the sample model.
+     * @return true, if the sample model is compatible with this color model.
      */
     public boolean isCompatibleSampleModel(SampleModel sm) {
         throw new UnsupportedOperationException("This method is not " + //$NON-NLS-1$
@@ -427,10 +469,11 @@
     /**
      * Creates the compatible sample model.
      * 
-     * @param w the width of the desired sample model
-     * @param h the height of the desired sample model
-     * 
-     * @return the sample model
+     * @param w
+     *            the width of the desired sample model.
+     * @param h
+     *            the height of the desired sample model.
+     * @return the sample model.
      */
     public SampleModel createCompatibleSampleModel(int w, int h) {
         throw new UnsupportedOperationException("This method is not " + //$NON-NLS-1$
@@ -440,9 +483,9 @@
     /**
      * Checks if the specified raster is compatible with this color model.
      * 
-     * @param raster the raster to inspect
-     * 
-     * @return true, if the raster is compatible with this color model
+     * @param raster
+     *            the raster to inspect.
+     * @return true, if the raster is compatible with this color model.
      */
     public boolean isCompatibleRaster(Raster raster) {
         throw new UnsupportedOperationException("This method is not " + //$NON-NLS-1$
@@ -452,28 +495,32 @@
     /**
      * Gets the color space of this color model.
      * 
-     * @return the color space
+     * @return the color space.
      */
     public final ColorSpace getColorSpace() {
         return cs;
     }
 
     /**
-     * Gets the normalized components corresponding to the specified 
+     * Gets the normalized components corresponding to the specified
      * unnormalized components.
      * 
-     * @param components the array of unnormalized components
-     * @param offset the offset where the components should be read 
-     * from the array of unnormalized components
-     * @param normComponents the array where the resulting normalised components
-     * are written (or null to prompt the method to create the return array)
-     * @param normOffset the offset that tells where the results should be written
-     * in the return array
-     * 
-     * @return the normalized components
+     * @param components
+     *            the array of unnormalized components.
+     * @param offset
+     *            the offset where the components should be read from the array
+     *            of unnormalized components.
+     * @param normComponents
+     *            the array where the resulting normalized components are
+     *            written (or null to prompt the method to create the return
+     *            array).
+     * @param normOffset
+     *            the offset that tells where the results should be written in
+     *            the return array.
+     * @return the normalized components.
      */
-    public float[] getNormalizedComponents(int[] components, int offset,
-            float normComponents[], int normOffset) {
+    public float[] getNormalizedComponents(int[] components, int offset, float normComponents[],
+            int normOffset) {
         if (bits == null) {
             // awt.26C=bits is null
             throw new UnsupportedOperationException(Messages.getString("awt.26C")); //$NON-NLS-1$
@@ -484,14 +531,12 @@
         }
 
         if (hasAlpha && isAlphaPremultiplied) {
-            float normAlpha =
-                (float) components[offset + numColorComponents] /
-                    maxValues[numColorComponents];
+            float normAlpha = (float)components[offset + numColorComponents]
+                    / maxValues[numColorComponents];
             if (normAlpha != 0.0f) {
                 for (int i = 0; i < numColorComponents; i++) {
-                    normComponents[normOffset + i] =
-                        components[offset + i] /
-                            (normAlpha * maxValues[i]);
+                    normComponents[normOffset + i] = components[offset + i]
+                            / (normAlpha * maxValues[i]);
                 }
                 normComponents[normOffset + numColorComponents] = normAlpha;
             } else {
@@ -501,9 +546,7 @@
             }
         } else {
             for (int i = 0; i < numComponents; i++) {
-                normComponents[normOffset + i] =
-                    (float) components[offset + i] /
-                        maxValues[i];
+                normComponents[normOffset + i] = (float)components[offset + i] / maxValues[i];
             }
         }
 
@@ -513,11 +556,12 @@
     /**
      * Gets the data element corresponding to the unnormalized components.
      * 
-     * @param components the components
-     * @param offset the offset to start reading the components from the 
-     * array of components
-     * 
-     * @return the data element
+     * @param components
+     *            the components.
+     * @param offset
+     *            the offset to start reading the components from the array of
+     *            components.
+     * @return the data element.
      */
     public int getDataElement(int[] components, int offset) {
         throw new UnsupportedOperationException("This method is not " + //$NON-NLS-1$
@@ -525,21 +569,25 @@
     }
 
     /**
-     * Gets the unnormalized components corresponding to the specified 
+     * Gets the unnormalized components corresponding to the specified
      * normalized components.
      * 
-     * @param normComponents the array of normalized components
-     * @param normOffset the offset where the components should be read 
-     * from the array of normalized components
-     * @param components the array where the resulting unnormalised components
-     * are written (or null to prompt the method to create the return array)
-     * @param offset the offset that tells where the results should be written
-     * in the return array
-     * 
-     * @return the unnormalized components
+     * @param normComponents
+     *            the array of normalized components.
+     * @param normOffset
+     *            the offset where the components should be read from the array
+     *            of normalized components.
+     * @param components
+     *            the array where the resulting unnormalized components are
+     *            written (or null to prompt the method to create the return
+     *            array).
+     * @param offset
+     *            the offset that tells where the results should be written in
+     *            the return array.
+     * @return the unnormalized components.
      */
-    public int[] getUnnormalizedComponents(float normComponents[],
-            int normOffset, int components[], int offset) {
+    public int[] getUnnormalizedComponents(float normComponents[], int normOffset,
+            int components[], int offset) {
 
         if (bits == null) {
             // awt.26C=bits is null
@@ -547,7 +595,8 @@
         }
 
         if (normComponents.length - normOffset < numComponents) {
-            // awt.273=The length of normComponents minus normOffset is less than numComponents
+            // awt.273=The length of normComponents minus normOffset is less
+            // than numComponents
             throw new IllegalArgumentException(Messages.getString("awt.273")); //$NON-NLS-1$
         }
 
@@ -555,7 +604,8 @@
             components = new int[numComponents + offset];
         } else {
             if (components.length - offset < numComponents) {
-                // awt.272=The length of components minus offset is less than numComponents
+                // awt.272=The length of components minus offset is less than
+                // numComponents
                 throw new IllegalArgumentException(Messages.getString("awt.272")); //$NON-NLS-1$
             }
         }
@@ -563,17 +613,15 @@
         if (hasAlpha && isAlphaPremultiplied) {
             float alpha = normComponents[normOffset + numColorComponents];
             for (int i = 0; i < numColorComponents; i++) {
-                components[offset + i] = (int) (normComponents[normOffset + i]
-                        * maxValues[i] * alpha + 0.5f);
+                components[offset + i] = (int)(normComponents[normOffset + i] * maxValues[i]
+                        * alpha + 0.5f);
             }
-            components[offset + numColorComponents] =
-                (int) (normComponents[normOffset + numColorComponents] *
-                        maxValues[numColorComponents] + 0.5f);
+            components[offset + numColorComponents] = (int)(normComponents[normOffset
+                    + numColorComponents]
+                    * maxValues[numColorComponents] + 0.5f);
         } else {
             for (int i = 0; i < numComponents; i++) {
-                components[offset + i] =
-                    (int) (normComponents[normOffset + i] *
-                            maxValues[i] + 0.5f);
+                components[offset + i] = (int)(normComponents[normOffset + i] * maxValues[i] + 0.5f);
             }
         }
 
@@ -583,30 +631,32 @@
     /**
      * Gets the data element corresponding to the normalized components.
      * 
-     * @param normComponents the normalized components
-     * @param normOffset the offset where the normalized components should
-     * be read from the normalized component array
-     * 
-     * @return the data element
+     * @param normComponents
+     *            the normalized components.
+     * @param normOffset
+     *            the offset where the normalized components should be read from
+     *            the normalized component array.
+     * @return the data element.
      */
     public int getDataElement(float normComponents[], int normOffset) {
-        int unnormComponents[] = getUnnormalizedComponents(normComponents,
-                normOffset, null, 0);
+        int unnormComponents[] = getUnnormalizedComponents(normComponents, normOffset, null, 0);
         return getDataElement(unnormComponents, 0);
     }
 
     /**
-     * Takes a pixel whose data is defined by an int, and writes the 
-     * corresponding components into the components array, starting 
-     * from the index offset.
+     * Takes a pixel whose data is defined by an integer, and writes the
+     * corresponding components into the components array, starting from the
+     * index offset.
      * 
-     * @param pixel the pixel data
-     * @param components the data array to write the components to (or
-     * null to have the method create the return array)
-     * @param offset the offset that determines where the results are 
-     * written in the components array
-     * 
-     * @return the array of components corresponding to the pixel
+     * @param pixel
+     *            the pixel data.
+     * @param components
+     *            the data array to write the components to (or null to have the
+     *            method create the return array).
+     * @param offset
+     *            the offset that determines where the results are written in
+     *            the components array.
+     * @return the array of components corresponding to the pixel.
      */
     public int[] getComponents(int pixel, int components[], int offset) {
         throw new UnsupportedOperationException("This method is not " + //$NON-NLS-1$
@@ -616,45 +666,45 @@
     /**
      * Gets the red component of the pixel determined by the pixel data.
      * 
-     * @param pixel the pixel data
-     * 
-     * @return the red component of the pixel
+     * @param pixel
+     *            the pixel.
+     * @return the red component of the given pixel.
      */
     public abstract int getRed(int pixel);
 
     /**
-     * Takes the pixel data and returns the int corresponding 
-     * to the pixel's color in RGB format.
+     * Takes the pixel data and returns the integer value corresponding to the
+     * pixel's color in RGB format.
      * 
-     * @param pixel the pixel data
-     * 
-     * @return the corresponding RGB int
+     * @param pixel
+     *            the pixel data.
+     * @return the corresponding RGB integer value.
      */
     public int getRGB(int pixel) {
-        return (getAlpha(pixel) << 24 | getRed(pixel) << 16
-                | getGreen(pixel) << 8 | getBlue(pixel));
+        return (getAlpha(pixel) << 24 | getRed(pixel) << 16 | getGreen(pixel) << 8 | getBlue(pixel));
     }
 
     /**
      * Gets the green component of the pixel determined by the pixel data.
      * 
-     * @param pixel the pixel data
-     * 
-     * @return the green component of the pixel
+     * @param pixel
+     *            the pixel.
+     * @return the green component of the given pixel.
      */
     public abstract int getGreen(int pixel);
 
     /**
      * Gets the size of the desired component of this color model.
      * 
-     * @param componentIdx the index that determines which component size to get
-     * 
-     * @return the component size corresponding to the index
-     * 
-     * @throws NullPointerException if this color model doesn't support
-     * an array of separate components.
-     * @throws ArrayIndexOutOfBoundsException if the index is negative or
-     * greater than or equal to the number of components
+     * @param componentIdx
+     *            the index that determines which component size to get.
+     * @return the component size corresponding to the index.
+     * @throws NullPointerException
+     *             if this color model doesn't support an array of separate
+     *             components.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if the index is negative or greater than or equal to the
+     *             number of components.
      */
     public int getComponentSize(int componentIdx) {
         if (bits == null) {
@@ -663,7 +713,8 @@
         }
 
         if (componentIdx < 0 || componentIdx >= bits.length) {
-            // awt.274=componentIdx is greater than the number of components or less than zero
+            // awt.274=componentIdx is greater than the number of components or
+            // less than zero
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.274")); //$NON-NLS-1$
         }
 
@@ -673,25 +724,25 @@
     /**
      * Gets the blue component of the pixel determined by the pixel data.
      * 
-     * @param pixel the pixel
-     * 
-     * @return the blue component of the pixel
+     * @param pixel
+     *            the pixel.
+     * @return the blue component of the given pixel.
      */
     public abstract int getBlue(int pixel);
 
     /**
      * Gets the alpha component of the pixel determined by the pixel data.
      * 
-     * @param pixel the pixel
-     * 
-     * @return the alpha component of the pixel
+     * @param pixel
+     *            the pixel.
+     * @return the alpha component of the given pixel.
      */
     public abstract int getAlpha(int pixel);
 
     /**
      * Gets the array of sizes of the different components.
      * 
-     * @return the array of sizes of the different components
+     * @return the array of sizes of the different components.
      */
     public int[] getComponentSize() {
         if (bits != null) {
@@ -701,9 +752,9 @@
     }
 
     /**
-     * Checks if the alpha component is premultiplied.
+     * Checks if the alpha component is pre-multiplied.
      * 
-     * @return true, if the alpha component is premultiplied
+     * @return true, if the alpha component is pre-multiplied.
      */
     public final boolean isAlphaPremultiplied() {
         return isAlphaPremultiplied;
@@ -712,7 +763,7 @@
     /**
      * Checks whether this color model supports alpha.
      * 
-     * @return true, if this color model has alpha
+     * @return true, if this color model has alpha.
      */
     public final boolean hasAlpha() {
         return hasAlpha;
@@ -776,12 +827,12 @@
     }
 
     /**
-     * Gets the transfer type, which is the type of Java primitive
-     * value that corresponds to the bit length per pixel: either 
-     * {@link DataBuffer#TYPE_BYTE}, {@link DataBuffer#TYPE_USHORT}, 
+     * Gets the transfer type, which is the type of Java primitive value that
+     * corresponds to the bit length per pixel: either
+     * {@link DataBuffer#TYPE_BYTE}, {@link DataBuffer#TYPE_USHORT},
      * {@link DataBuffer#TYPE_INT}, or {@link DataBuffer#TYPE_UNDEFINED}.
      * 
-     * @return the transfer type
+     * @return the transfer type.
      */
     public final int getTransferType() {
         return transferType;
@@ -790,7 +841,7 @@
     /**
      * Gets the pixel size in bits.
      * 
-     * @return the pixel size
+     * @return the pixel size.
      */
     public int getPixelSize() {
         return pixel_bits;
@@ -799,7 +850,7 @@
     /**
      * Gets the number of components of this color model.
      * 
-     * @return the number of components
+     * @return the number of components.
      */
     public int getNumComponents() {
         return numComponents;
@@ -808,7 +859,7 @@
     /**
      * Gets the number of color components of this color model.
      * 
-     * @return the number color components
+     * @return the number color components.
      */
     public int getNumColorComponents() {
         return numColorComponents;
@@ -817,12 +868,11 @@
     /**
      * Gets the default RGB color model.
      * 
-     * @return the default RGB color model
+     * @return the default RGB color model.
      */
     public static ColorModel getRGBdefault() {
         if (RGBdefault == null) {
-            RGBdefault = new DirectColorModel(32, 0x00ff0000, 0x0000ff00,
-                    0x000000ff, 0xff000000);
+            RGBdefault = new DirectColorModel(32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000);
         }
         return RGBdefault;
     }
@@ -830,66 +880,69 @@
     /*
      * Construct INT pixel representation from Object
      * @param obj
-     *
      * @return
      */
     /**
      * Construct pixel.
      * 
-     * @param obj the obj
-     * 
-     * @return the int
+     * @param obj
+     *            the obj.
+     * @return the int.
      */
     private int constructPixel(Object obj) {
         int pixel = 0;
 
         switch (getTransferType()) {
 
-        case DataBuffer.TYPE_BYTE:
-            byte[] bPixel = (byte[]) obj;
-            if(bPixel.length > 1) {
-                // awt.275=This pixel representation is not suuported by tis Color Model
-                throw new UnsupportedOperationException(Messages.getString("awt.275")); //$NON-NLS-1$
-            }
-            pixel = bPixel[0] & 0xff;
-            break;
+            case DataBuffer.TYPE_BYTE:
+                byte[] bPixel = (byte[])obj;
+                if (bPixel.length > 1) {
+                    // awt.275=This pixel representation is not suuported by tis
+                    // Color Model
+                    throw new UnsupportedOperationException(Messages.getString("awt.275")); //$NON-NLS-1$
+                }
+                pixel = bPixel[0] & 0xff;
+                break;
 
-        case DataBuffer.TYPE_USHORT:
-            short[] sPixel = (short[]) obj;
-            if(sPixel.length > 1) {
-                // awt.275=This pixel representation is not suuported by tis Color Model
-                throw new UnsupportedOperationException(Messages.getString("awt.275")); //$NON-NLS-1$
-            }
-            pixel = sPixel[0] & 0xffff;
-            break;
+            case DataBuffer.TYPE_USHORT:
+                short[] sPixel = (short[])obj;
+                if (sPixel.length > 1) {
+                    // awt.275=This pixel representation is not suuported by tis
+                    // Color Model
+                    throw new UnsupportedOperationException(Messages.getString("awt.275")); //$NON-NLS-1$
+                }
+                pixel = sPixel[0] & 0xffff;
+                break;
 
-        case DataBuffer.TYPE_INT:
-            int[] iPixel = (int[]) obj;
-            if(iPixel.length > 1) {
-                // awt.275=This pixel representation is not suuported by tis Color Model
-                throw new UnsupportedOperationException(Messages.getString("awt.275")); //$NON-NLS-1$
-            }
-            pixel = iPixel[0];
-            break;
+            case DataBuffer.TYPE_INT:
+                int[] iPixel = (int[])obj;
+                if (iPixel.length > 1) {
+                    // awt.275=This pixel representation is not suuported by tis
+                    // Color Model
+                    throw new UnsupportedOperationException(Messages.getString("awt.275")); //$NON-NLS-1$
+                }
+                pixel = iPixel[0];
+                break;
 
-        default:
-            // awt.22D=This transferType ( {0} ) is not supported by this color model
-            throw new UnsupportedOperationException(Messages.getString("awt.22D", //$NON-NLS-1$
-                   transferType));
+            default:
+                // awt.22D=This transferType ( {0} ) is not supported by this
+                // color model
+                throw new UnsupportedOperationException(Messages.getString("awt.22D", //$NON-NLS-1$
+                        transferType));
 
         }
         return pixel;
     }
 
     /**
-     * Gets the transfer type, which is the type of Java primitive
-     * value that corresponds to the bit length per pixel: either 
-     * {@link DataBuffer#TYPE_BYTE}, {@link DataBuffer#TYPE_USHORT}, 
+     * Gets the transfer type, which is the type of Java primitive value that
+     * corresponds to the bit length per pixel: either
+     * {@link DataBuffer#TYPE_BYTE}, {@link DataBuffer#TYPE_USHORT},
      * {@link DataBuffer#TYPE_INT}, or {@link DataBuffer#TYPE_UNDEFINED}.
      * 
-     * @param bits the array of component masks
-     * 
-     * @return the transfer type
+     * @param bits
+     *            the array of component masks.
+     * @return the transfer type.
      */
     static int getTransferType(int bits) {
         if (bits <= 8) {
diff --git a/awt/java/awt/image/ComponentColorModel.java b/awt/java/awt/image/ComponentColorModel.java
index a152f55..4328fd3 100644
--- a/awt/java/awt/image/ComponentColorModel.java
+++ b/awt/java/awt/image/ComponentColorModel.java
@@ -18,6 +18,7 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.awt.color.ColorSpace;
@@ -26,154 +27,202 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Class ComponentColorModel represents a color model that is defined 
- * in terms of its components.
+ * The Class ComponentColorModel represents a color model that is defined in
+ * terms of its components.
+ * 
+ * @since Android 1.0
  */
 public class ComponentColorModel extends ColorModel {
 
-    /** The signed. */
-    private boolean signed;   // Pixel samples are signed.
-                              // Samples with TransferType DataBuffer.TYPE_BYTE,
-                              // DataBuffer.TYPE_USHORT, DataBuffer.TYPE_INT - 
-                              // unsigned. Samples with others TransferType - 
-                              // signed.
+    /**
+     * The signed.
+     */
+    private boolean signed; // Pixel samples are signed.
 
-    /** The integral. */
+    // Samples with TransferType DataBuffer.TYPE_BYTE,
+    // DataBuffer.TYPE_USHORT, DataBuffer.TYPE_INT -
+    // unsigned. Samples with others TransferType -
+    // signed.
+
+    /**
+     * The integral.
+     */
     private boolean integral; // Pixel samples are integral.
-                              // Samples with TransferType DataBuffer.TYPE_BYTE,
-                              // DataBuffer.TYPE_USHORT, DataBuffer.Short and 
-                              // DataBuffer.TYPE_INT - integral.
 
-    /** The scale factors. */
-    private float scaleFactors[]; // Array of factors for reduction components 
-                                  // values into the form scaled from 0 to 255
+    // Samples with TransferType DataBuffer.TYPE_BYTE,
+    // DataBuffer.TYPE_USHORT, DataBuffer.Short and
+    // DataBuffer.TYPE_INT - integral.
 
-    /** The donot support unnormalized. */
+    /**
+     * The scale factors.
+     */
+    private float scaleFactors[]; // Array of factors for reduction components
+
+    // values into the form scaled from 0 to 255
+
+    /**
+     * The donot support unnormalized.
+     */
     private boolean donotSupportUnnormalized; // This Color Model don't support
-                                              // unnormolized form 
 
-    /** The need alpha divide. */
+    // unnormolized form
+
+    /**
+     * The need alpha divide.
+     */
     private boolean needAlphaDivide; // hasAlpha && isAlphaPremultiplied
 
-    /** The calc value. */
-    private boolean calcValue;       // Value was culculated
+    /**
+     * The calc value.
+     */
+    private boolean calcValue; // Value was culculated
 
-    /** The need scale. */
-    private boolean needScale;       // Normalized value need to scale
+    /**
+     * The need scale.
+     */
+    private boolean needScale; // Normalized value need to scale
 
-    /** The min vals. */
-    private float minVals[];         // Array of Min normalized values
+    /**
+     * The min vals.
+     */
+    private float minVals[]; // Array of Min normalized values
 
-    /** The ranges. */
-    private float ranges[];          // Array of range normalized values  
+    /**
+     * The ranges.
+     */
+    private float ranges[]; // Array of range normalized values
 
-    /** The alpha lut. */
-    private byte alphaLUT[];         // Lookup table for scale alpha value
+    /**
+     * The alpha lut.
+     */
+    private byte alphaLUT[]; // Lookup table for scale alpha value
 
-    /** The color lu ts. */
-    private byte colorLUTs[][];      // Lookup tables for scale color values
+    /**
+     * The color lu ts.
+     */
+    private byte colorLUTs[][]; // Lookup tables for scale color values
 
-    /** The from_ linea r_ rg b_ lut. */
-    private byte from_LINEAR_RGB_LUT[];  // Lookup table for conversion from
-                                         // Linear RGB Color Space into sRGB
+    /**
+     * The from_ linea r_ rg b_ lut.
+     */
+    private byte from_LINEAR_RGB_LUT[]; // Lookup table for conversion from
 
-    /** The to_ linea r_8 rg b_ lut. */
-    private byte to_LINEAR_8RGB_LUT[];   // Lookup table for conversion from
-                                         // sRGB Color Space into Linear RGB 
-                                         // 8 bit 
+    // Linear RGB Color Space into sRGB
 
-    /** The to_ linea r_16 rg b_ lut. */
+    /**
+     * The to_ linea r_8 rg b_ lut.
+     */
+    private byte to_LINEAR_8RGB_LUT[]; // Lookup table for conversion from
+
+    // sRGB Color Space into Linear RGB
+    // 8 bit
+
+    /**
+     * The to_ linea r_16 rg b_ lut.
+     */
     private short to_LINEAR_16RGB_LUT[]; // Lookup table for conversion from
-                                         // sRGB Color Space into Linear RGB 
-                                         // 16 bit 
 
-    /** The LINEA r_ rg b_ length. */
-    private int LINEAR_RGB_Length;       // Linear RGB bit length
+    // sRGB Color Space into Linear RGB
+    // 16 bit
 
-    /** The factor. */
-    private float fFactor;               // Scale factor
+    /**
+     * The LINEA r_ rg b_ length.
+     */
+    private int LINEAR_RGB_Length; // Linear RGB bit length
 
-    /** The is_s rgb. */
-    private boolean is_sRGB;             // ColorModel has sRGB ColorSpace  
+    /**
+     * The factor.
+     */
+    private float fFactor; // Scale factor
 
-    /** The is_ linea r_ rgb. */
-    private boolean is_LINEAR_RGB;       // Color Model has Linear RGB Color 
-                                         // Space 
+    /**
+     * The is_s rgb.
+     */
+    private boolean is_sRGB; // ColorModel has sRGB ColorSpace
+
+    /**
+     * The is_ linea r_ rgb.
+     */
+    private boolean is_LINEAR_RGB; // Color Model has Linear RGB Color
+
+    // Space
 
     /**
      * Instantiates a new component color model.
      * 
-     * @param colorSpace the color space
-     * @param bits the array of component masks
-     * @param hasAlpha whether the color model has alpha
-     * @param isAlphaPremultiplied whether the alpha is premultiplied
-     * @param transparency the transparency strategy, @see java.awt.Transparency
-     * @param transferType the transfer type (primitive java type 
-     * to use for the components)
+     * @param colorSpace
+     *            the color space.
+     * @param bits
+     *            the array of component masks.
+     * @param hasAlpha
+     *            whether the color model has alpha.
+     * @param isAlphaPremultiplied
+     *            whether the alpha is pre-multiplied.
+     * @param transparency
+     *            the transparency strategy, @see java.awt.Transparency.
+     * @param transferType
+     *            the transfer type (primitive java type to use for the
+     *            components).
      */
-     public ComponentColorModel(ColorSpace colorSpace, int bits[],
-            boolean hasAlpha, boolean isAlphaPremultiplied, int transparency,
-            int transferType) {
-        super(createPixelBits(colorSpace, hasAlpha, transferType),
-                validateBits(bits, colorSpace, hasAlpha, transferType),
-                colorSpace, hasAlpha, isAlphaPremultiplied, transparency,
+    public ComponentColorModel(ColorSpace colorSpace, int bits[], boolean hasAlpha,
+            boolean isAlphaPremultiplied, int transparency, int transferType) {
+        super(createPixelBits(colorSpace, hasAlpha, transferType), validateBits(bits, colorSpace,
+                hasAlpha, transferType), colorSpace, hasAlpha, isAlphaPremultiplied, transparency,
                 transferType);
 
         needScale = false;
         switch (transferType) {
-        case DataBuffer.TYPE_BYTE:
-        case DataBuffer.TYPE_USHORT:
-        case DataBuffer.TYPE_INT:
-            signed = false;
-            integral = true;
-            donotSupportUnnormalized = false;
-            scaleFactors = new float[numComponents];
-            for (int i = 0; i < numColorComponents; i++) {
-                scaleFactors[i] = 1.0f / maxValues[i];
-                if (cs.getMinValue(i) != 0.0f || cs.getMaxValue(i) != 1.0f) {
-                    donotSupportUnnormalized = true;
-                }
-            }
-            if (hasAlpha) {
-                maxValues[numColorComponents] =
-                    (1 << bits[numColorComponents]) - 1;
-                scaleFactors[numColorComponents] =
-                    1.0f / maxValues[numColorComponents];
-            }
-            break;
-        case DataBuffer.TYPE_SHORT:
-            signed = true;
-            integral = true;
-            donotSupportUnnormalized = true;
-            scaleFactors = new float[numComponents];
-            for (int i = 0; i < numComponents; i++) {
-                maxValues[i] = Short.MAX_VALUE;
-                scaleFactors[i] = 1.0f / maxValues[i];
-                if (cs.getMinValue(i) != 0.0f || cs.getMaxValue(i) != 1.0f) {
-                    needScale = true;
-                }
-            }
-            if (needScale) {
-                minVals = new float[numColorComponents];
-                ranges = new float[numColorComponents];
+            case DataBuffer.TYPE_BYTE:
+            case DataBuffer.TYPE_USHORT:
+            case DataBuffer.TYPE_INT:
+                signed = false;
+                integral = true;
+                donotSupportUnnormalized = false;
+                scaleFactors = new float[numComponents];
                 for (int i = 0; i < numColorComponents; i++) {
-                    minVals[i] = cs.getMinValue(i);
-                    ranges[i] = cs.getMaxValue(i) - minVals[i];
+                    scaleFactors[i] = 1.0f / maxValues[i];
+                    if (cs.getMinValue(i) != 0.0f || cs.getMaxValue(i) != 1.0f) {
+                        donotSupportUnnormalized = true;
+                    }
                 }
-            }
-            break;
-        case DataBuffer.TYPE_FLOAT:
-        case DataBuffer.TYPE_DOUBLE:
-            signed = true;
-            integral = false;
-            donotSupportUnnormalized = true;
-            break;
-        default:
-            // awt.215=transferType is not one of DataBuffer.TYPE_BYTE,
-            //          DataBuffer.TYPE_USHORT, DataBuffer.TYPE_INT,
-            //          DataBuffer.TYPE_SHORT, DataBuffer.TYPE_FLOAT, or
-            //          DataBuffer.TYPE_DOUBLE
-            throw new IllegalArgumentException(Messages.getString("awt.215")); //$NON-NLS-1$
+                if (hasAlpha) {
+                    maxValues[numColorComponents] = (1 << bits[numColorComponents]) - 1;
+                    scaleFactors[numColorComponents] = 1.0f / maxValues[numColorComponents];
+                }
+                break;
+            case DataBuffer.TYPE_SHORT:
+                signed = true;
+                integral = true;
+                donotSupportUnnormalized = true;
+                scaleFactors = new float[numComponents];
+                for (int i = 0; i < numComponents; i++) {
+                    maxValues[i] = Short.MAX_VALUE;
+                    scaleFactors[i] = 1.0f / maxValues[i];
+                    if (cs.getMinValue(i) != 0.0f || cs.getMaxValue(i) != 1.0f) {
+                        needScale = true;
+                    }
+                }
+                if (needScale) {
+                    minVals = new float[numColorComponents];
+                    ranges = new float[numColorComponents];
+                    for (int i = 0; i < numColorComponents; i++) {
+                        minVals[i] = cs.getMinValue(i);
+                        ranges[i] = cs.getMaxValue(i) - minVals[i];
+                    }
+                }
+                break;
+            case DataBuffer.TYPE_FLOAT:
+            case DataBuffer.TYPE_DOUBLE:
+                signed = true;
+                integral = false;
+                donotSupportUnnormalized = true;
+                break;
+            default:
+                // awt.215=transferType is not one of DataBuffer.TYPE_BYTE,
+                // DataBuffer.TYPE_USHORT, DataBuffer.TYPE_INT,
+                // DataBuffer.TYPE_SHORT, DataBuffer.TYPE_FLOAT, or
+                // DataBuffer.TYPE_DOUBLE
+                throw new IllegalArgumentException(Messages.getString("awt.215")); //$NON-NLS-1$
         }
 
         needAlphaDivide = hasAlpha && isAlphaPremultiplied;
@@ -183,36 +232,40 @@
     /**
      * Instantiates a new component color model.
      * 
-     * @param colorSpace the color space
-     * @param hasAlpha whether the color model has alpha
-     * @param isAlphaPremultiplied whether the alpha is premultiplied
-     * @param transparency the transparency strategy, @see java.awt.Transparency
-     * @param transferType the transfer type (primitive java type 
-     * to use for the components)
+     * @param colorSpace
+     *            the color space.
+     * @param hasAlpha
+     *            whether the color model has alpha.
+     * @param isAlphaPremultiplied
+     *            whether the alpha is pre-multiplied.
+     * @param transparency
+     *            the transparency strategy, @see java.awt.Transparency.
+     * @param transferType
+     *            the transfer type (primitive java type to use for the
+     *            components).
      */
     public ComponentColorModel(ColorSpace colorSpace, boolean hasAlpha,
             boolean isAlphaPremultiplied, int transparency, int transferType) {
-        
-        this(colorSpace, 
-                createPixelBitsArray(colorSpace, hasAlpha, transferType), 
-                hasAlpha, 
-                isAlphaPremultiplied, 
-                transparency,
-                transferType);
+
+        this(colorSpace, createPixelBitsArray(colorSpace, hasAlpha, transferType), hasAlpha,
+                isAlphaPremultiplied, transparency, transferType);
     }
 
     /**
      * Validate bits.
      * 
-     * @param bits the bits
-     * @param colorSpace the color space
-     * @param hasAlpha the has alpha
-     * @param transferType the transfer type
-     * 
-     * @return the int[]
+     * @param bits
+     *            the bits.
+     * @param colorSpace
+     *            the color space.
+     * @param hasAlpha
+     *            the has alpha.
+     * @param transferType
+     *            the transfer type.
+     * @return the int[].
      */
-    private static int[] validateBits(int bits[], ColorSpace colorSpace,
-            boolean hasAlpha, int transferType) {
+    private static int[] validateBits(int bits[], ColorSpace colorSpace, boolean hasAlpha,
+            int transferType) {
         if (bits != null) {
             return bits;
         }
@@ -235,14 +288,15 @@
     /**
      * Creates the pixel bits.
      * 
-     * @param colorSpace the color space
-     * @param hasAlpha the has alpha
-     * @param transferType the transfer type
-     * 
-     * @return the int
+     * @param colorSpace
+     *            the color space.
+     * @param hasAlpha
+     *            the has alpha.
+     * @param transferType
+     *            the transfer type.
+     * @return the int.
      */
-    private static int createPixelBits(ColorSpace colorSpace, boolean hasAlpha,
-            int transferType) {
+    private static int createPixelBits(ColorSpace colorSpace, boolean hasAlpha, int transferType) {
         int numComponents = colorSpace.getNumComponents();
         if (hasAlpha) {
             numComponents++;
@@ -254,22 +308,24 @@
     /**
      * Creates the pixel bits array.
      * 
-     * @param colorSpace the color space
-     * @param hasAlpha the has alpha
-     * @param transferType the transfer type
-     * 
-     * @return the int[]
+     * @param colorSpace
+     *            the color space.
+     * @param hasAlpha
+     *            the has alpha.
+     * @param transferType
+     *            the transfer type.
+     * @return the int[].
      */
-    private static int[] createPixelBitsArray(ColorSpace colorSpace, 
-            boolean hasAlpha, int transferType) {
-        
+    private static int[] createPixelBitsArray(ColorSpace colorSpace, boolean hasAlpha,
+            int transferType) {
+
         int numComponents = colorSpace.getNumComponents();
         if (hasAlpha) {
             numComponents++;
         }
 
         int bits[] = new int[numComponents];
-        for(int i = 0; i < numComponents; i++){
+        for (int i = 0; i < numComponents; i++) {
             bits[i] = DataBuffer.getDataTypeSize(transferType);
         }
         return bits;
@@ -278,217 +334,200 @@
     @Override
     public Object getDataElements(int components[], int offset, Object obj) {
         if (donotSupportUnnormalized) {
-            // awt.213=This ComponentColorModel does not support the unnormalized form
+            // awt.213=This ComponentColorModel does not support the
+            // unnormalized form
             throw new IllegalArgumentException(Messages.getString("awt.213")); //$NON-NLS-1$
         }
 
         if (offset + numComponents > components.length) {
-            // awt.216=The components array is not large enough to hold all the color and alpha components
+            // awt.216=The components array is not large enough to hold all the
+            // color and alpha components
             throw new IllegalArgumentException(Messages.getString("awt.216")); //$NON-NLS-1$
         }
 
         switch (transferType) {
-        case DataBuffer.TYPE_BYTE:
-            byte ba[];
-            if (obj == null) {
-                ba = new byte[numComponents];
-            } else {
-                ba = (byte[]) obj;
-            }
-            for (int i = 0, idx = offset; i < numComponents; i++, idx++) {
-                ba[i] = (byte) components[idx];
-            }
-            return ba;
-        case DataBuffer.TYPE_USHORT:
-            short sa[];
-            if (obj == null) {
-                sa = new short[numComponents];
-            } else {
-                sa = (short[]) obj;
-            }
-            for (int i = 0, idx = offset; i < numComponents; i++, idx++) {
-                sa[i] = (short) components[idx];
-            }
-            return sa;
-        case DataBuffer.TYPE_INT:
-            int ia[];
-            if (obj == null) {
-                ia = new int[numComponents];
-            } else {
-                ia = (int[]) obj;
-            }
-            for (int i = 0, idx = offset; i < numComponents; i++, idx++) {
-                ia[i] = components[idx];
-            }
-            return ia;
-        default:
-            // awt.217=The transfer type of this ComponentColorModel is not one
-            //          of the following transfer types: DataBuffer.TYPE_BYTE,
-            //          DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT
-            throw new UnsupportedOperationException(Messages
-                    .getString("awt.217")); //$NON-NLS-1$
+            case DataBuffer.TYPE_BYTE:
+                byte ba[];
+                if (obj == null) {
+                    ba = new byte[numComponents];
+                } else {
+                    ba = (byte[])obj;
+                }
+                for (int i = 0, idx = offset; i < numComponents; i++, idx++) {
+                    ba[i] = (byte)components[idx];
+                }
+                return ba;
+            case DataBuffer.TYPE_USHORT:
+                short sa[];
+                if (obj == null) {
+                    sa = new short[numComponents];
+                } else {
+                    sa = (short[])obj;
+                }
+                for (int i = 0, idx = offset; i < numComponents; i++, idx++) {
+                    sa[i] = (short)components[idx];
+                }
+                return sa;
+            case DataBuffer.TYPE_INT:
+                int ia[];
+                if (obj == null) {
+                    ia = new int[numComponents];
+                } else {
+                    ia = (int[])obj;
+                }
+                for (int i = 0, idx = offset; i < numComponents; i++, idx++) {
+                    ia[i] = components[idx];
+                }
+                return ia;
+            default:
+                // awt.217=The transfer type of this ComponentColorModel is not
+                // one
+                // of the following transfer types: DataBuffer.TYPE_BYTE,
+                // DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT
+                throw new UnsupportedOperationException(Messages.getString("awt.217")); //$NON-NLS-1$
         }
     }
 
     @Override
-    public Object getDataElements(float normComponents[], int normOffset,
-            Object obj) {
+    public Object getDataElements(float normComponents[], int normOffset, Object obj) {
         if (needScale) {
             for (int i = 0, idx = 0; i < numColorComponents; i++, idx++) {
-                normComponents[idx] =
-                    (normComponents[idx] - minVals[i]) / ranges[i];
+                normComponents[idx] = (normComponents[idx] - minVals[i]) / ranges[i];
             }
         }
 
         switch (transferType) {
-        case DataBuffer.TYPE_BYTE:
-            byte ba[];
-            if (obj == null) {
-                ba = new byte[numComponents];
-            } else {
-                ba = (byte[]) obj;
-            }
-
-            if (needAlphaDivide) {
-                float alpha = normComponents[normOffset + numColorComponents];
-                for (int i = 0, idx = normOffset; i < numColorComponents;
-                    i++, idx++) {
-                    ba[i] = (byte) (normComponents[idx] * alpha *
-                            maxValues[i] + 0.5f);
+            case DataBuffer.TYPE_BYTE:
+                byte ba[];
+                if (obj == null) {
+                    ba = new byte[numComponents];
+                } else {
+                    ba = (byte[])obj;
                 }
-                ba[numColorComponents] =
-                    (byte) (normComponents[normOffset + numColorComponents] *
-                            maxValues[numColorComponents] + 0.5f);
-            } else {
-                for (int i = 0, idx = normOffset; i < numComponents;
-                    i++, idx++) {
-                    ba[idx] =
-                        (byte) (normComponents[idx] * maxValues[i] + 0.5f);
-                }
-            }
-            return ba;
 
-        case DataBuffer.TYPE_USHORT:
-            short usa[];
-            if (obj == null) {
-                usa = new short[numComponents];
-            } else {
-                usa = (short[]) obj;
-            }
-
-            if (needAlphaDivide) {
-                float alpha = normComponents[normOffset + numColorComponents];
-                for (int i = 0, idx = 0; i < numColorComponents; i++, idx++) {
-                    usa[i] = (short) (normComponents[idx] * alpha *
-                            maxValues[i] + 0.5f);
+                if (needAlphaDivide) {
+                    float alpha = normComponents[normOffset + numColorComponents];
+                    for (int i = 0, idx = normOffset; i < numColorComponents; i++, idx++) {
+                        ba[i] = (byte)(normComponents[idx] * alpha * maxValues[i] + 0.5f);
+                    }
+                    ba[numColorComponents] = (byte)(normComponents[normOffset + numColorComponents]
+                            * maxValues[numColorComponents] + 0.5f);
+                } else {
+                    for (int i = 0, idx = normOffset; i < numComponents; i++, idx++) {
+                        ba[idx] = (byte)(normComponents[idx] * maxValues[i] + 0.5f);
+                    }
                 }
-                usa[numColorComponents] = (short) (alpha *
-                        maxValues[numColorComponents] + 0.5f);
-            } else {
-                for (int i = 0, idx = normOffset; i < numComponents;
-                    i++, idx++) {
-                    usa[i] = (short) (normComponents[idx] *
-                            maxValues[i] + 0.5f);
-                }
-            }
-            return usa;
+                return ba;
 
-        case DataBuffer.TYPE_INT:
-            int ia[];
-            if (obj == null) {
-                ia = new int[numComponents];
-            } else {
-                ia = (int[]) obj;
-            }
-
-            if (needAlphaDivide) {
-                float alpha = normComponents[normOffset + numColorComponents];
-                for (int i = 0, idx = 0; i < numColorComponents; i++, idx++) {
-                    ia[i] = (int) (normComponents[idx] * alpha *
-                            maxValues[i] + 0.5f);
+            case DataBuffer.TYPE_USHORT:
+                short usa[];
+                if (obj == null) {
+                    usa = new short[numComponents];
+                } else {
+                    usa = (short[])obj;
                 }
-                ia[numColorComponents] = (int) (alpha *
-                        maxValues[numColorComponents] + 0.5f);
-            } else {
-                for (int i = 0, idx = normOffset; i < numComponents;
-                    i++, idx++) {
-                    ia[i] = (int) (normComponents[idx] * maxValues[i] + 0.5f);
-                }
-            }
-            return ia;
 
-        case DataBuffer.TYPE_SHORT:
-            short sa[];
-            if (obj == null) {
-                sa = new short[numComponents];
-            } else {
-                sa = (short[]) obj;
-            }
-
-            if (needAlphaDivide) {
-                float alpha = normComponents[normOffset + numColorComponents];
-                for (int i = 0, idx = 0; i < numColorComponents; i++, idx++) {
-                    sa[i] = (short) (normComponents[idx] * alpha *
-                            maxValues[i] + 0.5f);
+                if (needAlphaDivide) {
+                    float alpha = normComponents[normOffset + numColorComponents];
+                    for (int i = 0, idx = 0; i < numColorComponents; i++, idx++) {
+                        usa[i] = (short)(normComponents[idx] * alpha * maxValues[i] + 0.5f);
+                    }
+                    usa[numColorComponents] = (short)(alpha * maxValues[numColorComponents] + 0.5f);
+                } else {
+                    for (int i = 0, idx = normOffset; i < numComponents; i++, idx++) {
+                        usa[i] = (short)(normComponents[idx] * maxValues[i] + 0.5f);
+                    }
                 }
-                sa[numColorComponents] = (short) (alpha *
-                        maxValues[numColorComponents] + 0.5f);
-            } else {
-                for (int i = 0, idx = normOffset; i < numComponents;
-                    i++, idx++) {
-                    sa[i] = (short) (normComponents[idx] *
-                            maxValues[i] + 0.5f);
-                }
-            }
-            return sa;
+                return usa;
 
-        case DataBuffer.TYPE_FLOAT:
-            float fa[];
-            if (obj == null) {
-                fa = new float[numComponents];
-            } else {
-                fa = (float[]) obj;
-            }
-
-            if (needAlphaDivide) {
-                float alpha = normComponents[normOffset + numColorComponents];
-                for (int i = 0, idx = 0; i < numColorComponents; i++, idx++) {
-                    fa[i] = normComponents[idx] * alpha;
+            case DataBuffer.TYPE_INT:
+                int ia[];
+                if (obj == null) {
+                    ia = new int[numComponents];
+                } else {
+                    ia = (int[])obj;
                 }
-                fa[numColorComponents] = alpha;
-            } else {
-                for (int i = 0, idx = normOffset; i < numComponents;
-                    i++, idx++) {
-                    fa[i] = normComponents[idx];
-                }
-            }
-            return fa;
 
-        case DataBuffer.TYPE_DOUBLE:
-            double da[];
-            if (obj == null) {
-                da = new double[numComponents];
-            } else {
-                da = (double[]) obj;
-            }
-
-            if (needAlphaDivide) {
-                double alpha = normComponents[normOffset + numColorComponents];
-                for (int i = 0, idx = 0; i < numColorComponents; i++, idx++) {
-                    da[i] = normComponents[idx] * alpha;
+                if (needAlphaDivide) {
+                    float alpha = normComponents[normOffset + numColorComponents];
+                    for (int i = 0, idx = 0; i < numColorComponents; i++, idx++) {
+                        ia[i] = (int)(normComponents[idx] * alpha * maxValues[i] + 0.5f);
+                    }
+                    ia[numColorComponents] = (int)(alpha * maxValues[numColorComponents] + 0.5f);
+                } else {
+                    for (int i = 0, idx = normOffset; i < numComponents; i++, idx++) {
+                        ia[i] = (int)(normComponents[idx] * maxValues[i] + 0.5f);
+                    }
                 }
-                da[numColorComponents] = alpha;
-            } else {
-                for (int i = 0, idx = normOffset; i < numComponents;
-                    i++, idx++) {
-                    da[i] = normComponents[idx];
-                }
-            }
-            return da;
+                return ia;
 
-        default:
-            // awt.213=This ComponentColorModel does not support the unnormalized form
-            throw new IllegalArgumentException(Messages.getString("awt.213")); //$NON-NLS-1$
+            case DataBuffer.TYPE_SHORT:
+                short sa[];
+                if (obj == null) {
+                    sa = new short[numComponents];
+                } else {
+                    sa = (short[])obj;
+                }
+
+                if (needAlphaDivide) {
+                    float alpha = normComponents[normOffset + numColorComponents];
+                    for (int i = 0, idx = 0; i < numColorComponents; i++, idx++) {
+                        sa[i] = (short)(normComponents[idx] * alpha * maxValues[i] + 0.5f);
+                    }
+                    sa[numColorComponents] = (short)(alpha * maxValues[numColorComponents] + 0.5f);
+                } else {
+                    for (int i = 0, idx = normOffset; i < numComponents; i++, idx++) {
+                        sa[i] = (short)(normComponents[idx] * maxValues[i] + 0.5f);
+                    }
+                }
+                return sa;
+
+            case DataBuffer.TYPE_FLOAT:
+                float fa[];
+                if (obj == null) {
+                    fa = new float[numComponents];
+                } else {
+                    fa = (float[])obj;
+                }
+
+                if (needAlphaDivide) {
+                    float alpha = normComponents[normOffset + numColorComponents];
+                    for (int i = 0, idx = 0; i < numColorComponents; i++, idx++) {
+                        fa[i] = normComponents[idx] * alpha;
+                    }
+                    fa[numColorComponents] = alpha;
+                } else {
+                    for (int i = 0, idx = normOffset; i < numComponents; i++, idx++) {
+                        fa[i] = normComponents[idx];
+                    }
+                }
+                return fa;
+
+            case DataBuffer.TYPE_DOUBLE:
+                double da[];
+                if (obj == null) {
+                    da = new double[numComponents];
+                } else {
+                    da = (double[])obj;
+                }
+
+                if (needAlphaDivide) {
+                    double alpha = normComponents[normOffset + numColorComponents];
+                    for (int i = 0, idx = 0; i < numColorComponents; i++, idx++) {
+                        da[i] = normComponents[idx] * alpha;
+                    }
+                    da[numColorComponents] = alpha;
+                } else {
+                    for (int i = 0, idx = normOffset; i < numComponents; i++, idx++) {
+                        da[i] = normComponents[idx];
+                    }
+                }
+                return da;
+
+            default:
+                // awt.213=This ComponentColorModel does not support the
+                // unnormalized form
+                throw new IllegalArgumentException(Messages.getString("awt.213")); //$NON-NLS-1$
         }
     }
 
@@ -544,7 +583,7 @@
                 normComp[numColorComponents] = normAlpha;
             }
         }
-        if(hasAlpha && isAlphaPremultiplied){
+        if (hasAlpha && isAlphaPremultiplied) {
             normComp[0] *= normComp[numColorComponents];
             normComp[1] *= normComp[numColorComponents];
             normComp[2] *= normComp[numColorComponents];
@@ -555,7 +594,7 @@
 
     @Override
     public WritableRaster getAlphaRaster(WritableRaster raster) {
-        if(!hasAlpha) {
+        if (!hasAlpha) {
             return null;
         }
 
@@ -564,13 +603,12 @@
         int bandList[] = new int[1];
         bandList[0] = raster.getNumBands() - 1;
 
-        return raster.createWritableChild(x, y, raster.getWidth(),
-                raster.getHeight(), x, y, bandList);
+        return raster.createWritableChild(x, y, raster.getWidth(), raster.getHeight(), x, y,
+                bandList);
     }
 
     @Override
-    public ColorModel coerceData(WritableRaster raster,
-            boolean isAlphaPremultiplied) {
+    public ColorModel coerceData(WritableRaster raster, boolean isAlphaPremultiplied) {
         if (!hasAlpha || this.isAlphaPremultiplied == isAlphaPremultiplied) {
             return this;
         }
@@ -582,333 +620,311 @@
 
         if (isAlphaPremultiplied) {
             switch (transferType) {
-            case DataBuffer.TYPE_BYTE:
-            case DataBuffer.TYPE_USHORT:
-            case DataBuffer.TYPE_INT:
-                float alphaFactor = maxValues[numColorComponents];
-                int iComponents[] = null;
-                int iTransparentComponents[] = new int[numComponents];
-                for (int i = 0; i < h; i++, minY++) {
-                    for (int j = 0, x = minX; j < w; j++, x++) {
-                        iComponents = raster.getPixel(x, minY,
-                                iComponents);
-                        if (iComponents[numColorComponents] == 0) {
-                            raster.setPixel(x, minY, iTransparentComponents);
-                        } else {
-                            float alpha =
-                                iComponents[numColorComponents] /
-                                    alphaFactor;
-                            for (int n = 0; n < numColorComponents; n++) {
-                                iComponents[n] =
-                                    (int) (alpha * iComponents[n] + 0.5f);
+                case DataBuffer.TYPE_BYTE:
+                case DataBuffer.TYPE_USHORT:
+                case DataBuffer.TYPE_INT:
+                    float alphaFactor = maxValues[numColorComponents];
+                    int iComponents[] = null;
+                    int iTransparentComponents[] = new int[numComponents];
+                    for (int i = 0; i < h; i++, minY++) {
+                        for (int j = 0, x = minX; j < w; j++, x++) {
+                            iComponents = raster.getPixel(x, minY, iComponents);
+                            if (iComponents[numColorComponents] == 0) {
+                                raster.setPixel(x, minY, iTransparentComponents);
+                            } else {
+                                float alpha = iComponents[numColorComponents] / alphaFactor;
+                                for (int n = 0; n < numColorComponents; n++) {
+                                    iComponents[n] = (int)(alpha * iComponents[n] + 0.5f);
+                                }
+                                raster.setPixel(x, minY, iComponents);
                             }
-                            raster.setPixel(x, minY, iComponents);
                         }
+
                     }
+                    break;
 
-                }
-                break;
-
-            case DataBuffer.TYPE_SHORT:
-                float sAlphaFactor = maxValues[numColorComponents];
-                short sComponents[] = null;
-                short sTransparentComponents[] = new short[numComponents];
-                for (int i = 0; i < h; i++, minY++) {
-                    for (int j = 0, x = minX; j < w; j++, x++) {
-                        sComponents = (short[]) raster.getDataElements(x, minY,
-                                sComponents);
-                        if (sComponents[numColorComponents] == 0) {
-                            raster.setDataElements(x, minY,
-                                    sTransparentComponents);
-                        } else {
-                            float alpha =
-                                sComponents[numColorComponents] /
-                                sAlphaFactor;
-                            for (int n = 0; n < numColorComponents; n++) {
-                                sComponents[n] =
-                                    (byte) (alpha * sComponents[n] + 0.5f);
+                case DataBuffer.TYPE_SHORT:
+                    float sAlphaFactor = maxValues[numColorComponents];
+                    short sComponents[] = null;
+                    short sTransparentComponents[] = new short[numComponents];
+                    for (int i = 0; i < h; i++, minY++) {
+                        for (int j = 0, x = minX; j < w; j++, x++) {
+                            sComponents = (short[])raster.getDataElements(x, minY, sComponents);
+                            if (sComponents[numColorComponents] == 0) {
+                                raster.setDataElements(x, minY, sTransparentComponents);
+                            } else {
+                                float alpha = sComponents[numColorComponents] / sAlphaFactor;
+                                for (int n = 0; n < numColorComponents; n++) {
+                                    sComponents[n] = (byte)(alpha * sComponents[n] + 0.5f);
+                                }
+                                raster.setDataElements(x, minY, sComponents);
                             }
-                            raster.setDataElements(x, minY, sComponents);
                         }
+
                     }
+                    break;
 
-                }
-                break;
-
-            case DataBuffer.TYPE_FLOAT:
-                float fComponents[] = null;
-                float fTransparentComponents[] = new float[numComponents];
-                for (int i = 0; i < h; i++, minY++) {
-                    for (int j = 0, x = minX; j < w; j++, x++) {
-                        fComponents = raster.getPixel(x, minY, fComponents);
-                        if (fComponents[numColorComponents] == 0.0f) {
-                            raster.setDataElements(x, minY,
-                                    fTransparentComponents);
-                        } else {
-                            float alpha = fComponents[numColorComponents];
-                            for (int n = 0; n < numColorComponents; n++) {
-                                fComponents[n] = fComponents[n] * alpha;
+                case DataBuffer.TYPE_FLOAT:
+                    float fComponents[] = null;
+                    float fTransparentComponents[] = new float[numComponents];
+                    for (int i = 0; i < h; i++, minY++) {
+                        for (int j = 0, x = minX; j < w; j++, x++) {
+                            fComponents = raster.getPixel(x, minY, fComponents);
+                            if (fComponents[numColorComponents] == 0.0f) {
+                                raster.setDataElements(x, minY, fTransparentComponents);
+                            } else {
+                                float alpha = fComponents[numColorComponents];
+                                for (int n = 0; n < numColorComponents; n++) {
+                                    fComponents[n] = fComponents[n] * alpha;
+                                }
+                                raster.setPixel(x, minY, fComponents);
                             }
-                            raster.setPixel(x, minY, fComponents);
                         }
+
                     }
+                    break;
 
-                }
-                break;
-
-            case DataBuffer.TYPE_DOUBLE:
-                double dComponents[] = null;
-                double dTransparentComponents[] = new double[numComponents];
-                for (int i = 0; i < h; i++, minY++) {
-                    for (int j = 0, x = minX; j < w; j++, x++) {
-                        dComponents = raster.getPixel(x, minY, dComponents);
-                        if (dComponents[numColorComponents] == 0.0) {
-                            raster.setPixel(x, minY, dTransparentComponents);
-                        } else {
-                            double alpha = dComponents[numColorComponents];
-                            for (int n = 0; n < numColorComponents; n++) {
-                                dComponents[n] = dComponents[n] * alpha;
+                case DataBuffer.TYPE_DOUBLE:
+                    double dComponents[] = null;
+                    double dTransparentComponents[] = new double[numComponents];
+                    for (int i = 0; i < h; i++, minY++) {
+                        for (int j = 0, x = minX; j < w; j++, x++) {
+                            dComponents = raster.getPixel(x, minY, dComponents);
+                            if (dComponents[numColorComponents] == 0.0) {
+                                raster.setPixel(x, minY, dTransparentComponents);
+                            } else {
+                                double alpha = dComponents[numColorComponents];
+                                for (int n = 0; n < numColorComponents; n++) {
+                                    dComponents[n] = dComponents[n] * alpha;
+                                }
+                                raster.setPixel(x, minY, dComponents);
                             }
-                            raster.setPixel(x, minY, dComponents);
                         }
+
                     }
+                    break;
 
-                }
-                break;
-
-            default:
-                // awt.219=This transferType is not supported by this color model
-                throw new UnsupportedOperationException(Messages.getString("awt.219")); //$NON-NLS-1$
+                default:
+                    // awt.219=This transferType is not supported by this color
+                    // model
+                    throw new UnsupportedOperationException(Messages.getString("awt.219")); //$NON-NLS-1$
             }
         } else {
             switch (transferType) {
-            case DataBuffer.TYPE_BYTE:
-            case DataBuffer.TYPE_USHORT:
-            case DataBuffer.TYPE_INT:
-                float alphaFactor = maxValues[numColorComponents];
-                int iComponents[] = null;
-                int iTransparentComponents[] = new int[numComponents];
-                for (int i = 0; i < h; i++, minY++) {
-                    for (int j = 0, x = minX; j < w; j++, x++) {
-                        iComponents = raster.getPixel(x, minY,
-                                iComponents);
-                        if (iComponents[numColorComponents] == 0) {
-                            raster.setPixel(x, minY, iTransparentComponents);
-                        } else {
-                            float alpha =
-                                iComponents[numColorComponents] /
-                                    alphaFactor;
-                            for (int n = 0; n < numColorComponents; n++) {
-                                iComponents[n] =
-                                    (int) (iComponents[n] /
-                                            alpha + 0.5f);
+                case DataBuffer.TYPE_BYTE:
+                case DataBuffer.TYPE_USHORT:
+                case DataBuffer.TYPE_INT:
+                    float alphaFactor = maxValues[numColorComponents];
+                    int iComponents[] = null;
+                    int iTransparentComponents[] = new int[numComponents];
+                    for (int i = 0; i < h; i++, minY++) {
+                        for (int j = 0, x = minX; j < w; j++, x++) {
+                            iComponents = raster.getPixel(x, minY, iComponents);
+                            if (iComponents[numColorComponents] == 0) {
+                                raster.setPixel(x, minY, iTransparentComponents);
+                            } else {
+                                float alpha = iComponents[numColorComponents] / alphaFactor;
+                                for (int n = 0; n < numColorComponents; n++) {
+                                    iComponents[n] = (int)(iComponents[n] / alpha + 0.5f);
+                                }
+                                raster.setPixel(x, minY, iComponents);
                             }
-                            raster.setPixel(x, minY, iComponents);
                         }
+
                     }
+                    break;
 
-                }
-                break;
-
-            case DataBuffer.TYPE_SHORT:
-                float sAlphaFactor = maxValues[numColorComponents];
-                short sComponents[] = null;
-                short sTransparentComponents[] = new short[numComponents];
-                for (int i = 0; i < h; i++, minY++) {
-                    for (int j = 0, x = minX; j < w; j++, x++) {
-                        sComponents = (short[]) raster.getDataElements(x, minY,
-                                sComponents);
-                        if (sComponents[numColorComponents] == 0) {
-                            raster.setDataElements(x, minY,
-                                    sTransparentComponents);
-                        } else {
-                            float alpha =
-                                sComponents[numColorComponents] /
-                                    sAlphaFactor;
-                            for (int n = 0; n < numColorComponents; n++) {
-                                sComponents[n] =
-                                    (byte) (sComponents[n] /
-                                            alpha + 0.5f);
+                case DataBuffer.TYPE_SHORT:
+                    float sAlphaFactor = maxValues[numColorComponents];
+                    short sComponents[] = null;
+                    short sTransparentComponents[] = new short[numComponents];
+                    for (int i = 0; i < h; i++, minY++) {
+                        for (int j = 0, x = minX; j < w; j++, x++) {
+                            sComponents = (short[])raster.getDataElements(x, minY, sComponents);
+                            if (sComponents[numColorComponents] == 0) {
+                                raster.setDataElements(x, minY, sTransparentComponents);
+                            } else {
+                                float alpha = sComponents[numColorComponents] / sAlphaFactor;
+                                for (int n = 0; n < numColorComponents; n++) {
+                                    sComponents[n] = (byte)(sComponents[n] / alpha + 0.5f);
+                                }
+                                raster.setDataElements(x, minY, sComponents);
                             }
-                            raster.setDataElements(x, minY, sComponents);
                         }
+
                     }
+                    break;
 
-                }
-                break;
-
-            case DataBuffer.TYPE_FLOAT:
-                float fComponents[] = null;
-                float fTransparentComponents[] = new float[numComponents];
-                for (int i = 0; i < h; i++, minY++) {
-                    for (int j = 0, x = minX; j < w; j++, x++) {
-                        fComponents = raster.getPixel(x, minY, fComponents);
-                        if (fComponents[numColorComponents] == 0.0f) {
-                            raster.setDataElements(x, minY,
-                                    fTransparentComponents);
-                        } else {
-                            float alpha = fComponents[numColorComponents];
-                            for (int n = 0; n < numColorComponents; n++) {
-                                fComponents[n] = fComponents[n] / alpha;
+                case DataBuffer.TYPE_FLOAT:
+                    float fComponents[] = null;
+                    float fTransparentComponents[] = new float[numComponents];
+                    for (int i = 0; i < h; i++, minY++) {
+                        for (int j = 0, x = minX; j < w; j++, x++) {
+                            fComponents = raster.getPixel(x, minY, fComponents);
+                            if (fComponents[numColorComponents] == 0.0f) {
+                                raster.setDataElements(x, minY, fTransparentComponents);
+                            } else {
+                                float alpha = fComponents[numColorComponents];
+                                for (int n = 0; n < numColorComponents; n++) {
+                                    fComponents[n] = fComponents[n] / alpha;
+                                }
+                                raster.setPixel(x, minY, fComponents);
                             }
-                            raster.setPixel(x, minY, fComponents);
                         }
+
                     }
+                    break;
 
-                }
-                break;
-
-            case DataBuffer.TYPE_DOUBLE:
-                double dComponents[] = null;
-                double dTransparentComponents[] = new double[numComponents];
-                for (int i = 0; i < h; i++, minY++) {
-                    for (int j = 0, x = minX; j < w; j++, x++) {
-                        dComponents = raster.getPixel(x, minY, dComponents);
-                        if (dComponents[numColorComponents] == 0.0) {
-                            raster.setPixel(x, minY, dTransparentComponents);
-                        } else {
-                            double alpha = dComponents[numColorComponents];
-                            for (int n = 0; n < numColorComponents; n++) {
-                                dComponents[n] = dComponents[n] / alpha;
+                case DataBuffer.TYPE_DOUBLE:
+                    double dComponents[] = null;
+                    double dTransparentComponents[] = new double[numComponents];
+                    for (int i = 0; i < h; i++, minY++) {
+                        for (int j = 0, x = minX; j < w; j++, x++) {
+                            dComponents = raster.getPixel(x, minY, dComponents);
+                            if (dComponents[numColorComponents] == 0.0) {
+                                raster.setPixel(x, minY, dTransparentComponents);
+                            } else {
+                                double alpha = dComponents[numColorComponents];
+                                for (int n = 0; n < numColorComponents; n++) {
+                                    dComponents[n] = dComponents[n] / alpha;
+                                }
+                                raster.setPixel(x, minY, dComponents);
                             }
-                            raster.setPixel(x, minY, dComponents);
                         }
-                    }
 
-                }
-                break;
-            default:
-                // awt.219=This transferType is not supported by this color model
-                throw new UnsupportedOperationException(Messages.getString("awt.219")); //$NON-NLS-1$
+                    }
+                    break;
+                default:
+                    // awt.219=This transferType is not supported by this color
+                    // model
+                    throw new UnsupportedOperationException(Messages.getString("awt.219")); //$NON-NLS-1$
             }
         }
 
         if (!signed) {
-            return new ComponentColorModel(cs, bits, hasAlpha,
-                    isAlphaPremultiplied, transparency, transferType);
+            return new ComponentColorModel(cs, bits, hasAlpha, isAlphaPremultiplied, transparency,
+                    transferType);
         }
 
-        return new ComponentColorModel(cs, null, hasAlpha,
-                isAlphaPremultiplied, transparency, transferType);
+        return new ComponentColorModel(cs, null, hasAlpha, isAlphaPremultiplied, transparency,
+                transferType);
     }
 
     @Override
     public int[] getComponents(Object pixel, int[] components, int offset) {
         if (donotSupportUnnormalized) {
-            // awt.213=This ComponentColorModel does not support the unnormalized form
+            // awt.213=This ComponentColorModel does not support the
+            // unnormalized form
             throw new IllegalArgumentException(Messages.getString("awt.213")); //$NON-NLS-1$
         }
 
         if (components == null) {
             components = new int[offset + numComponents];
         } else if (offset + numComponents > components.length) {
-            // awt.218=The components array is not large enough to hold all the color and alpha components
+            // awt.218=The components array is not large enough to hold all the
+            // color and alpha components
             throw new IllegalArgumentException(Messages.getString("awt.218")); //$NON-NLS-1$
         }
 
         switch (transferType) {
-        case DataBuffer.TYPE_BYTE:
-            byte ba[] = (byte[]) pixel;
+            case DataBuffer.TYPE_BYTE:
+                byte ba[] = (byte[])pixel;
 
-            for (int i = 0, idx = offset; i < numComponents; i++, idx++) {
-                components[idx] = ba[i] & 0xff;
-            }
-            return components;
+                for (int i = 0, idx = offset; i < numComponents; i++, idx++) {
+                    components[idx] = ba[i] & 0xff;
+                }
+                return components;
 
-        case DataBuffer.TYPE_USHORT:
-            short sa[] = (short[]) pixel;
-            for (int i = 0, idx = offset; i < numComponents; i++, idx++) {
-                components[idx] = sa[i] & 0xffff;
-            }
-            return components;
+            case DataBuffer.TYPE_USHORT:
+                short sa[] = (short[])pixel;
+                for (int i = 0, idx = offset; i < numComponents; i++, idx++) {
+                    components[idx] = sa[i] & 0xffff;
+                }
+                return components;
 
-        case DataBuffer.TYPE_INT:
-            int ia[] = (int[]) pixel;
-            for (int i = 0, idx = offset; i < numComponents; i++, idx++) {
-                components[idx] = ia[i];
-            }
-            return components;
+            case DataBuffer.TYPE_INT:
+                int ia[] = (int[])pixel;
+                for (int i = 0, idx = offset; i < numComponents; i++, idx++) {
+                    components[idx] = ia[i];
+                }
+                return components;
 
-        default:
-            // awt.217=The transfer type of this ComponentColorModel is not one
-            //          of the following transfer types: DataBuffer.TYPE_BYTE,
-            //          DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT
-            throw new UnsupportedOperationException(Messages
-                    .getString("awt.217")); //$NON-NLS-1$
+            default:
+                // awt.217=The transfer type of this ComponentColorModel is not
+                // one
+                // of the following transfer types: DataBuffer.TYPE_BYTE,
+                // DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT
+                throw new UnsupportedOperationException(Messages.getString("awt.217")); //$NON-NLS-1$
         }
 
     }
 
     @Override
-    public float[] getNormalizedComponents(Object pixel,
-            float normComponents[], int normOffset) {
+    public float[] getNormalizedComponents(Object pixel, float normComponents[], int normOffset) {
 
         if (normComponents == null) {
             normComponents = new float[numComponents + normOffset];
         }
 
         switch (transferType) {
-        case DataBuffer.TYPE_BYTE:
-            byte ba[] = (byte[]) pixel;
-            for (int i = 0, idx = normOffset; i < numComponents; i++, idx++) {
-                normComponents[idx] = (ba[i] & 0xff) * scaleFactors[i];
-            }
-            break;
+            case DataBuffer.TYPE_BYTE:
+                byte ba[] = (byte[])pixel;
+                for (int i = 0, idx = normOffset; i < numComponents; i++, idx++) {
+                    normComponents[idx] = (ba[i] & 0xff) * scaleFactors[i];
+                }
+                break;
 
-        case DataBuffer.TYPE_USHORT:
-            short usa[] = (short[]) pixel;
-            for (int i = 0, idx = normOffset; i < numComponents; i++, idx++) {
-                normComponents[idx] = (usa[i] & 0xffff)
-                        * scaleFactors[i];
-            }
-            break;
+            case DataBuffer.TYPE_USHORT:
+                short usa[] = (short[])pixel;
+                for (int i = 0, idx = normOffset; i < numComponents; i++, idx++) {
+                    normComponents[idx] = (usa[i] & 0xffff) * scaleFactors[i];
+                }
+                break;
 
-        case DataBuffer.TYPE_INT:
-            int ia[] = (int[]) pixel;
-            for (int i = 0, idx = normOffset; i < numComponents; i++, idx++) {
-                normComponents[idx] = ia[i] * scaleFactors[i];
-            }
-            break;
+            case DataBuffer.TYPE_INT:
+                int ia[] = (int[])pixel;
+                for (int i = 0, idx = normOffset; i < numComponents; i++, idx++) {
+                    normComponents[idx] = ia[i] * scaleFactors[i];
+                }
+                break;
 
-        case DataBuffer.TYPE_SHORT:
-            short sa[] = (short[]) pixel;
-            for (int i = 0, idx = normOffset; i < numComponents; i++, idx++) {
-                normComponents[idx] = sa[i] * scaleFactors[i];
-            }
-            break;
+            case DataBuffer.TYPE_SHORT:
+                short sa[] = (short[])pixel;
+                for (int i = 0, idx = normOffset; i < numComponents; i++, idx++) {
+                    normComponents[idx] = sa[i] * scaleFactors[i];
+                }
+                break;
 
-        case DataBuffer.TYPE_FLOAT:
-            float fa[] = (float[]) pixel;
-            for (int i = 0, idx = normOffset; i < numComponents; i++, idx++) {
-                normComponents[idx] = fa[i];
-            }
-            break;
+            case DataBuffer.TYPE_FLOAT:
+                float fa[] = (float[])pixel;
+                for (int i = 0, idx = normOffset; i < numComponents; i++, idx++) {
+                    normComponents[idx] = fa[i];
+                }
+                break;
 
-        case DataBuffer.TYPE_DOUBLE:
-            double da[] = (double[]) pixel;
-            for (int i = 0, idx = normOffset; i < numComponents; i++, idx++) {
-                normComponents[idx] = (float) da[i];
-            }
-            break;
+            case DataBuffer.TYPE_DOUBLE:
+                double da[] = (double[])pixel;
+                for (int i = 0, idx = normOffset; i < numComponents; i++, idx++) {
+                    normComponents[idx] = (float)da[i];
+                }
+                break;
 
-        default:
-            // awt.21A=This ComponentColorModel does not support this transferType
-            throw new IllegalArgumentException(Messages.getString("awt.21A")); //$NON-NLS-1$
+            default:
+                // awt.21A=This ComponentColorModel does not support this
+                // transferType
+                throw new IllegalArgumentException(Messages.getString("awt.21A")); //$NON-NLS-1$
         }
 
         if (needAlphaDivide) {
             float alpha = normComponents[normOffset + numColorComponents];
-            for (int i = 0, idx = normOffset; i < numColorComponents;
-                i++, idx++) {
+            for (int i = 0, idx = normOffset; i < numColorComponents; i++, idx++) {
                 normComponents[idx] /= alpha;
             }
         }
 
         if (needScale) {
-            for (int i = 0, idx = normOffset; i < numColorComponents;
-                i++, idx++) {
-                normComponents[idx] = minVals[i] +
-                    ranges[i] * normComponents[idx];
+            for (int i = 0, idx = normOffset; i < numColorComponents; i++, idx++) {
+                normComponents[idx] = minVals[i] + ranges[i] * normComponents[idx];
             }
         }
         return normComponents;
@@ -934,8 +950,7 @@
             int gray = getRed(inData);
             return (alpha << 24 | gray << 16 | gray << 8 | gray);
         }
-        return (alpha << 24 | getRed(inData) << 16 | getGreen(inData) << 8 |
-                getBlue(inData));
+        return (alpha << 24 | getRed(inData) << 16 | getGreen(inData) << 8 | getBlue(inData));
     }
 
     @Override
@@ -956,50 +971,50 @@
         int alpha = 0;
 
         switch (transferType) {
-        case DataBuffer.TYPE_BYTE: {
-            byte ba[] = (byte[]) inData;
-            alpha = ba[numColorComponents] & 0xff;
-            if (bits[numColorComponents] != 8) {
-                return alphaLUT[alpha] & 0xff;
+            case DataBuffer.TYPE_BYTE: {
+                byte ba[] = (byte[])inData;
+                alpha = ba[numColorComponents] & 0xff;
+                if (bits[numColorComponents] != 8) {
+                    return alphaLUT[alpha] & 0xff;
+                }
+                return alpha;
             }
-            return alpha;
-        }
-        case DataBuffer.TYPE_USHORT: {
-            short usa[] = (short[]) inData;
-            alpha = usa[numColorComponents] & 0xffff;
-            if (bits[numColorComponents] != 8) {
-                return alphaLUT[alpha] & 0xff;
+            case DataBuffer.TYPE_USHORT: {
+                short usa[] = (short[])inData;
+                alpha = usa[numColorComponents] & 0xffff;
+                if (bits[numColorComponents] != 8) {
+                    return alphaLUT[alpha] & 0xff;
+                }
+                return alpha;
             }
-            return alpha;
-        }
-        case DataBuffer.TYPE_INT: {
-            int ia[] = (int[]) inData;
-            alpha = ia[numColorComponents];
-            if (bits[numColorComponents] != 8) {
-                return alphaLUT[alpha] & 0xff;
+            case DataBuffer.TYPE_INT: {
+                int ia[] = (int[])inData;
+                alpha = ia[numColorComponents];
+                if (bits[numColorComponents] != 8) {
+                    return alphaLUT[alpha] & 0xff;
+                }
+                return alpha;
             }
-            return alpha;
-        }
-        case DataBuffer.TYPE_SHORT: {
-            short sa[] = (short[]) inData;
-            alpha = sa[numColorComponents];
-            if (bits[numColorComponents] != 8) {
-                return alphaLUT[alpha] & 0xff;
+            case DataBuffer.TYPE_SHORT: {
+                short sa[] = (short[])inData;
+                alpha = sa[numColorComponents];
+                if (bits[numColorComponents] != 8) {
+                    return alphaLUT[alpha] & 0xff;
+                }
+                return alpha;
             }
-            return alpha;
-        }
-        case DataBuffer.TYPE_FLOAT: {
-            float fa[] = (float[]) inData;
-            return (int) (fa[numColorComponents] * 255.0f + 0.5f);
-        }
-        case DataBuffer.TYPE_DOUBLE: {
-            double da[] = (double[]) inData;
-            return (int) (da[numColorComponents] * 255.0 + 0.5);
-        }
-        default: {
-            // awt.214=This Color Model doesn't support this transferType
-            throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
-        }
+            case DataBuffer.TYPE_FLOAT: {
+                float fa[] = (float[])inData;
+                return (int)(fa[numColorComponents] * 255.0f + 0.5f);
+            }
+            case DataBuffer.TYPE_DOUBLE: {
+                double da[] = (double[])inData;
+                return (int)(da[numColorComponents] * 255.0 + 0.5);
+            }
+            default: {
+                // awt.214=This Color Model doesn't support this transferType
+                throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
+            }
         }
     }
 
@@ -1032,14 +1047,14 @@
         }
 
         switch (transferType) {
-        case DataBuffer.TYPE_BYTE:
-        case DataBuffer.TYPE_USHORT:
-            return new PixelInterleavedSampleModel(transferType, w, h,
-                    numComponents, w * numComponents, bandOffsets);
+            case DataBuffer.TYPE_BYTE:
+            case DataBuffer.TYPE_USHORT:
+                return new PixelInterleavedSampleModel(transferType, w, h, numComponents, w
+                        * numComponents, bandOffsets);
 
-        default:
-            return new ComponentSampleModel(transferType, w, h, numComponents,
-                    w * numComponents, bandOffsets);
+            default:
+                return new ComponentSampleModel(transferType, w, h, numComponents, w
+                        * numComponents, bandOffsets);
         }
     }
 
@@ -1067,15 +1082,15 @@
     }
 
     @Override
-    public float[] getNormalizedComponents(int components[], int offset,
-            float normComponents[], int normOffset) {
+    public float[] getNormalizedComponents(int components[], int offset, float normComponents[],
+            int normOffset) {
         if (donotSupportUnnormalized) {
-            // awt.213=This ComponentColorModel does not support the unnormalized form
+            // awt.213=This ComponentColorModel does not support the
+            // unnormalized form
             throw new IllegalArgumentException(Messages.getString("awt.213")); //$NON-NLS-1$
         }
 
-        return super.getNormalizedComponents(components, offset,
-                normComponents, normOffset);
+        return super.getNormalizedComponents(components, offset, normComponents, normOffset);
     }
 
     @Override
@@ -1085,28 +1100,30 @@
             throw new IllegalArgumentException(Messages.getString("awt.212")); //$NON-NLS-1$
         }
         if (donotSupportUnnormalized) {
-            // awt.213=This ComponentColorModel does not support the unnormalized form
+            // awt.213=This ComponentColorModel does not support the
+            // unnormalized form
             throw new IllegalArgumentException(Messages.getString("awt.213")); //$NON-NLS-1$
         }
         return components[offset];
     }
 
     @Override
-    public int[] getUnnormalizedComponents(float[] normComponents,
-            int normOffset, int[] components, int offset) {
+    public int[] getUnnormalizedComponents(float[] normComponents, int normOffset,
+            int[] components, int offset) {
 
         if (donotSupportUnnormalized) {
-            // awt.213=This ComponentColorModel does not support the unnormalized form
+            // awt.213=This ComponentColorModel does not support the
+            // unnormalized form
             throw new IllegalArgumentException(Messages.getString("awt.213")); //$NON-NLS-1$
         }
 
         if (normComponents.length - normOffset < numComponents) {
-            // awt.21B=The length of normComponents minus normOffset is less than numComponents
+            // awt.21B=The length of normComponents minus normOffset is less
+            // than numComponents
             throw new IllegalArgumentException(Messages.getString("awt.21B")); //$NON-NLS-1$
         }
 
-        return super.getUnnormalizedComponents(normComponents, normOffset,
-                components, offset);
+        return super.getUnnormalizedComponents(normComponents, normOffset, components, offset);
     }
 
     @Override
@@ -1123,19 +1140,19 @@
         Object pixel = getDataElements(normComponents, normOffset, null);
 
         switch (transferType) {
-        case DataBuffer.TYPE_BYTE:
-            byte ba[] = (byte[]) pixel;
-            return ba[0] & 0xff;
-        case DataBuffer.TYPE_USHORT:
-            short sa[] = (short[]) pixel;
-            return sa[0] & 0xffff;
-        case DataBuffer.TYPE_INT:
-            int ia[] = (int[]) pixel;
-            return ia[0];
-        default:
-            // awt.211=Pixel values for this ColorModel are not conveniently
-            //          representable as a single int
-            throw new IllegalArgumentException(Messages.getString("awt.211")); //$NON-NLS-1$
+            case DataBuffer.TYPE_BYTE:
+                byte ba[] = (byte[])pixel;
+                return ba[0] & 0xff;
+            case DataBuffer.TYPE_USHORT:
+                short sa[] = (short[])pixel;
+                return sa[0] & 0xffff;
+            case DataBuffer.TYPE_INT:
+                int ia[] = (int[])pixel;
+                return ia[0];
+            default:
+                // awt.211=Pixel values for this ColorModel are not conveniently
+                // representable as a single int
+                throw new IllegalArgumentException(Messages.getString("awt.211")); //$NON-NLS-1$
         }
     }
 
@@ -1146,7 +1163,8 @@
             throw new IllegalArgumentException(Messages.getString("awt.212")); //$NON-NLS-1$
         }
         if (donotSupportUnnormalized) {
-            // awt.213=This ComponentColorModel does not support the unnormalized form
+            // awt.213=This ComponentColorModel does not support the
+            // unnormalized form
             throw new IllegalArgumentException(Messages.getString("awt.213")); //$NON-NLS-1$
         }
 
@@ -1161,31 +1179,31 @@
     @Override
     public int getRed(int pixel) {
         float rgb[] = toRGB(pixel);
-        return (int) (rgb[0] * 255.0f + 0.5f);
+        return (int)(rgb[0] * 255.0f + 0.5f);
     }
 
     @Override
     public int getRGB(int pixel) {
-        return (getAlpha(pixel) << 24) | (getRed(pixel) << 16) |
-               (getGreen(pixel) << 8) | getBlue(pixel);
+        return (getAlpha(pixel) << 24) | (getRed(pixel) << 16) | (getGreen(pixel) << 8)
+                | getBlue(pixel);
     }
 
     @Override
     public int getGreen(int pixel) {
         float rgb[] = toRGB(pixel);
-        return (int) (rgb[1] * 255.0f + 0.5f);
+        return (int)(rgb[1] * 255.0f + 0.5f);
     }
 
     @Override
     public int getBlue(int pixel) {
         float rgb[] = toRGB(pixel);
-        return (int) (rgb[2] * 255.0f + 0.5f);
+        return (int)(rgb[2] * 255.0f + 0.5f);
     }
 
     @Override
     public int getAlpha(int pixel) {
 
-        // This method throw IllegalArgumentException according to 
+        // This method throw IllegalArgumentException according to
         // Java API Spacification
         if (signed) {
             // awt.210=The component value for this ColorModel is signed
@@ -1210,24 +1228,19 @@
         if (hasAlpha && bits[numColorComponents] != 8 && integral) {
             alphaLUT = new byte[maxValues[numColorComponents] + 1];
             for (int i = 0; i <= maxValues[numColorComponents]; i++) {
-                alphaLUT[i] = (byte) (scaleFactors[numColorComponents] * i + 
-                        0.5f);
+                alphaLUT[i] = (byte)(scaleFactors[numColorComponents] * i + 0.5f);
             }
         }
 
         if (is_LINEAR_RGB) {
             if (maxBitLength > 8) {
                 LINEAR_RGB_Length = 16;
-                from_LINEAR_RGB_LUT =
-                    LUTColorConverter.getFrom16lRGBtosRGB_LUT();
-                to_LINEAR_16RGB_LUT =
-                    LUTColorConverter.getFromsRGBto16lRGB_LUT();
+                from_LINEAR_RGB_LUT = LUTColorConverter.getFrom16lRGBtosRGB_LUT();
+                to_LINEAR_16RGB_LUT = LUTColorConverter.getFromsRGBto16lRGB_LUT();
             } else {
                 LINEAR_RGB_Length = 8;
-                from_LINEAR_RGB_LUT =
-                    LUTColorConverter.getFrom8lRGBtosRGB_LUT();
-                to_LINEAR_8RGB_LUT =
-                    LUTColorConverter.getFromsRGBto8lRGB_LUT();
+                from_LINEAR_RGB_LUT = LUTColorConverter.getFrom8lRGBtosRGB_LUT();
+                to_LINEAR_8RGB_LUT = LUTColorConverter.getFromsRGBto8lRGB_LUT();
             }
             fFactor = ((1 << LINEAR_RGB_Length) - 1);
         } else {
@@ -1248,8 +1261,7 @@
                         }
                         colorLUTs[i] = new byte[maxValues[i] + 1];
                         for (int j = 0; j <= maxValues[0]; j++) {
-                            colorLUTs[i][j] =
-                                (byte) (scaleFactors[i] * j + 0.5f);
+                            colorLUTs[i][j] = (byte)(scaleFactors[i] * j + 0.5f);
                         }
                     }
                 }
@@ -1269,10 +1281,9 @@
                         for (int j = 0; j <= maxValues[0]; j++) {
                             int idx;
                             if (LINEAR_RGB_Length == 8) {
-                                idx = (int) (scaleFactors[i] * j + 0.5f);
+                                idx = (int)(scaleFactors[i] * j + 0.5f);
                             } else {
-                                idx = (int) (scaleFactors[i] * j * 257.0f +
-                                        0.5f);
+                                idx = (int)(scaleFactors[i] * j * 257.0f + 0.5f);
                             }
                             colorLUTs[i][j] = from_LINEAR_RGB_LUT[idx];
                         }
@@ -1286,13 +1297,13 @@
     /**
      * To rgb.
      * 
-     * @param pixel - int representation of pixel
-     * 
-     * @return - array of normalized sRGB components
+     * @param pixel
+     *            the integer representation of the pixel.
+     * @return the array of normalized sRGB components.
      */
     private float[] toRGB(int pixel) {
-        
-        // This method throw IllegalArgumentException according to 
+
+        // This method throw IllegalArgumentException according to
         // Java API Spacification
         if (signed) {
             // awt.210=The component value for this ColorModel is signed
@@ -1307,23 +1318,23 @@
         Object obj = null;
 
         switch (transferType) {
-        case DataBuffer.TYPE_BYTE:
-            byte ba[] = new byte[1];
-            ba[0] = (byte) pixel;
-            obj = ba;
-            break;
+            case DataBuffer.TYPE_BYTE:
+                byte ba[] = new byte[1];
+                ba[0] = (byte)pixel;
+                obj = ba;
+                break;
 
-        case DataBuffer.TYPE_USHORT:
-            short sa[] = new short[1];
-            sa[0] = (short) pixel;
-            obj = sa;
-            break;
+            case DataBuffer.TYPE_USHORT:
+                short sa[] = new short[1];
+                sa[0] = (short)pixel;
+                obj = sa;
+                break;
 
-        case DataBuffer.TYPE_INT:
-            int ia[] = new int[1];
-            ia[0] = pixel;
-            obj = ia;
-            break;
+            case DataBuffer.TYPE_INT:
+                int ia[] = new int[1];
+                ia[0] = pixel;
+                obj = ia;
+                break;
 
         }
 
@@ -1331,12 +1342,13 @@
     }
 
     /**
-     * Gets the rgb component.
+     * Gets the RGB component.
      * 
-     * @param pixel - pixel
-     * @param idx - index of component
-     * 
-     * @return - RGB value from 0 to 255 pixel's component
+     * @param pixel
+     *            the pixel.
+     * @param idx
+     *            the index of component.
+     * @return the RGB value from 0 to 255 pixel's component.
      */
     private int getRGBComponent(Object pixel, int idx) {
         if (is_sRGB) {
@@ -1355,117 +1367,116 @@
 
         float normComp[] = getNormalizedComponents(pixel, null, 0);
         float rgbComp[] = cs.toRGB(normComp);
-        return (int) (rgbComp[idx] * 255.0f + 0.5f);
+        return (int)(rgbComp[idx] * 255.0f + 0.5f);
     }
 
     /**
      * Gets the def component.
      * 
-     * @param pixel - pixel
-     * @param idx - index of component
-     * 
-     * @return - tentative value of the pixel component
+     * @param pixel
+     *            the pixel.
+     * @param idx
+     *            the index of component.
+     * @return the tentative value of the pixel component.
      */
     private int getDefComponent(Object pixel, int idx) {
         int comp = 0;
         calcValue = false;
 
         switch (transferType) {
-        case DataBuffer.TYPE_BYTE:
-            byte ba[] = (byte[]) pixel;
-            comp = ba[idx] & 0xff;
-            if (needAlphaDivide) {
-                int alpha = ba[numColorComponents] & 0xff;
-                if (alpha == 0) {
-                    comp = 0;
+            case DataBuffer.TYPE_BYTE:
+                byte ba[] = (byte[])pixel;
+                comp = ba[idx] & 0xff;
+                if (needAlphaDivide) {
+                    int alpha = ba[numColorComponents] & 0xff;
+                    if (alpha == 0) {
+                        comp = 0;
+                    } else {
+                        float normAlpha = scaleFactors[numColorComponents] * alpha;
+                        comp = (int)(comp * fFactor / normAlpha + 0.5f);
+                    }
+                    calcValue = true;
+                }
+                return comp;
+
+            case DataBuffer.TYPE_USHORT:
+                short usa[] = (short[])pixel;
+                comp = usa[idx] & 0xffff;
+                if (needAlphaDivide) {
+                    int alpha = usa[numColorComponents] & 0xffff;
+                    if (alpha == 0) {
+                        comp = 0;
+                    } else {
+                        float normAlpha = scaleFactors[numColorComponents] * alpha;
+                        comp = (int)(comp * fFactor / normAlpha + 0.5f);
+                    }
+                    calcValue = true;
+                }
+                return comp;
+
+            case DataBuffer.TYPE_INT:
+                int ia[] = (int[])pixel;
+                comp = ia[idx];
+                if (needAlphaDivide) {
+                    int alpha = ia[numColorComponents];
+                    if (alpha == 0) {
+                        comp = 0;
+                    } else {
+                        float normAlpha = scaleFactors[numColorComponents] * alpha;
+                        comp = (int)(comp * fFactor / normAlpha + 0.5f);
+                    }
+                    calcValue = true;
+                }
+                return comp;
+
+            case DataBuffer.TYPE_SHORT:
+                short sa[] = (short[])pixel;
+                comp = sa[idx];
+                if (needAlphaDivide) {
+                    int alpha = sa[numColorComponents];
+                    if (alpha == 0) {
+                        comp = 0;
+                    } else {
+                        float normAlpha = scaleFactors[numColorComponents] * alpha;
+                        comp = (int)(comp * fFactor / normAlpha + 0.5f);
+                    }
+                    calcValue = true;
+                }
+                return comp;
+
+            case DataBuffer.TYPE_FLOAT:
+                float fa[] = (float[])pixel;
+                if (needAlphaDivide) {
+                    float alpha = fa[numColorComponents];
+                    if (fa[numColorComponents] == 0.0f) {
+                        comp = 0;
+                    } else {
+                        comp = (int)(fa[idx] * fFactor / alpha + 0.5f);
+                    }
                 } else {
-                    float normAlpha = scaleFactors[numColorComponents] * alpha;
-                    comp = (int) (comp * fFactor / normAlpha + 0.5f);
+                    comp = (int)(fa[idx] * fFactor + 0.5f);
                 }
                 calcValue = true;
-            }
-            return comp;
+                return comp;
 
-        case DataBuffer.TYPE_USHORT:
-            short usa[] = (short[]) pixel;
-            comp = usa[idx] & 0xffff;
-            if (needAlphaDivide) {
-                int alpha = usa[numColorComponents] & 0xffff;
-                if (alpha == 0) {
-                    comp = 0;
+            case DataBuffer.TYPE_DOUBLE:
+                double da[] = (double[])pixel;
+                if (needAlphaDivide) {
+                    if (da[numColorComponents] == 0.0) {
+                        comp = 0;
+                    } else {
+                        comp = (int)(da[idx] * fFactor / da[numColorComponents] + 0.5);
+                    }
                 } else {
-                    float normAlpha = scaleFactors[numColorComponents] * alpha;
-                    comp = (int) (comp * fFactor / normAlpha + 0.5f);
+                    comp = (int)(da[idx] * fFactor + 0.5);
                 }
                 calcValue = true;
-            }
-            return comp;
+                return comp;
 
-        case DataBuffer.TYPE_INT:
-            int ia[] = (int[]) pixel;
-            comp = ia[idx];
-            if (needAlphaDivide) {
-                int alpha = ia[numColorComponents];
-                if (alpha == 0) {
-                    comp = 0;
-                } else {
-                    float normAlpha = scaleFactors[numColorComponents] * alpha;
-                    comp = (int) (comp * fFactor / normAlpha + 0.5f);
-                }
-                calcValue = true;
-            }
-            return comp;
-
-        case DataBuffer.TYPE_SHORT:
-            short sa[] = (short[]) pixel;
-            comp = sa[idx];
-            if (needAlphaDivide) {
-                int alpha = sa[numColorComponents];
-                if (alpha == 0) {
-                    comp = 0;
-                } else {
-                    float normAlpha = scaleFactors[numColorComponents] * alpha;
-                    comp = (int) (comp * fFactor / normAlpha + 0.5f);
-                }
-                calcValue = true;
-            }
-            return comp;
-
-        case DataBuffer.TYPE_FLOAT:
-            float fa[] = (float[]) pixel;
-            if (needAlphaDivide) {
-                float alpha = fa[numColorComponents];
-                if (fa[numColorComponents] == 0.0f) {
-                    comp = 0;
-                } else {
-                    comp = (int) (fa[idx] * fFactor / alpha + 0.5f);
-                }
-            } else {
-                comp = (int) (fa[idx] * fFactor + 0.5f);
-            }
-            calcValue = true;
-            return comp;
-
-        case DataBuffer.TYPE_DOUBLE:
-            double da[] = (double[]) pixel;
-            if (needAlphaDivide) {
-                if (da[numColorComponents] == 0.0) {
-                    comp = 0;
-                } else {
-                    comp = (int) (da[idx] * fFactor / da[numColorComponents] + 
-                            0.5);
-                }
-            } else {
-                comp = (int) (da[idx] * fFactor + 0.5);
-            }
-            calcValue = true;
-            return comp;
-
-        default:
-            // awt.214=This Color Model doesn't support this transferType
-            throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
+            default:
+                // awt.214=This Color Model doesn't support this transferType
+                throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
         }
     }
 
 }
-
diff --git a/awt/java/awt/image/ComponentSampleModel.java b/awt/java/awt/image/ComponentSampleModel.java
index 2ff4f1a..7f81409 100644
--- a/awt/java/awt/image/ComponentSampleModel.java
+++ b/awt/java/awt/image/ComponentSampleModel.java
@@ -18,6 +18,7 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.util.Arrays;
@@ -25,55 +26,73 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The ComponentSampleModel class represents a set of image data whose 
- * each element - the sample of a pixel - takes one data element of 
- * the DataBuffer. 
+ * The ComponentSampleModel class represents a set of image data whose each
+ * element - the sample of a pixel - takes one data element of the DataBuffer.
  * <p>
- * The Bank indices denote the correspondence between the bank of data 
- * buffers and a band of image data. The Pixel stride is the number of data 
- * array elements between two samples for the same band on the same 
- * scanline. The pixel stride for a BandedSampleModel is one. The Scanline 
- * stride represents the number of data array elements between a  
- * specified sample and the corresponding sample in the same column in 
- * the next scanline. The array of band offsets gives the starting 
- * offsets within each data banks of the in the DataBuffer. The bank 
- * indices represents the indices within each bank of the DataBuffer 
- * corresponding to a band of image data.
+ * The Bank indices denote the correspondence between the bank of data buffers
+ * and a band of image data. The Pixel stride is the number of data array
+ * elements between two samples for the same band on the same scanline. The
+ * pixel stride for a BandedSampleModel is one. The scanline stride represents
+ * the number of data array elements between a specified sample and the
+ * corresponding sample in the same column in the next scanline. The array of
+ * band offsets gives the starting offsets within each data banks of the in the
+ * DataBuffer. The bank indices represents the indices within each bank of the
+ * DataBuffer corresponding to a band of image data.
+ * 
+ * @since Android 1.0
  */
 public class ComponentSampleModel extends SampleModel {
 
-    /** The band offsets array of this ComponentSampleModel. */
+    /**
+     * The band offsets array of this ComponentSampleModel.
+     */
     protected int bandOffsets[];
 
-    /** The bank indices array of this ComponentSampleModel. */
+    /**
+     * The bank indices array of this ComponentSampleModel.
+     */
     protected int bankIndices[];
 
-    /** The number of bands in this ComponentSampleModel. */
+    /**
+     * The number of bands in this ComponentSampleModel.
+     */
     protected int numBands;
 
-    /** The number banks of this ComponentSampleModel. */
+    /**
+     * The number banks of this ComponentSampleModel.
+     */
     protected int numBanks;
 
-    /** The scanline stride of this ComponentSampleModel. */
+    /**
+     * The scanline stride of this ComponentSampleModel.
+     */
     protected int scanlineStride;
 
-    /** The pixel stride of this ComponentSampleModel. */
+    /**
+     * The pixel stride of this ComponentSampleModel.
+     */
     protected int pixelStride;
 
     /**
-     * Instantiates a new ComponentSampleModel with the specified
-     * properties.
+     * Instantiates a new ComponentSampleModel with the specified properties.
      * 
-     * @param dataType the data type of samples.
-     * @param w the width of the image data.
-     * @param h the height of the image data.
-     * @param pixelStride the pixel stride of the image data.
-     * @param scanlineStride the scanline stride of the image data.
-     * @param bankIndices the array of the bank indices.
-     * @param bandOffsets the array of the band offsets.
+     * @param dataType
+     *            the data type of samples.
+     * @param w
+     *            the width of the image data.
+     * @param h
+     *            the height of the image data.
+     * @param pixelStride
+     *            the pixel stride of the image data.
+     * @param scanlineStride
+     *            the scanline stride of the image data.
+     * @param bankIndices
+     *            the array of the bank indices.
+     * @param bandOffsets
+     *            the array of the band offsets.
      */
-    public ComponentSampleModel(int dataType, int w, int h, int pixelStride,
-            int scanlineStride, int bankIndices[], int bandOffsets[]) {
+    public ComponentSampleModel(int dataType, int w, int h, int pixelStride, int scanlineStride,
+            int bankIndices[], int bandOffsets[]) {
 
         super(dataType, w, h, bandOffsets.length);
 
@@ -113,18 +132,23 @@
     }
 
     /**
-     * Instantiates a new ComponentSampleModel with the specified
-     * properties.
+     * Instantiates a new ComponentSampleModel with the specified properties.
      * 
-     * @param dataType the data type of the samples.
-     * @param w the width of the image data.
-     * @param h the height of the image data.
-     * @param pixelStride the pixel stride of the image data.
-     * @param scanlineStride the scanline stride of the image data.
-     * @param bandOffsets the band offsets.
+     * @param dataType
+     *            the data type of the samples.
+     * @param w
+     *            the width of the image data.
+     * @param h
+     *            the height of the image data.
+     * @param pixelStride
+     *            the pixel stride of the image data.
+     * @param scanlineStride
+     *            the scanline stride of the image data.
+     * @param bandOffsets
+     *            the band offsets.
      */
-    public ComponentSampleModel(int dataType, int w, int h, int pixelStride,
-            int scanlineStride, int bandOffsets[]) {
+    public ComponentSampleModel(int dataType, int w, int h, int pixelStride, int scanlineStride,
+            int bandOffsets[]) {
 
         super(dataType, w, h, bandOffsets.length);
         if (pixelStride < 0) {
@@ -156,81 +180,81 @@
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
         switch (dataType) {
-        case DataBuffer.TYPE_BYTE:
-            byte bdata[];
-            if (obj == null) {
-                bdata = new byte[numBands];
-            } else {
-                bdata = (byte[]) obj;
-            }
+            case DataBuffer.TYPE_BYTE:
+                byte bdata[];
+                if (obj == null) {
+                    bdata = new byte[numBands];
+                } else {
+                    bdata = (byte[])obj;
+                }
 
-            for (int i = 0; i < numBands; i++) {
-                bdata[i] = (byte) getSample(x, y, i, data);
-            }
+                for (int i = 0; i < numBands; i++) {
+                    bdata[i] = (byte)getSample(x, y, i, data);
+                }
 
-            obj = bdata;
-            break;
+                obj = bdata;
+                break;
 
-        case DataBuffer.TYPE_SHORT:
-        case DataBuffer.TYPE_USHORT:
-            short sdata[];
-            if (obj == null) {
-                sdata = new short[numBands];
-            } else {
-                sdata = (short[]) obj;
-            }
+            case DataBuffer.TYPE_SHORT:
+            case DataBuffer.TYPE_USHORT:
+                short sdata[];
+                if (obj == null) {
+                    sdata = new short[numBands];
+                } else {
+                    sdata = (short[])obj;
+                }
 
-            for (int i = 0; i < numBands; i++) {
-                sdata[i] = (short) getSample(x, y, i, data);
-            }
+                for (int i = 0; i < numBands; i++) {
+                    sdata[i] = (short)getSample(x, y, i, data);
+                }
 
-            obj = sdata;
-            break;
+                obj = sdata;
+                break;
 
-        case DataBuffer.TYPE_INT:
-            int idata[];
-            if (obj == null) {
-                idata = new int[numBands];
-            } else {
-                idata = (int[]) obj;
-            }
+            case DataBuffer.TYPE_INT:
+                int idata[];
+                if (obj == null) {
+                    idata = new int[numBands];
+                } else {
+                    idata = (int[])obj;
+                }
 
-            for (int i = 0; i < numBands; i++) {
-                idata[i] = getSample(x, y, i, data);
-            }
+                for (int i = 0; i < numBands; i++) {
+                    idata[i] = getSample(x, y, i, data);
+                }
 
-            obj = idata;
-            break;
+                obj = idata;
+                break;
 
-        case DataBuffer.TYPE_FLOAT:
-            float fdata[];
-            if (obj == null) {
-                fdata = new float[numBands];
-            } else {
-                fdata = (float[]) obj;
-            }
+            case DataBuffer.TYPE_FLOAT:
+                float fdata[];
+                if (obj == null) {
+                    fdata = new float[numBands];
+                } else {
+                    fdata = (float[])obj;
+                }
 
-            for (int i = 0; i < numBands; i++) {
-                fdata[i] = getSampleFloat(x, y, i, data);
-            }
+                for (int i = 0; i < numBands; i++) {
+                    fdata[i] = getSampleFloat(x, y, i, data);
+                }
 
-            obj = fdata;
-            break;
+                obj = fdata;
+                break;
 
-        case DataBuffer.TYPE_DOUBLE:
-            double ddata[];
-            if (obj == null) {
-                ddata = new double[numBands];
-            } else {
-                ddata = (double[]) obj;
-            }
+            case DataBuffer.TYPE_DOUBLE:
+                double ddata[];
+                if (obj == null) {
+                    ddata = new double[numBands];
+                } else {
+                    ddata = (double[])obj;
+                }
 
-            for (int i = 0; i < numBands; i++) {
-                ddata[i] = getSampleDouble(x, y, i, data);
-            }
+                for (int i = 0; i < numBands; i++) {
+                    ddata[i] = getSampleDouble(x, y, i, data);
+                }
 
-            obj = ddata;
-            break;
+                obj = ddata;
+                break;
         }
 
         return obj;
@@ -243,76 +267,75 @@
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
         switch (dataType) {
-        case DataBuffer.TYPE_BYTE:
-            byte barr[] = (byte[]) obj;
-            for (int i = 0; i < numBands; i++) {
-                setSample(x, y, i, barr[i] & 0xff, data);
-            }
-            break;
+            case DataBuffer.TYPE_BYTE:
+                byte barr[] = (byte[])obj;
+                for (int i = 0; i < numBands; i++) {
+                    setSample(x, y, i, barr[i] & 0xff, data);
+                }
+                break;
 
-        case DataBuffer.TYPE_SHORT:
-        case DataBuffer.TYPE_USHORT:
-            short sarr[] = (short[]) obj;
-            for (int i = 0; i < numBands; i++) {
-                setSample(x, y, i, sarr[i] & 0xffff, data);
-            }
-            break;
+            case DataBuffer.TYPE_SHORT:
+            case DataBuffer.TYPE_USHORT:
+                short sarr[] = (short[])obj;
+                for (int i = 0; i < numBands; i++) {
+                    setSample(x, y, i, sarr[i] & 0xffff, data);
+                }
+                break;
 
-        case DataBuffer.TYPE_INT:
-            int iarr[] = (int[]) obj;
-            for (int i = 0; i < numBands; i++) {
-                setSample(x, y, i, iarr[i], data);
-            }
-            break;
+            case DataBuffer.TYPE_INT:
+                int iarr[] = (int[])obj;
+                for (int i = 0; i < numBands; i++) {
+                    setSample(x, y, i, iarr[i], data);
+                }
+                break;
 
-        case DataBuffer.TYPE_FLOAT:
-            float farr[] = (float[]) obj;
-            for (int i = 0; i < numBands; i++) {
-                setSample(x, y, i, farr[i], data);
-            }
-            break;
+            case DataBuffer.TYPE_FLOAT:
+                float farr[] = (float[])obj;
+                for (int i = 0; i < numBands; i++) {
+                    setSample(x, y, i, farr[i], data);
+                }
+                break;
 
-        case DataBuffer.TYPE_DOUBLE:
-            double darr[] = (double[]) obj;
-            for (int i = 0; i < numBands; i++) {
-                setSample(x, y, i, darr[i], data);
-            }
-            break;
+            case DataBuffer.TYPE_DOUBLE:
+                double darr[] = (double[])obj;
+                for (int i = 0; i < numBands; i++) {
+                    setSample(x, y, i, darr[i], data);
+                }
+                break;
         }
     }
 
     /**
      * Compares this ComponentSampleModel with the specified Object.
      * 
-     * @param o the Object.
-     * 
-     * @return true, if the object is a ComponentSampleModel with 
-     * identical data values to this ComponentSampleModel, false otherwise. 
+     * @param o
+     *            the Object.
+     * @return true, if the object is a ComponentSampleModel with identical data
+     *         values to this ComponentSampleModel, false otherwise.
      */
     @Override
     public boolean equals(Object o) {
         if ((o == null) || !(o instanceof ComponentSampleModel)) {
             return false;
         }
-        ComponentSampleModel model = (ComponentSampleModel) o;
-        return this.width == model.width && this.height == model.height &&
-               this.numBands == model.numBands &&
-               this.dataType == model.dataType &&
-               Arrays.equals(this.bandOffsets, model.bandOffsets) &&
-               Arrays.equals(this.bankIndices, model.bankIndices) &&
-               this.numBands == model.numBands &&
-               this.numBanks == model.numBanks &&
-               this.scanlineStride == model.scanlineStride &&
-               this.pixelStride == model.pixelStride;
+        ComponentSampleModel model = (ComponentSampleModel)o;
+        return this.width == model.width && this.height == model.height
+                && this.numBands == model.numBands && this.dataType == model.dataType
+                && Arrays.equals(this.bandOffsets, model.bandOffsets)
+                && Arrays.equals(this.bankIndices, model.bankIndices)
+                && this.numBands == model.numBands && this.numBanks == model.numBanks
+                && this.scanlineStride == model.scanlineStride
+                && this.pixelStride == model.pixelStride;
     }
 
-    /** 
+    /**
      * @see java.awt.image.SampleModel#createSubsetSampleModel(int[])
      */
     @Override
     public SampleModel createSubsetSampleModel(int bands[]) {
         if (bands.length > this.numBands) {
-            // awt.64=The number of the bands in the subset is greater than the number of bands in the sample model
+            // awt.64=The number of the bands in the subset is greater than the
+            // number of bands in the sample model
             throw new RasterFormatException(Messages.getString("awt.64")); //$NON-NLS-1$
         }
 
@@ -324,15 +347,15 @@
             offsets[i] = bandOffsets[bands[i]];
         }
 
-        return new ComponentSampleModel(dataType, width, height, pixelStride,
-                scanlineStride, indices, offsets);
+        return new ComponentSampleModel(dataType, width, height, pixelStride, scanlineStride,
+                indices, offsets);
 
     }
 
     @Override
     public SampleModel createCompatibleSampleModel(int w, int h) {
-        return new ComponentSampleModel(dataType, w, h, pixelStride,
-                pixelStride * w, bankIndices, bandOffsets);
+        return new ComponentSampleModel(dataType, w, h, pixelStride, pixelStride * w, bankIndices,
+                bandOffsets);
     }
 
     @Override
@@ -366,8 +389,7 @@
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
 
-        return data.getElem(bankIndices[b], y * scanlineStride +
-                x * pixelStride + bandOffsets[b]);
+        return data.getElem(bankIndices[b], y * scanlineStride + x * pixelStride + bandOffsets[b]);
     }
 
     @Override
@@ -377,8 +399,8 @@
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
 
-        return data.getElemFloat(bankIndices[b], y * scanlineStride +
-                x * pixelStride + bandOffsets[b]);
+        return data.getElemFloat(bankIndices[b], y * scanlineStride + x * pixelStride
+                + bandOffsets[b]);
     }
 
     @Override
@@ -388,15 +410,14 @@
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
 
-        return data.getElemDouble(bankIndices[b], y * scanlineStride +
-                x * pixelStride + bandOffsets[b]);
+        return data.getElemDouble(bankIndices[b], y * scanlineStride + x * pixelStride
+                + bandOffsets[b]);
     }
 
     @Override
-    public int[] getPixels(int x, int y, int w, int h, int iArray[],
-            DataBuffer data) {
-        if (x < 0 || y < 0 || x > this.width || x + w > this.width
-                || y > this.height || y + h > this.height) {
+    public int[] getPixels(int x, int y, int w, int h, int iArray[], DataBuffer data) {
+        if (x < 0 || y < 0 || x > this.width || x + w > this.width || y > this.height
+                || y + h > this.height) {
             // awt.63=Coordinates are not in bounds
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
@@ -421,8 +442,7 @@
     }
 
     @Override
-    public void setPixels(int x, int y, int w, int h, int iArray[],
-            DataBuffer data) {
+    public void setPixels(int x, int y, int w, int h, int iArray[], DataBuffer data) {
         if (x < 0 || y < 0 || x + w > this.width || y + h > this.height) {
             // awt.63=Coordinates are not in bounds
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
@@ -444,13 +464,11 @@
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
 
-        data.setElem(bankIndices[b], y * scanlineStride + x * pixelStride
-                + bandOffsets[b], s);
+        data.setElem(bankIndices[b], y * scanlineStride + x * pixelStride + bandOffsets[b], s);
     }
 
     @Override
-    public int[] getSamples(int x, int y, int w, int h, int b, int iArray[],
-            DataBuffer data) {
+    public int[] getSamples(int x, int y, int w, int h, int b, int iArray[], DataBuffer data) {
         if (x < 0 || y < 0 || x + w > this.width || y + h > this.height) {
             // awt.63=Coordinates are not in bounds
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
@@ -463,7 +481,7 @@
         } else {
             samples = iArray;
         }
-        
+
         if (data == null) {
             // awt.295=data is null
             throw new NullPointerException(Messages.getString("awt.295")); //$NON-NLS-1$
@@ -479,8 +497,7 @@
     }
 
     @Override
-    public void setSamples(int x, int y, int w, int h, int b, int iArray[],
-            DataBuffer data) {
+    public void setSamples(int x, int y, int w, int h, int b, int iArray[], DataBuffer data) {
         if (x < 0 || y < 0 || x + w > this.width || y + h > this.height) {
             // awt.63=Coordinates are not in bounds
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
@@ -500,8 +517,7 @@
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
 
-        data.setElemFloat(bankIndices[b], y * scanlineStride +
-                x * pixelStride + bandOffsets[b], s);
+        data.setElemFloat(bankIndices[b], y * scanlineStride + x * pixelStride + bandOffsets[b], s);
     }
 
     @Override
@@ -511,8 +527,9 @@
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
 
-        data.setElemDouble(bankIndices[b], y * scanlineStride +
-                x * pixelStride + bandOffsets[b], s);
+        data
+                .setElemDouble(bankIndices[b], y * scanlineStride + x * pixelStride
+                        + bandOffsets[b], s);
     }
 
     @Override
@@ -525,28 +542,27 @@
                 maxOffset = bandOffsets[i];
             }
         }
-        int size = (height - 1) * scanlineStride +
-        (width - 1) * pixelStride + maxOffset + 1;
+        int size = (height - 1) * scanlineStride + (width - 1) * pixelStride + maxOffset + 1;
 
         switch (dataType) {
-        case DataBuffer.TYPE_BYTE:
-            data = new DataBufferByte(size, numBanks);
-            break;
-        case DataBuffer.TYPE_SHORT:
-            data = new DataBufferShort(size, numBanks);
-            break;
-        case DataBuffer.TYPE_USHORT:
-            data = new DataBufferUShort(size, numBanks);
-            break;
-        case DataBuffer.TYPE_INT:
-            data = new DataBufferInt(size, numBanks);
-            break;
-        case DataBuffer.TYPE_FLOAT:
-            data = new DataBufferFloat(size, numBanks);
-            break;
-        case DataBuffer.TYPE_DOUBLE:
-            data = new DataBufferDouble(size, numBanks);
-            break;
+            case DataBuffer.TYPE_BYTE:
+                data = new DataBufferByte(size, numBanks);
+                break;
+            case DataBuffer.TYPE_SHORT:
+                data = new DataBufferShort(size, numBanks);
+                break;
+            case DataBuffer.TYPE_USHORT:
+                data = new DataBufferUShort(size, numBanks);
+                break;
+            case DataBuffer.TYPE_INT:
+                data = new DataBufferInt(size, numBanks);
+                break;
+            case DataBuffer.TYPE_FLOAT:
+                data = new DataBufferFloat(size, numBanks);
+                break;
+            case DataBuffer.TYPE_DOUBLE:
+                data = new DataBufferDouble(size, numBanks);
+                break;
         }
 
         return data;
@@ -556,10 +572,12 @@
     /**
      * Gets the offset of the specified band of the specified pixel.
      * 
-     * @param x the X coordinate of the pixel. 
-     * @param y the Y coordinate of the pixel.
-     * @param b the band.
-     * 
+     * @param x
+     *            the X coordinate of the pixel.
+     * @param y
+     *            the Y coordinate of the pixel.
+     * @param b
+     *            the band.
      * @return the offset of the specified band of the specified pixel.
      */
     public int getOffset(int x, int y, int b) {
@@ -569,9 +587,10 @@
     /**
      * Gets the offset of the first band of the specified pixel.
      * 
-     * @param x the X coordinate of pixel. 
-     * @param y the Y coordinate of pixel.
-     * 
+     * @param x
+     *            the X coordinate of pixel.
+     * @param y
+     *            the Y coordinate of pixel.
      * @return the offset of the first band of the specified pixel.
      */
     public int getOffset(int x, int y) {
@@ -595,8 +614,7 @@
     }
 
     /**
-     * Gets an array of bank indices corresponding to this 
-     * ComponentSampleModel.
+     * Gets an array of bank indices corresponding to this ComponentSampleModel.
      * 
      * @return the array of bank indices.
      */
@@ -605,7 +623,7 @@
     }
 
     /**
-     * Gets an array of the band offsets corresponding to this 
+     * Gets an array of the band offsets corresponding to this
      * ComponentSampleModel.
      * 
      * @return the array of band offsets.
@@ -673,7 +691,7 @@
     /**
      * Gets the pixel stride.
      * 
-     * @return the pixel stride
+     * @return the pixel stride.
      */
     public final int getPixelStride() {
         return pixelStride;
@@ -685,6 +703,3 @@
     }
 
 }
-
-
-
diff --git a/awt/java/awt/image/ConvolveOp.java b/awt/java/awt/image/ConvolveOp.java
index bb588bc..6eb8909 100644
--- a/awt/java/awt/image/ConvolveOp.java
+++ b/awt/java/awt/image/ConvolveOp.java
@@ -32,47 +32,57 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The ConvolveOp class convolves from the source data
- * to the destination using a convolution kernel. 
- * Each output pixel is represented as the result of multiplying 
- * the kernel and the surround of the input pixel.
+ * The ConvolveOp class convolves from the source data to the destination using
+ * a convolution kernel. Each output pixel is represented as the result of
+ * multiplying the kernel and the surround of the input pixel.
+ * 
+ * @since Android 1.0
  */
 public class ConvolveOp implements BufferedImageOp, RasterOp {
 
-    /** 
-     * The Constant EDGE_ZERO_FILL indicates that pixels at the edge of 
-     * the destination image are set to zero. 
+    /**
+     * The Constant EDGE_ZERO_FILL indicates that pixels at the edge of the
+     * destination image are set to zero.
      */
     public static final int EDGE_ZERO_FILL = 0;
 
-    /** 
-     * The Constant EDGE_NO_OP indicates that pixels at the edge of 
-     * the source image are converted to the edge pixels in the 
-     * destination without modification.
+    /**
+     * The Constant EDGE_NO_OP indicates that pixels at the edge of the source
+     * image are converted to the edge pixels in the destination without
+     * modification.
      */
     public static final int EDGE_NO_OP = 1;
 
-    /** The kernel. */
+    /**
+     * The kernel.
+     */
     private Kernel kernel;
-    
-    /** The edge cond. */
+
+    /**
+     * The edge cond.
+     */
     private int edgeCond;
-    
-    /** The rhs. */
+
+    /**
+     * The rhs.
+     */
     private RenderingHints rhs = null;
 
     static {
         // TODO
-        //System.loadLibrary("imageops");
+        // System.loadLibrary("imageops");
     }
 
     /**
-     * Instantiates a new ConvolveOp object with the specified Kernel
-     * and specified edges condition.
+     * Instantiates a new ConvolveOp object with the specified Kernel and
+     * specified edges condition.
      * 
-     * @param kernel the specified Kernel.
-     * @param edgeCondition the specified edge condition.
-     * @param hints the RenderingHints object, or null.
+     * @param kernel
+     *            the specified Kernel.
+     * @param edgeCondition
+     *            the specified edge condition.
+     * @param hints
+     *            the RenderingHints object, or null.
      */
     public ConvolveOp(Kernel kernel, int edgeCondition, RenderingHints hints) {
         this.kernel = kernel;
@@ -81,10 +91,11 @@
     }
 
     /**
-     * Instantiates a new ConvolveOp object with the specified Kernel
-     * and EDGE_ZERO_FILL edge condition.
+     * Instantiates a new ConvolveOp object with the specified Kernel and
+     * EDGE_ZERO_FILL edge condition.
      * 
-     * @param kernel the specified Kernel.
+     * @param kernel
+     *            the specified Kernel.
      */
     public ConvolveOp(Kernel kernel) {
         this.kernel = kernel;
@@ -97,7 +108,7 @@
      * @return the Kernel object of this ConvolveOp.
      */
     public final Kernel getKernel() {
-        return (Kernel) kernel.clone();
+        return (Kernel)kernel.clone();
     }
 
     public final RenderingHints getRenderingHints() {
@@ -143,17 +154,11 @@
             dstCM = ColorModel.getRGBdefault();
         }
 
-        WritableRaster r =
-                dstCM.isCompatibleSampleModel(src.getSampleModel()) ?
-                src.getRaster().createCompatibleWritableRaster(src.getWidth(), src.getHeight()) :
-                dstCM.createCompatibleWritableRaster(src.getWidth(), src.getHeight());
+        WritableRaster r = dstCM.isCompatibleSampleModel(src.getSampleModel()) ? src.getRaster()
+                .createCompatibleWritableRaster(src.getWidth(), src.getHeight()) : dstCM
+                .createCompatibleWritableRaster(src.getWidth(), src.getHeight());
 
-        return new BufferedImage(
-                dstCM,
-                r,
-                dstCM.isAlphaPremultiplied(),
-                null
-        );
+        return new BufferedImage(dstCM, r, dstCM.isAlphaPremultiplied(), null);
     }
 
     public final WritableRaster filter(Raster src, WritableRaster dst) {
@@ -162,7 +167,7 @@
             throw new NullPointerException(Messages.getString("awt.256")); //$NON-NLS-1$
         }
 
-        if (src == dst){
+        if (src == dst) {
             // awt.257=Source raster is equal to destination
             throw new IllegalArgumentException(Messages.getString("awt.257")); //$NON-NLS-1$
         }
@@ -170,17 +175,18 @@
         if (dst == null) {
             dst = createCompatibleDestRaster(src);
         } else if (src.getNumBands() != dst.getNumBands()) {
-            // awt.258=Number of source bands ({0}) is not equal to number of destination bands ({1})
-            throw new IllegalArgumentException(
-                Messages.getString("awt.258", src.getNumBands(), dst.getNumBands())); //$NON-NLS-1$
+            // awt.258=Number of source bands ({0}) is not equal to number of
+            // destination bands ({1})
+            throw new IllegalArgumentException(Messages.getString(
+                    "awt.258", src.getNumBands(), dst.getNumBands())); //$NON-NLS-1$
         }
 
         // TODO
-        //if (ippFilter(src, dst, BufferedImage.TYPE_CUSTOM) != 0)
-            if (slowFilter(src, dst) != 0) {
-                // awt.21F=Unable to transform source
-                throw new ImagingOpException (Messages.getString("awt.21F")); //$NON-NLS-1$
-            }
+        // if (ippFilter(src, dst, BufferedImage.TYPE_CUSTOM) != 0)
+        if (slowFilter(src, dst) != 0) {
+            // awt.21F=Unable to transform source
+            throw new ImagingOpException(Messages.getString("awt.21F")); //$NON-NLS-1$
+        }
 
         return dst;
     }
@@ -188,10 +194,11 @@
     /**
      * Slow filter.
      * 
-     * @param src the src
-     * @param dst the dst
-     * 
-     * @return the int
+     * @param src
+     *            the src.
+     * @param dst
+     *            the dst.
+     * @return the int.
      */
     private int slowFilter(Raster src, WritableRaster dst) {
         try {
@@ -219,7 +226,7 @@
             int[] masks = new int[numBands];
             int[] sampleSizes = sm.getSampleSize();
 
-            for (int i=0; i < numBands; i++){
+            for (int i = 0; i < numBands; i++) {
                 maxValues[i] = (1 << sampleSizes[i]) - 1;
                 masks[i] = ~(maxValues[i]);
             }
@@ -228,61 +235,56 @@
             float[] pixels = null;
             pixels = src.getPixels(srcMinX, srcMinY, srcWidth, srcHeight, pixels);
             float[] newPixels = new float[pixels.length];
-            int rowLength = srcWidth*numBands;
-            if (this.edgeCond == ConvolveOp.EDGE_NO_OP){
+            int rowLength = srcWidth * numBands;
+            if (this.edgeCond == ConvolveOp.EDGE_NO_OP) {
                 // top
                 int start = 0;
-                int length = yOrigin*rowLength;
+                int length = yOrigin * rowLength;
                 System.arraycopy(pixels, start, newPixels, start, length);
                 // bottom
-                start = (srcHeight - (kHeight - yOrigin - 1))*rowLength;
-                length = (kHeight - yOrigin - 1)*rowLength;
+                start = (srcHeight - (kHeight - yOrigin - 1)) * rowLength;
+                length = (kHeight - yOrigin - 1) * rowLength;
                 System.arraycopy(pixels, start, newPixels, start, length);
                 // middle
-                length = xOrigin*numBands;
-                int length1 = (kWidth - xOrigin - 1)*numBands;
-                start = yOrigin*rowLength;
-                int start1 = (yOrigin+1)*rowLength - length1;
-                for (int i = yOrigin; i < (srcHeight - (kHeight - yOrigin - 1)); i ++) {
+                length = xOrigin * numBands;
+                int length1 = (kWidth - xOrigin - 1) * numBands;
+                start = yOrigin * rowLength;
+                int start1 = (yOrigin + 1) * rowLength - length1;
+                for (int i = yOrigin; i < (srcHeight - (kHeight - yOrigin - 1)); i++) {
                     System.arraycopy(pixels, start, newPixels, start, length);
                     System.arraycopy(pixels, start1, newPixels, start1, length1);
-                    start +=rowLength;
-                    start1 +=rowLength;
+                    start += rowLength;
+                    start1 += rowLength;
                 }
 
             }
 
             // Cycle over pixels to be calculated
-            for (int i = yOrigin; i < srcConvMaxY; i++){
-                for (int j = xOrigin; j < srcConvMaxX; j++){
+            for (int i = yOrigin; i < srcConvMaxY; i++) {
+                for (int j = xOrigin; j < srcConvMaxX; j++) {
 
                     // Take kernel data in backward direction, convolution
                     int kernelIdx = data.length - 1;
 
                     int pixelIndex = i * rowLength + j * numBands;
-                    for (int hIdx = 0, rasterHIdx = i - yOrigin;
-                         hIdx < kHeight;
-                         hIdx++, rasterHIdx++
-                            ){
-                        for (int wIdx = 0, rasterWIdx = j - xOrigin;
-                             wIdx < kWidth;
-                             wIdx++, rasterWIdx++
-                                ){
+                    for (int hIdx = 0, rasterHIdx = i - yOrigin; hIdx < kHeight; hIdx++, rasterHIdx++) {
+                        for (int wIdx = 0, rasterWIdx = j - xOrigin; wIdx < kWidth; wIdx++, rasterWIdx++) {
                             int curIndex = rasterHIdx * rowLength + rasterWIdx * numBands;
-                            for (int idx=0; idx < numBands; idx++){
-                                newPixels[pixelIndex+idx] += data[kernelIdx] * pixels[curIndex+idx];
+                            for (int idx = 0; idx < numBands; idx++) {
+                                newPixels[pixelIndex + idx] += data[kernelIdx]
+                                        * pixels[curIndex + idx];
                             }
                             kernelIdx--;
                         }
                     }
 
                     // Check for overflow now
-                    for (int idx=0; idx < numBands; idx++){
-                        if (((int)newPixels[pixelIndex+idx] & masks[idx]) != 0) {
-                            if (newPixels[pixelIndex+idx] < 0) {
-                                newPixels[pixelIndex+idx] = 0;
+                    for (int idx = 0; idx < numBands; idx++) {
+                        if (((int)newPixels[pixelIndex + idx] & masks[idx]) != 0) {
+                            if (newPixels[pixelIndex + idx] < 0) {
+                                newPixels[pixelIndex + idx] = 0;
                             } else {
-                                newPixels[pixelIndex+idx] = maxValues[idx];
+                                newPixels[pixelIndex + idx] = maxValues[idx];
                             }
                         }
                     }
@@ -302,7 +304,7 @@
             throw new NullPointerException(Messages.getString("awt.259")); //$NON-NLS-1$
         }
 
-        if (src == dst){
+        if (src == dst) {
             // awt.25A=Source equals to destination
             throw new IllegalArgumentException(Messages.getString("awt.25A")); //$NON-NLS-1$
         }
@@ -319,13 +321,10 @@
             dst = createCompatibleDestImage(src, srcCM);
         } else {
             if (!srcCM.equals(dst.getColorModel())) {
-                // Treat BufferedImage.TYPE_INT_RGB and BufferedImage.TYPE_INT_ARGB as same
-                if (
-                        !((src.getType() == BufferedImage.TYPE_INT_RGB ||
-                           src.getType() == BufferedImage.TYPE_INT_ARGB) &&
-                          (dst.getType() == BufferedImage.TYPE_INT_RGB ||
-                           dst.getType() == BufferedImage.TYPE_INT_ARGB))
-                ) {
+                // Treat BufferedImage.TYPE_INT_RGB and
+                // BufferedImage.TYPE_INT_ARGB as same
+                if (!((src.getType() == BufferedImage.TYPE_INT_RGB || src.getType() == BufferedImage.TYPE_INT_ARGB) && (dst
+                        .getType() == BufferedImage.TYPE_INT_RGB || dst.getType() == BufferedImage.TYPE_INT_ARGB))) {
                     finalDst = dst;
                     dst = createCompatibleDestImage(src, srcCM);
                 }
@@ -334,11 +333,11 @@
 
         // Skip alpha channel for TYPE_INT_RGB images
         // TODO
-        //if (ippFilter(src.getRaster(), dst.getRaster(), src.getType()) != 0)
-            if (slowFilter(src.getRaster(), dst.getRaster()) != 0) {
-                // awt.21F=Unable to transform source
-                throw new ImagingOpException (Messages.getString("awt.21F")); //$NON-NLS-1$
-            }
+        // if (ippFilter(src.getRaster(), dst.getRaster(), src.getType()) != 0)
+        if (slowFilter(src.getRaster(), dst.getRaster()) != 0) {
+            // awt.21F=Unable to transform source
+            throw new ImagingOpException(Messages.getString("awt.21F")); //$NON-NLS-1$
+        }
 
         if (finalDst != null) {
             Graphics2D g = finalDst.createGraphics();
@@ -355,11 +354,13 @@
     /**
      * Ipp filter.
      * 
-     * @param src the src
-     * @param dst the dst
-     * @param imageType the image type
-     * 
-     * @return the int
+     * @param src
+     *            the src.
+     * @param dst
+     *            the dst.
+     * @param imageType
+     *            the image type.
+     * @return the int.
      */
     @SuppressWarnings("unused")
     private int ippFilter(Raster src, WritableRaster dst, int imageType) {
@@ -372,8 +373,8 @@
             case BufferedImage.TYPE_INT_RGB:
             case BufferedImage.TYPE_INT_BGR: {
                 channels = 4;
-                srcStride = src.getWidth()*4;
-                dstStride = dst.getWidth()*4;
+                srcStride = src.getWidth() * 4;
+                dstStride = dst.getWidth() * 4;
                 skipChannel = true;
                 break;
             }
@@ -383,8 +384,8 @@
             case BufferedImage.TYPE_4BYTE_ABGR:
             case BufferedImage.TYPE_4BYTE_ABGR_PRE: {
                 channels = 4;
-                srcStride = src.getWidth()*4;
-                dstStride = dst.getWidth()*4;
+                srcStride = src.getWidth() * 4;
+                dstStride = dst.getWidth() * 4;
                 break;
             }
 
@@ -397,12 +398,13 @@
 
             case BufferedImage.TYPE_3BYTE_BGR: {
                 channels = 3;
-                srcStride = src.getWidth()*3;
-                dstStride = dst.getWidth()*3;
+                srcStride = src.getWidth() * 3;
+                dstStride = dst.getWidth() * 3;
                 break;
             }
 
-            case BufferedImage.TYPE_USHORT_GRAY: // TODO - could be done in native code?
+            case BufferedImage.TYPE_USHORT_GRAY: // TODO - could be done in
+                // native code?
             case BufferedImage.TYPE_USHORT_565_RGB:
             case BufferedImage.TYPE_USHORT_555_RGB:
             case BufferedImage.TYPE_BYTE_BINARY: {
@@ -413,59 +415,51 @@
                 SampleModel srcSM = src.getSampleModel();
                 SampleModel dstSM = dst.getSampleModel();
 
-                if (
-                        srcSM instanceof PixelInterleavedSampleModel &&
-                        dstSM instanceof PixelInterleavedSampleModel
-                ) {
+                if (srcSM instanceof PixelInterleavedSampleModel
+                        && dstSM instanceof PixelInterleavedSampleModel) {
                     // Check PixelInterleavedSampleModel
-                    if (
-                            srcSM.getDataType() != DataBuffer.TYPE_BYTE ||
-                            dstSM.getDataType() != DataBuffer.TYPE_BYTE
-                    ) {
+                    if (srcSM.getDataType() != DataBuffer.TYPE_BYTE
+                            || dstSM.getDataType() != DataBuffer.TYPE_BYTE) {
                         return slowFilter(src, dst);
                     }
 
-                    channels = srcSM.getNumBands(); // Have IPP functions for 1, 3 and 4 channels
+                    channels = srcSM.getNumBands(); // Have IPP functions for 1,
+                    // 3 and 4 channels
                     if (!(channels == 1 || channels == 3 || channels == 4)) {
                         return slowFilter(src, dst);
                     }
 
-                    srcStride = ((ComponentSampleModel) srcSM).getScanlineStride();
-                    dstStride = ((ComponentSampleModel) dstSM).getScanlineStride();
-                } else if (
-                        srcSM instanceof SinglePixelPackedSampleModel &&
-                        dstSM instanceof SinglePixelPackedSampleModel
-                ) {
+                    srcStride = ((ComponentSampleModel)srcSM).getScanlineStride();
+                    dstStride = ((ComponentSampleModel)dstSM).getScanlineStride();
+                } else if (srcSM instanceof SinglePixelPackedSampleModel
+                        && dstSM instanceof SinglePixelPackedSampleModel) {
                     // Check SinglePixelPackedSampleModel
-                    SinglePixelPackedSampleModel sppsm1 = (SinglePixelPackedSampleModel) srcSM;
-                    SinglePixelPackedSampleModel sppsm2 = (SinglePixelPackedSampleModel) dstSM;
+                    SinglePixelPackedSampleModel sppsm1 = (SinglePixelPackedSampleModel)srcSM;
+                    SinglePixelPackedSampleModel sppsm2 = (SinglePixelPackedSampleModel)dstSM;
 
                     channels = sppsm1.getNumBands();
 
-                     // TYPE_INT_RGB, TYPE_INT_ARGB...
-                    if (
-                            sppsm1.getDataType() != DataBuffer.TYPE_INT ||
-                            sppsm2.getDataType() != DataBuffer.TYPE_INT ||
-                            !(channels == 3 || channels == 4)
-                    ) {
+                    // TYPE_INT_RGB, TYPE_INT_ARGB...
+                    if (sppsm1.getDataType() != DataBuffer.TYPE_INT
+                            || sppsm2.getDataType() != DataBuffer.TYPE_INT
+                            || !(channels == 3 || channels == 4)) {
                         return slowFilter(src, dst);
                     }
 
                     // Check compatibility of sample models
-                    if (
-                            !Arrays.equals(sppsm1.getBitOffsets(), sppsm2.getBitOffsets()) ||
-                            !Arrays.equals(sppsm1.getBitMasks(), sppsm2.getBitMasks())
-                    ) {
+                    if (!Arrays.equals(sppsm1.getBitOffsets(), sppsm2.getBitOffsets())
+                            || !Arrays.equals(sppsm1.getBitMasks(), sppsm2.getBitMasks())) {
                         return slowFilter(src, dst);
                     }
 
-                    for (int i=0; i<channels; i++) {
+                    for (int i = 0; i < channels; i++) {
                         if (sppsm1.getSampleSize(i) != 8) {
                             return slowFilter(src, dst);
                         }
                     }
 
-                    if (channels == 3) { // Cannot skip channel, don't know which is alpha...
+                    if (channels == 3) { // Cannot skip channel, don't know
+                        // which is alpha...
                         channels = 4;
                     }
 
@@ -477,12 +471,9 @@
 
                 // Fill offsets if there's a child raster
                 if (src.getParent() != null || dst.getParent() != null) {
-                    if (
-                            src.getSampleModelTranslateX() != 0 ||
-                            src.getSampleModelTranslateY() != 0 ||
-                            dst.getSampleModelTranslateX() != 0 ||
-                            dst.getSampleModelTranslateY() != 0
-                    ) {
+                    if (src.getSampleModelTranslateX() != 0 || src.getSampleModelTranslateY() != 0
+                            || dst.getSampleModelTranslateX() != 0
+                            || dst.getSampleModelTranslateY() != 0) {
                         offsets = new int[4];
                         offsets[0] = -src.getSampleModelTranslateX() + src.getMinX();
                         offsets[1] = -src.getSampleModelTranslateY() + src.getMinY();
@@ -502,44 +493,53 @@
             return -1; // Unknown data buffer type
         }
 
-        return ippFilter32f(
-            kernel.data, kernel.getWidth(), kernel.getHeight(),
-            kernel.getXOrigin(), kernel.getYOrigin(), edgeCond,
-            srcData, src.getWidth(), src.getHeight(), srcStride,
-            dstData, dst.getWidth(), dst.getHeight(), dstStride,
-            channels, skipChannel, offsets
-        );
+        return ippFilter32f(kernel.data, kernel.getWidth(), kernel.getHeight(),
+                kernel.getXOrigin(), kernel.getYOrigin(), edgeCond, srcData, src.getWidth(), src
+                        .getHeight(), srcStride, dstData, dst.getWidth(), dst.getHeight(),
+                dstStride, channels, skipChannel, offsets);
     }
 
     /**
      * Ipp filter32f.
      * 
-     * @param kernel the kernel
-     * @param kWidth the k width
-     * @param kHeight the k height
-     * @param anchorX the anchor x
-     * @param anchorY the anchor y
-     * @param borderType the border type
-     * @param src the src
-     * @param srcWidth the src width
-     * @param srcHeight the src height
-     * @param srcStride the src stride
-     * @param dst the dst
-     * @param dstWidth the dst width
-     * @param dstHeight the dst height
-     * @param dstStride the dst stride
-     * @param channels the channels
-     * @param skipChannel the skip channel
-     * @param offsets the offsets
-     * 
-     * @return the int
+     * @param kernel
+     *            the kernel.
+     * @param kWidth
+     *            the k width.
+     * @param kHeight
+     *            the k height.
+     * @param anchorX
+     *            the anchor x.
+     * @param anchorY
+     *            the anchor y.
+     * @param borderType
+     *            the border type.
+     * @param src
+     *            the src.
+     * @param srcWidth
+     *            the src width.
+     * @param srcHeight
+     *            the src height.
+     * @param srcStride
+     *            the src stride.
+     * @param dst
+     *            the dst.
+     * @param dstWidth
+     *            the dst width.
+     * @param dstHeight
+     *            the dst height.
+     * @param dstStride
+     *            the dst stride.
+     * @param channels
+     *            the channels.
+     * @param skipChannel
+     *            the skip channel.
+     * @param offsets
+     *            the offsets.
+     * @return the int.
      */
-    private native int ippFilter32f(
-                float kernel[], int kWidth, int kHeight,
-                int anchorX, int anchorY, int borderType,
-                Object src, int srcWidth, int srcHeight, int srcStride,
-                Object dst, int dstWidth, int dstHeight, int dstStride,
-                int channels, boolean skipChannel, int offsets[]
-            );
+    private native int ippFilter32f(float kernel[], int kWidth, int kHeight, int anchorX,
+            int anchorY, int borderType, Object src, int srcWidth, int srcHeight, int srcStride,
+            Object dst, int dstWidth, int dstHeight, int dstStride, int channels,
+            boolean skipChannel, int offsets[]);
 }
-
diff --git a/awt/java/awt/image/CropImageFilter.java b/awt/java/awt/image/CropImageFilter.java
index e90c44a..2f4ca78 100644
--- a/awt/java/awt/image/CropImageFilter.java
+++ b/awt/java/awt/image/CropImageFilter.java
@@ -18,28 +18,36 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.util.Hashtable;
 
 /**
- * The CropImageFilter class crops a rectangular region of an source
- * Image and provides a source for a new image containing the extracted 
- * region.
+ * The CropImageFilter class crops a rectangular region of an source Image and
+ * provides a source for a new image containing the extracted region.
+ * 
+ * @since Android 1.0
  */
 public class CropImageFilter extends ImageFilter {
 
-    /** The HEIGHT. */
+    /**
+     * The HEIGHT.
+     */
     private final int X, Y, WIDTH, HEIGHT;
 
     /**
-     * Instantiates a new CropImageFilter object with the specified
-     * rectangular area.
+     * Instantiates a new CropImageFilter object with the specified rectangular
+     * area.
      * 
-     * @param x the X coordinate of rectangular area. 
-     * @param y the Y coordinate of rectangular area.
-     * @param w the width of rectangular area.
-     * @param h the height of rectangular area.
+     * @param x
+     *            the X coordinate of rectangular area.
+     * @param y
+     *            the Y coordinate of rectangular area.
+     * @param w
+     *            the width of rectangular area.
+     * @param h
+     *            the height of rectangular area.
      */
     public CropImageFilter(int x, int y, int w, int h) {
         X = x;
@@ -52,20 +60,20 @@
     @Override
     public void setProperties(Hashtable<?, ?> props) {
         Hashtable<Object, Object> fprops;
-        if(props == null) {
+        if (props == null) {
             fprops = new Hashtable<Object, Object>();
         } else {
-            fprops = (Hashtable<Object, Object>) props.clone();
+            fprops = (Hashtable<Object, Object>)props.clone();
         }
         String propName = "Crop Filters"; //$NON-NLS-1$
         String prop = "x=" + X + "; y=" + Y + "; width=" + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-        WIDTH + "; height=" + HEIGHT; //$NON-NLS-1$
+                WIDTH + "; height=" + HEIGHT; //$NON-NLS-1$
         Object o = fprops.get(propName);
-        if(o != null){
-            if(o instanceof String){
+        if (o != null) {
+            if (o instanceof String) {
                 prop = (String)o + "; " + prop; //$NON-NLS-1$
-            }else{
-                prop =  o.toString() + "; " + prop; //$NON-NLS-1$
+            } else {
+                prop = o.toString() + "; " + prop; //$NON-NLS-1$
             }
         }
         fprops.put(propName, prop);
@@ -73,15 +81,14 @@
     }
 
     @Override
-    public void setPixels(int x, int y, int w, int h, ColorModel model, int[] pixels, int off, int scansize) {
+    public void setPixels(int x, int y, int w, int h, ColorModel model, int[] pixels, int off,
+            int scansize) {
 
-        if(x + w < X || X + WIDTH < x ||
-                y + h < Y || Y + HEIGHT < y) {
+        if (x + w < X || X + WIDTH < x || y + h < Y || Y + HEIGHT < y) {
             return;
         }
 
-        int destX, destY, destWidth, destHeight, endX, endY,
-        srcEndX, srcEndY;
+        int destX, destY, destWidth, destHeight, endX, endY, srcEndX, srcEndY;
 
         int newOffset = off;
 
@@ -91,37 +98,36 @@
         srcEndX = x + w;
         srcEndY = y + h;
 
-        if(x <= X){
+        if (x <= X) {
             destX = 0;
             newOffset += X;
-            if(endX >= srcEndX){
+            if (endX >= srcEndX) {
                 destWidth = srcEndX - X;
-            }else{
+            } else {
                 destWidth = WIDTH;
             }
-        }else{
+        } else {
             destX = x - X;
-            if(endX >= srcEndX){
+            if (endX >= srcEndX) {
                 destWidth = w;
-            }else{
+            } else {
                 destWidth = endX - x;
             }
         }
 
-
-        if(y <= Y){
+        if (y <= Y) {
             newOffset += scansize * (Y - y);
             destY = 0;
-            if(endY >= srcEndY){
+            if (endY >= srcEndY) {
                 destHeight = srcEndY - Y;
-            }else{
+            } else {
                 destHeight = HEIGHT;
             }
-        }else{
+        } else {
             destY = y - Y;
-            if(endY >= srcEndY){
+            if (endY >= srcEndY) {
                 destHeight = h;
-            }else{
+            } else {
                 destHeight = endY - y;
             }
         }
@@ -129,15 +135,14 @@
     }
 
     @Override
-    public void setPixels(int x, int y, int w, int h, ColorModel model, byte[] pixels, int off, int scansize) {
+    public void setPixels(int x, int y, int w, int h, ColorModel model, byte[] pixels, int off,
+            int scansize) {
 
-        if(x + w < X || X + WIDTH < x ||
-                y + h < Y || Y + HEIGHT < y) {
+        if (x + w < X || X + WIDTH < x || y + h < Y || Y + HEIGHT < y) {
             return;
         }
 
-        int destX, destY, destWidth, destHeight, endX, endY,
-        srcEndX, srcEndY;
+        int destX, destY, destWidth, destHeight, endX, endY, srcEndX, srcEndY;
 
         int newOffset = off;
 
@@ -147,37 +152,36 @@
         srcEndX = x + w;
         srcEndY = y + h;
 
-        if(x <= X){
+        if (x <= X) {
             destX = 0;
             newOffset += X;
-            if(endX >= srcEndX){
+            if (endX >= srcEndX) {
                 destWidth = srcEndX - X;
-            }else{
+            } else {
                 destWidth = WIDTH;
             }
-        }else{
+        } else {
             destX = x - X;
-            if(endX >= srcEndX){
+            if (endX >= srcEndX) {
                 destWidth = w;
-            }else{
+            } else {
                 destWidth = endX - x;
             }
         }
 
-
-        if(y <= Y){
+        if (y <= Y) {
             newOffset += scansize * (Y - y);
             destY = 0;
-            if(endY >= srcEndY){
+            if (endY >= srcEndY) {
                 destHeight = srcEndY - Y;
-            }else{
+            } else {
                 destHeight = HEIGHT;
             }
-        }else{
+        } else {
             destY = y - Y;
-            if(endY >= srcEndY){
+            if (endY >= srcEndY) {
                 destHeight = h;
-            }else{
+            } else {
                 destHeight = endY - y;
             }
         }
@@ -190,4 +194,3 @@
     }
 
 }
-
diff --git a/awt/java/awt/image/DataBuffer.java b/awt/java/awt/image/DataBuffer.java
index 6856aee..92f900f 100644
--- a/awt/java/awt/image/DataBuffer.java
+++ b/awt/java/awt/image/DataBuffer.java
@@ -18,65 +18,97 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import org.apache.harmony.awt.gl.image.DataBufferListener;
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Class DataBuffer is a wrapper class for a data array
- * to be used for the situation where a suite of functionality
- * acts on a set of data in a consistent way even though the 
- * primitive type of the data may vary from one use to the next. 
+ * The Class DataBuffer is a wrapper class for a data array to be used for the
+ * situation where a suite of functionality acts on a set of data in a
+ * consistent way even though the primitive type of the data may vary from one
+ * use to the next.
+ * 
+ * @since Android 1.0
  */
 public abstract class DataBuffer {
 
-    /** The Constant TYPE_BYTE. */
+    /**
+     * The Constant TYPE_BYTE.
+     */
     public static final int TYPE_BYTE = 0;
 
-    /** The Constant TYPE_USHORT. */
+    /**
+     * The Constant TYPE_USHORT.
+     */
     public static final int TYPE_USHORT = 1;
 
-    /** The Constant TYPE_SHORT. */
+    /**
+     * The Constant TYPE_SHORT.
+     */
     public static final int TYPE_SHORT = 2;
 
-    /** The Constant TYPE_INT. */
+    /**
+     * The Constant TYPE_INT.
+     */
     public static final int TYPE_INT = 3;
 
-    /** The Constant TYPE_FLOAT. */
+    /**
+     * The Constant TYPE_FLOAT.
+     */
     public static final int TYPE_FLOAT = 4;
 
-    /** The Constant TYPE_DOUBLE. */
+    /**
+     * The Constant TYPE_DOUBLE.
+     */
     public static final int TYPE_DOUBLE = 5;
 
-    /** The Constant TYPE_UNDEFINED. */
+    /**
+     * The Constant TYPE_UNDEFINED.
+     */
     public static final int TYPE_UNDEFINED = 32;
 
-    /** The data type indicates the primitive type of the 
-     * data in this DataBuffer. */
+    /**
+     * The data type indicates the primitive type of the data in this
+     * DataBuffer.
+     */
     protected int dataType;
 
-    /** The number of data arrays in this DataBuffer. */
+    /**
+     * The number of data arrays in this DataBuffer.
+     */
     protected int banks;
 
-    /** The starting index for reading the 
-     * data from the first (or only) internal data array. */
+    /**
+     * The starting index for reading the data from the first (or only) internal
+     * data array.
+     */
     protected int offset;
 
-    /** The length (number of elements) of the data arrays. */
+    /**
+     * The length (number of elements) of the data arrays.
+     */
     protected int size;
 
-    /** The starting indices for reading the 
-     * data from the internal data arrays. */
+    /**
+     * The starting indices for reading the data from the internal data arrays.
+     */
     protected int offsets[];
-    
-    /** The data changed. */
+
+    /**
+     * The data changed.
+     */
     boolean dataChanged = true;
-    
-    /** The data taken. */
+
+    /**
+     * The data taken.
+     */
     boolean dataTaken = false;
-    
-    /** The listener. */
+
+    /**
+     * The listener.
+     */
     DataBufferListener listener;
 
     static {
@@ -86,11 +118,15 @@
     /**
      * Instantiates a new data buffer.
      * 
-     * @param dataType the data type
-     * @param size the length (number of elements) of the data arrays
-     * @param numBanks the number of data arrays to create
-     * @param offsets the starting indices for reading the 
-     * data from the internal data arrays
+     * @param dataType
+     *            the data type.
+     * @param size
+     *            the length (number of elements) of the data arrays.
+     * @param numBanks
+     *            the number of data arrays to create.
+     * @param offsets
+     *            the starting indices for reading the data from the internal
+     *            data arrays.
      */
     protected DataBuffer(int dataType, int size, int numBanks, int[] offsets) {
         this.dataType = dataType;
@@ -101,13 +137,17 @@
     }
 
     /**
-     * Instantiates a new data buffer with all of the 
-     * data arrays starting at the same index.
+     * Instantiates a new data buffer with all of the data arrays starting at
+     * the same index.
      * 
-     * @param dataType the data type
-     * @param size the length (number of elements) of the data arrays
-     * @param numBanks the number of data arrays to create
-     * @param offset the offset to use for all of the data arrays
+     * @param dataType
+     *            the data type.
+     * @param size
+     *            the length (number of elements) of the data arrays.
+     * @param numBanks
+     *            the number of data arrays to create.
+     * @param offset
+     *            the offset to use for all of the data arrays.
      */
     protected DataBuffer(int dataType, int size, int numBanks, int offset) {
         this.dataType = dataType;
@@ -122,12 +162,15 @@
     }
 
     /**
-     * Instantiates a new data buffer with all of the 
-     * data arrays read from the beginning (at offset zero).
+     * Instantiates a new data buffer with all of the data arrays read from the
+     * beginning (at offset zero).
      * 
-     * @param dataType the data type
-     * @param size the length (number of elements) of the data arrays
-     * @param numBanks the number of data arrays to create
+     * @param dataType
+     *            the data type.
+     * @param size
+     *            the length (number of elements) of the data arrays.
+     * @param numBanks
+     *            the number of data arrays to create.
      */
     protected DataBuffer(int dataType, int size, int numBanks) {
         this.dataType = dataType;
@@ -138,11 +181,13 @@
     }
 
     /**
-     * Instantiates a new data buffer with one internal data array
-     * read from the beginning (at offset zero).
+     * Instantiates a new data buffer with one internal data array read from the
+     * beginning (at offset zero).
      * 
-     * @param dataType the data type
-     * @param size the length (number of elements) of the data arrays
+     * @param dataType
+     *            the data type.
+     * @param size
+     *            the length (number of elements) of the data arrays.
      */
     protected DataBuffer(int dataType, int size) {
         this.dataType = dataType;
@@ -153,165 +198,161 @@
     }
 
     /**
-     * Sets the data value in the specified array at the 
-     * specified index.
+     * Sets the data value in the specified array at the specified index.
      * 
-     * @param bank the internal array to the data to
-     * @param i the index within the array where the data
-     * should be written
-     * @param val the value to write into the array
+     * @param bank
+     *            the internal array to the data to.
+     * @param i
+     *            the index within the array where the data should be written.
+     * @param val
+     *            the value to write into the array.
      */
     public abstract void setElem(int bank, int i, int val);
 
     /**
-     * Sets the float data value in the specified array at the 
-     * specified index.
+     * Sets the float data value in the specified array at the specified index.
      * 
-     * @param bank the internal array to the data to
-     * @param i the index within the array where the data
-     * should be written
-     * @param val the value to write into the array
+     * @param bank
+     *            the internal array to the data to.
+     * @param i
+     *            the index within the array where the data should be written.
+     * @param val
+     *            the value to write into the array.
      */
     public void setElemFloat(int bank, int i, float val) {
-        setElem(bank, i, (int) val);
+        setElem(bank, i, (int)val);
     }
 
     /**
-     * Sets the double data value in the specified array at the 
-     * specified index.
+     * Sets the double data value in the specified array at the specified index.
      * 
-     * @param bank the internal array to the data to
-     * @param i the index within the array where the data
-     * should be written
-     * @param val the value to write into the array
+     * @param bank
+     *            the internal array to the data to.
+     * @param i
+     *            the index within the array where the data should be written.
+     * @param val
+     *            the value to write into the array.
      */
     public void setElemDouble(int bank, int i, double val) {
-        setElem(bank, i, (int) val);
+        setElem(bank, i, (int)val);
     }
 
     /**
-     * Sets the data value in the first array at the 
-     * specified index.
+     * Sets the data value in the first array at the specified index.
      * 
-     * @param i the index within the array where the data
-     * should be written
-     * @param val the value to write into the array
+     * @param i
+     *            the index within the array where the data should be written.
+     * @param val
+     *            the value to write into the array.
      */
     public void setElem(int i, int val) {
         setElem(0, i, val);
     }
 
     /**
-     * Gets the data value from the specified data array at the 
-     * specified index.
+     * Gets the data value from the specified data array at the specified index.
      * 
-     * @param bank the data array to read from
-     * @param i the index within the array where the data
-     * should be read
-     * 
-     * @return the data element
+     * @param bank
+     *            the data array to read from.
+     * @param i
+     *            the index within the array where the data should be read.
+     * @return the data element.
      */
     public abstract int getElem(int bank, int i);
 
     /**
-     * Gets the float-type data value from the specified 
-     * data array at the specified index.
+     * Gets the float-type data value from the specified data array at the
+     * specified index.
      * 
-     * @param bank the data array to read from
-     * @param i the index within the array where the data
-     * should be read
-     * 
-     * @return the data element
+     * @param bank
+     *            the data array to read from.
+     * @param i
+     *            the index within the array where the data should be read.
+     * @return the data element.
      */
     public float getElemFloat(int bank, int i) {
         return getElem(bank, i);
     }
 
     /**
-     * Gets the double-type data value from the specified 
-     * data array at the specified index.
+     * Gets the double-type data value from the specified data array at the
+     * specified index.
      * 
-     * @param bank the data array to read from
-     * @param i the index within the array where the data
-     * should be read
-     * 
-     * @return the data element
+     * @param bank
+     *            the data array to read from.
+     * @param i
+     *            the index within the array where the data should be read.
+     * @return the data element.
      */
     public double getElemDouble(int bank, int i) {
         return getElem(bank, i);
     }
 
     /**
-     * Sets the float data value in the first array at the 
-     * specified index.
+     * Sets the float data value in the first array at the specified index.
      * 
-     * @param i the index within the array where the data
-     * should be written
-     * @param val the value to write into the array
+     * @param i
+     *            the index within the array where the data should be written.
+     * @param val
+     *            the value to write into the array.
      */
     public void setElemFloat(int i, float val) {
         setElemFloat(0, i, val);
     }
 
     /**
-     * Sets the double data value in the first array at the 
-     * specified index.
+     * Sets the double data value in the first array at the specified index.
      * 
-     * @param i the index within the array where the data
-     * should be written
-     * @param val the value to write into the array
+     * @param i
+     *            the index within the array where the data should be written.
+     * @param val
+     *            the value to write into the array.
      */
     public void setElemDouble(int i, double val) {
         setElemDouble(0, i, val);
     }
 
     /**
-     * Gets the data value from the first 
-     * data array at the specified index and returns it
-     * as an int.
+     * Gets the data value from the first data array at the specified index and
+     * returns it as an integer.
      * 
-     * @param i the index within the array where the data
-     * should be read
-     * 
-     * @return the data element
+     * @param i
+     *            the index within the array where the data should be read.
+     * @return the data element.
      */
     public int getElem(int i) {
         return getElem(0, i);
     }
 
     /**
-     * Gets the data value from the first 
-     * data array at the specified index and returns it
-     * as a float.
+     * Gets the data value from the first data array at the specified index and
+     * returns it as a float.
      * 
-     * @param i the index within the array where the data
-     * should be read
-     * 
-     * @return the data element
+     * @param i
+     *            the index within the array where the data should be read.
+     * @return the data element.
      */
     public float getElemFloat(int i) {
         return getElem(0, i);
     }
 
     /**
-     * Gets the data value from the first 
-     * data array at the specified index and returns it
-     * as a double.
+     * Gets the data value from the first data array at the specified index and
+     * returns it as a double.
      * 
-     * @param i the index within the array where the data
-     * should be read
-     * 
-     * @return the data element
+     * @param i
+     *            the index within the array where the data should be read.
+     * @return the data element.
      */
     public double getElemDouble(int i) {
         return getElem(i);
     }
 
     /**
-     * Gets the array giving the offsets corresponding 
-     * to the internal data arrays.
+     * Gets the array giving the offsets corresponding to the internal data
+     * arrays.
      * 
-     * @return the array of offsets
+     * @return the array of offsets.
      */
     public int[] getOffsets() {
         return offsets;
@@ -320,18 +361,16 @@
     /**
      * Gets the size in bits of the primitive data type.
      * 
-     * @return the size in bits of the primitive data type
-
+     * @return the size in bits of the primitive data type.
      */
     public int getSize() {
         return size;
     }
 
     /**
-     * Gets the offset corresponding to the first internal 
-     * data array.
+     * Gets the offset corresponding to the first internal data array.
      * 
-     * @return the offset
+     * @return the offset.
      */
     public int getOffset() {
         return offset;
@@ -340,7 +379,7 @@
     /**
      * Gets the number of data arrays in this DataBuffer.
      * 
-     * @return the number of data arrays
+     * @return the number of data arrays.
      */
     public int getNumBanks() {
         return banks;
@@ -349,7 +388,7 @@
     /**
      * Gets the primitive type of this buffer's data.
      * 
-     * @return the data type
+     * @return the data type.
      */
     public int getDataType() {
         return this.dataType;
@@ -358,85 +397,85 @@
     /**
      * Gets the size in bits of the primitive data type.
      * 
-     * @param type the primitive type
-     * 
-     * @return the size in bits of the primitive data type
+     * @param type
+     *            the primitive type.
+     * @return the size in bits of the primitive data type.
      */
     public static int getDataTypeSize(int type) {
         switch (type) {
 
-        case TYPE_BYTE:
-            return 8;
+            case TYPE_BYTE:
+                return 8;
 
-        case TYPE_USHORT:
-        case TYPE_SHORT:
-            return 16;
+            case TYPE_USHORT:
+            case TYPE_SHORT:
+                return 16;
 
-        case TYPE_INT:
-        case TYPE_FLOAT:
-            return 32;
+            case TYPE_INT:
+            case TYPE_FLOAT:
+                return 32;
 
-        case TYPE_DOUBLE:
-            return 64;
+            case TYPE_DOUBLE:
+                return 64;
 
-        default:
-            // awt.22C=Unknown data type {0}
-            throw new IllegalArgumentException(Messages.getString("awt.22C", type)); //$NON-NLS-1$
+            default:
+                // awt.22C=Unknown data type {0}
+                throw new IllegalArgumentException(Messages.getString("awt.22C", type)); //$NON-NLS-1$
         }
     }
-    
+
     /**
      * Notifies the listener that the data has changed.
      */
-    void notifyChanged(){
-        if(listener != null && !dataChanged){
+    void notifyChanged() {
+        if (listener != null && !dataChanged) {
             dataChanged = true;
             listener.dataChanged();
         }
     }
-    
+
     /**
      * Notifies the listener that the data has been released.
      */
-    void notifyTaken(){
-        if(listener != null && !dataTaken){
+    void notifyTaken() {
+        if (listener != null && !dataTaken) {
             dataTaken = true;
             listener.dataTaken();
         }
     }
-    
+
     /**
      * Release the data.
      */
-    void releaseData(){
-        if(listener != null && dataTaken){
+    void releaseData() {
+        if (listener != null && dataTaken) {
             dataTaken = false;
             listener.dataReleased();
         }
     }
-    
+
     /**
      * Adds the data buffer listener.
      * 
-     * @param listener the listener
+     * @param listener
+     *            the listener.
      */
-    void addDataBufferListener(DataBufferListener listener){
+    void addDataBufferListener(DataBufferListener listener) {
         this.listener = listener;
     }
-    
+
     /**
      * Removes the data buffer listener.
      */
-    void removeDataBufferListener(){
+    void removeDataBufferListener() {
         listener = null;
     }
-    
+
     /**
      * Validate.
      */
-    void validate(){
+    void validate() {
         dataChanged = false;
     }
-    
-}
 
+}
diff --git a/awt/java/awt/image/DataBufferByte.java b/awt/java/awt/image/DataBufferByte.java
index 4d29c9c..3407de8 100644
--- a/awt/java/awt/image/DataBufferByte.java
+++ b/awt/java/awt/image/DataBufferByte.java
@@ -18,25 +18,32 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 /**
- * The Class DataBufferByte is the subclass of DataBuffer
- * for the case where the underlying data is of type byte.
+ * The Class DataBufferByte is the subclass of DataBuffer for the case where the
+ * underlying data is of type byte.
+ * 
+ * @since Android 1.0
  */
 public final class DataBufferByte extends DataBuffer {
 
-    /** The data. */
+    /**
+     * The data.
+     */
     byte data[][];
 
     /**
      * Instantiates a new data buffer of type unsigned short.
      * 
-     * @param dataArrays the data arrays to copy the data from
-     * @param size the length (number of elements) to use 
-     * from the data arrays
-     * @param offsets the starting indices for reading the 
-     * data from the internal data arrays
+     * @param dataArrays
+     *            the data arrays to copy the data from.
+     * @param size
+     *            the length (number of elements) to use from the data arrays.
+     * @param offsets
+     *            the starting indices for reading the data from the internal
+     *            data arrays.
      */
     public DataBufferByte(byte dataArrays[][], int size, int offsets[]) {
         super(TYPE_BYTE, size, dataArrays.length, offsets);
@@ -46,9 +53,10 @@
     /**
      * Instantiates a new data buffer of type unsigned short.
      * 
-     * @param dataArrays the data arrays to copy the data from
-     * @param size the length (number of elements) to use 
-     * from the data arrays
+     * @param dataArrays
+     *            the data arrays to copy the data from.
+     * @param size
+     *            the length (number of elements) to use from the data arrays.
      */
     public DataBufferByte(byte dataArrays[][], int size) {
         super(TYPE_BYTE, size, dataArrays.length);
@@ -56,12 +64,15 @@
     }
 
     /**
-     * Instantiates a new data buffer of type unsigned short
-     * with a single underlying array of data.
+     * Instantiates a new data buffer of type unsigned short with a single
+     * underlying array of data.
      * 
-     * @param dataArray the data array to copy the data from
-     * @param size the length (number of elements) to use 
-     * @param offset the starting index to use when reading the data
+     * @param dataArray
+     *            the data array to copy the data from.
+     * @param size
+     *            the length (number of elements) to use.
+     * @param offset
+     *            the starting index to use when reading the data.
      */
     public DataBufferByte(byte dataArray[], int size, int offset) {
         super(TYPE_BYTE, size, 1, offset);
@@ -70,12 +81,13 @@
     }
 
     /**
-     * Instantiates a new data buffer of type unsigned short
-     * with a single underlying array of data starting at
-     * index 0.
+     * Instantiates a new data buffer of type unsigned short with a single
+     * underlying array of data starting at index 0.
      * 
-     * @param dataArray the data array to copy the data from
-     * @param size the length (number of elements) to use 
+     * @param dataArray
+     *            the data array to copy the data from.
+     * @param size
+     *            the length (number of elements) to use.
      */
     public DataBufferByte(byte dataArray[], int size) {
         super(TYPE_BYTE, size);
@@ -84,12 +96,13 @@
     }
 
     /**
-     * Instantiates a new empty data buffer of type unsigned short
-     * with offsets equal to zero.
+     * Instantiates a new empty data buffer of type unsigned short with offsets
+     * equal to zero.
      * 
-     * @param size the length (number of elements) to use 
-     * from the data arrays
-     * @param numBanks the number of data arrays to create
+     * @param size
+     *            the length (number of elements) to use from the data arrays.
+     * @param numBanks
+     *            the number of data arrays to create.
      */
     public DataBufferByte(int size, int numBanks) {
         super(TYPE_BYTE, size, numBanks);
@@ -101,11 +114,11 @@
     }
 
     /**
-     * Instantiates a new empty data buffer of type unsigned short
-     * with a single underlying array of data starting at
-     * index 0.
+     * Instantiates a new empty data buffer of type unsigned short with a single
+     * underlying array of data starting at index 0.
      * 
-     * @param size the length (number of elements) to use 
+     * @param size
+     *            the length (number of elements) to use.
      */
     public DataBufferByte(int size) {
         super(TYPE_BYTE, size);
@@ -115,13 +128,13 @@
 
     @Override
     public void setElem(int bank, int i, int val) {
-        data[bank][offsets[bank] + i] = (byte) val;
+        data[bank][offsets[bank] + i] = (byte)val;
         notifyChanged();
     }
 
     @Override
     public void setElem(int i, int val) {
-        data[0][offset + i] = (byte) val;
+        data[0][offset + i] = (byte)val;
         notifyChanged();
     }
 
@@ -133,9 +146,9 @@
     /**
      * Gets the data of the specified internal data array.
      * 
-     * @param bank the index of the desired data array
-     * 
-     * @return the data
+     * @param bank
+     *            the index of the desired data array.
+     * @return the data.
      */
     public byte[] getData(int bank) {
         notifyTaken();
@@ -150,7 +163,7 @@
     /**
      * Gets the bank data.
      * 
-     * @return the bank data
+     * @return the bank data.
      */
     public byte[][] getBankData() {
         notifyTaken();
@@ -160,7 +173,7 @@
     /**
      * Gets the data of the first data array.
      * 
-     * @return the data
+     * @return the data.
      */
     public byte[] getData() {
         notifyTaken();
@@ -168,4 +181,3 @@
     }
 
 }
-
diff --git a/awt/java/awt/image/DataBufferDouble.java b/awt/java/awt/image/DataBufferDouble.java
index fa3d324..5d0a516 100644
--- a/awt/java/awt/image/DataBufferDouble.java
+++ b/awt/java/awt/image/DataBufferDouble.java
@@ -18,26 +18,33 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 /**
- * The Class DataBufferDouble is the subclass of DataBuffer
- * for the case where the underlying data is of type double.
+ * The Class DataBufferDouble is the subclass of DataBuffer for the case where
+ * the underlying data is of type double.
+ * 
+ * @since Android 1.0
  */
 public final class DataBufferDouble extends DataBuffer {
 
-    /** The data. */
+    /**
+     * The data.
+     */
     double data[][];
 
     /**
      * Instantiates a new data buffer of type double.
      * 
-     * @param dataArrays the data arrays to copy the data from
-     * @param size the length (number of elements) to use 
-     * from the data arrays
-     * @param offsets the starting indices for reading the 
-     * data from the internal data arrays
-    */
+     * @param dataArrays
+     *            the data arrays to copy the data from.
+     * @param size
+     *            the length (number of elements) to use from the data arrays.
+     * @param offsets
+     *            the starting indices for reading the data from the internal
+     *            data arrays.
+     */
     public DataBufferDouble(double dataArrays[][], int size, int offsets[]) {
         super(TYPE_DOUBLE, size, dataArrays.length, offsets);
         data = dataArrays.clone();
@@ -46,9 +53,10 @@
     /**
      * Instantiates a new data buffer of type double.
      * 
-     * @param dataArrays the data arrays to copy the data from
-     * @param size the length (number of elements) to use 
-     * from the data arrays
+     * @param dataArrays
+     *            the data arrays to copy the data from.
+     * @param size
+     *            the length (number of elements) to use from the data arrays.
      */
     public DataBufferDouble(double dataArrays[][], int size) {
         super(TYPE_DOUBLE, size, dataArrays.length);
@@ -56,12 +64,15 @@
     }
 
     /**
-     * Instantiates a new data buffer of type double
-     * with a single underlying array of data.
+     * Instantiates a new data buffer of type double with a single underlying
+     * array of data.
      * 
-     * @param dataArray the data array to copy the data from
-     * @param size the length (number of elements) to use 
-     * @param offset the starting index to use when reading the data
+     * @param dataArray
+     *            the data array to copy the data from.
+     * @param size
+     *            the length (number of elements) to use.
+     * @param offset
+     *            the starting index to use when reading the data.
      */
     public DataBufferDouble(double dataArray[], int size, int offset) {
         super(TYPE_DOUBLE, size, 1, offset);
@@ -70,12 +81,13 @@
     }
 
     /**
-     * Instantiates a new data buffer of type double
-     * with a single underlying array of data starting at
-     * index 0.
+     * Instantiates a new data buffer of type double with a single underlying
+     * array of data starting at index 0.
      * 
-     * @param dataArray the data array to copy the data from
-     * @param size the length (number of elements) to use 
+     * @param dataArray
+     *            the data array to copy the data from.
+     * @param size
+     *            the length (number of elements) to use.
      */
     public DataBufferDouble(double dataArray[], int size) {
         super(TYPE_DOUBLE, size);
@@ -84,12 +96,13 @@
     }
 
     /**
-     * Instantiates a new empty data buffer of type double
-     * with offsets equal to zero.
+     * Instantiates a new empty data buffer of type double with offsets equal to
+     * zero.
      * 
-     * @param size the length (number of elements) to use 
-     * from the data arrays
-     * @param numBanks the number of data arrays to create
+     * @param size
+     *            the length (number of elements) to use from the data arrays.
+     * @param numBanks
+     *            the number of data arrays to create.
      */
     public DataBufferDouble(int size, int numBanks) {
         super(TYPE_DOUBLE, size, numBanks);
@@ -101,11 +114,11 @@
     }
 
     /**
-     * Instantiates a new empty data buffer of type double
-     * with a single underlying array of data starting at
-     * index 0.
+     * Instantiates a new empty data buffer of type double with a single
+     * underlying array of data starting at index 0.
      * 
-     * @param size the length (number of elements) to use 
+     * @param size
+     *            the length (number of elements) to use.
      */
     public DataBufferDouble(int size) {
         super(TYPE_DOUBLE, size);
@@ -139,12 +152,12 @@
 
     @Override
     public int getElem(int bank, int i) {
-        return (int) (data[bank][offsets[bank] + i]);
+        return (int)(data[bank][offsets[bank] + i]);
     }
 
     @Override
     public float getElemFloat(int bank, int i) {
-        return (float) (data[bank][offsets[bank] + i]);
+        return (float)(data[bank][offsets[bank] + i]);
     }
 
     @Override
@@ -167,9 +180,9 @@
     /**
      * Gets the data of the specified internal data array.
      * 
-     * @param bank the index of the desired data array
-     * 
-     * @return the data
+     * @param bank
+     *            the index of the desired data array.
+     * @return the data.
      */
     public double[] getData(int bank) {
         notifyTaken();
@@ -178,12 +191,12 @@
 
     @Override
     public int getElem(int i) {
-        return (int) (data[0][offset + i]);
+        return (int)(data[0][offset + i]);
     }
 
     @Override
     public float getElemFloat(int i) {
-        return (float) (data[0][offset + i]);
+        return (float)(data[0][offset + i]);
     }
 
     @Override
@@ -194,7 +207,7 @@
     /**
      * Gets the bank data.
      * 
-     * @return the bank data
+     * @return the bank data.
      */
     public double[][] getBankData() {
         notifyTaken();
@@ -204,11 +217,10 @@
     /**
      * Gets the data of the first data array.
      * 
-     * @return the data
+     * @return the data.
      */
     public double[] getData() {
         notifyTaken();
         return data[0];
     }
 }
-
diff --git a/awt/java/awt/image/DataBufferFloat.java b/awt/java/awt/image/DataBufferFloat.java
index e34245c..9a4a6bf 100644
--- a/awt/java/awt/image/DataBufferFloat.java
+++ b/awt/java/awt/image/DataBufferFloat.java
@@ -18,25 +18,32 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 /**
- * The Class DataBufferFloat is the subclass of DataBuffer
- * for the case where the underlying data is float.
+ * The Class DataBufferFloat is the subclass of DataBuffer for the case where
+ * the underlying data is float.
+ * 
+ * @since Android 1.0
  */
 public final class DataBufferFloat extends DataBuffer {
 
-    /** The data. */
+    /**
+     * The data.
+     */
     float data[][];
 
     /**
      * Instantiates a new data buffer of type float.
      * 
-     * @param dataArrays the data arrays to copy the data from
-     * @param size the length (number of elements) to use 
-     * from the data arrays
-     * @param offsets the starting indices for reading the 
-     * data from the internal data arrays
+     * @param dataArrays
+     *            the data arrays to copy the data from.
+     * @param size
+     *            the length (number of elements) to use from the data arrays.
+     * @param offsets
+     *            the starting indices for reading the data from the internal
+     *            data arrays.
      */
     public DataBufferFloat(float dataArrays[][], int size, int offsets[]) {
         super(TYPE_FLOAT, size, dataArrays.length, offsets);
@@ -46,9 +53,10 @@
     /**
      * Instantiates a new data buffer of type float.
      * 
-     * @param dataArrays the data arrays to copy the data from
-     * @param size the length (number of elements) to use 
-     * from the data arrays
+     * @param dataArrays
+     *            the data arrays to copy the data from.
+     * @param size
+     *            the length (number of elements) to use from the data arrays.
      */
     public DataBufferFloat(float dataArrays[][], int size) {
         super(TYPE_FLOAT, size, dataArrays.length);
@@ -56,12 +64,15 @@
     }
 
     /**
-     * Instantiates a new data buffer of type float
-     * with a single underlying array of data.
+     * Instantiates a new data buffer of type float with a single underlying
+     * array of data.
      * 
-     * @param dataArray the data array to copy the data from
-     * @param size the length (number of elements) to use 
-     * @param offset the starting index to use when reading the data
+     * @param dataArray
+     *            the data array to copy the data from.
+     * @param size
+     *            the length (number of elements) to use.
+     * @param offset
+     *            the starting index to use when reading the data.
      */
     public DataBufferFloat(float dataArray[], int size, int offset) {
         super(TYPE_FLOAT, size, 1, offset);
@@ -70,12 +81,13 @@
     }
 
     /**
-     * Instantiates a new data buffer of type float
-     * with a single underlying array of data starting at
-     * index 0.
+     * Instantiates a new data buffer of type float with a single underlying
+     * array of data starting at index 0.
      * 
-     * @param dataArray the data array to copy the data from
-     * @param size the length (number of elements) to use 
+     * @param dataArray
+     *            the data array to copy the data from.
+     * @param size
+     *            the length (number of elements) to use.
      */
     public DataBufferFloat(float dataArray[], int size) {
         super(TYPE_FLOAT, size);
@@ -84,12 +96,13 @@
     }
 
     /**
-     * Instantiates a new empty data buffer of type float
-     * with offsets equal to zero.
+     * Instantiates a new empty data buffer of type float with offsets equal to
+     * zero.
      * 
-     * @param size the length (number of elements) to use 
-     * from the data arrays
-     * @param numBanks the number of data arrays to create
+     * @param size
+     *            the length (number of elements) to use from the data arrays.
+     * @param numBanks
+     *            the number of data arrays to create.
      */
     public DataBufferFloat(int size, int numBanks) {
         super(TYPE_FLOAT, size, numBanks);
@@ -101,11 +114,11 @@
     }
 
     /**
-     * Instantiates a new empty data buffer of type float
-     * with a single underlying array of data starting at
-     * index 0.
+     * Instantiates a new empty data buffer of type float with a single
+     * underlying array of data starting at index 0.
      * 
-     * @param size the length (number of elements) to use 
+     * @param size
+     *            the length (number of elements) to use.
      */
     public DataBufferFloat(int size) {
         super(TYPE_FLOAT, size);
@@ -127,7 +140,7 @@
 
     @Override
     public void setElemDouble(int bank, int i, double val) {
-        data[bank][offsets[bank] + i] = (float) val;
+        data[bank][offsets[bank] + i] = (float)val;
         notifyChanged();
     }
 
@@ -139,7 +152,7 @@
 
     @Override
     public int getElem(int bank, int i) {
-        return (int) (data[bank][offsets[bank] + i]);
+        return (int)(data[bank][offsets[bank] + i]);
     }
 
     @Override
@@ -160,16 +173,16 @@
 
     @Override
     public void setElemDouble(int i, double val) {
-        data[0][offset + i] = (float) val;
+        data[0][offset + i] = (float)val;
         notifyChanged();
     }
 
     /**
      * Gets the data of the specified internal data array.
      * 
-     * @param bank the index of the desired array
-     * 
-     * @return the data
+     * @param bank
+     *            the index of the desired array.
+     * @return the data.
      */
     public float[] getData(int bank) {
         notifyTaken();
@@ -178,7 +191,7 @@
 
     @Override
     public int getElem(int i) {
-        return (int) (data[0][offset + i]);
+        return (int)(data[0][offset + i]);
     }
 
     @Override
@@ -194,7 +207,7 @@
     /**
      * Gets the bank data.
      * 
-     * @return the bank data
+     * @return the bank data.
      */
     public float[][] getBankData() {
         notifyTaken();
@@ -204,11 +217,10 @@
     /**
      * Gets the data of the first data array.
      * 
-     * @return the data
+     * @return the data.
      */
     public float[] getData() {
         notifyTaken();
         return data[0];
     }
 }
-
diff --git a/awt/java/awt/image/DataBufferInt.java b/awt/java/awt/image/DataBufferInt.java
index 43dc188..380a127 100644
--- a/awt/java/awt/image/DataBufferInt.java
+++ b/awt/java/awt/image/DataBufferInt.java
@@ -18,25 +18,32 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 /**
- * The Class DataBufferInt is the subclass of DataBuffer
- * for the case where the underlying data is of type int.
+ * The Class DataBufferInt is the subclass of DataBuffer for the case where the
+ * underlying data is of type integer.
+ * 
+ * @since Android 1.0
  */
 public final class DataBufferInt extends DataBuffer {
 
-    /** The data. */
+    /**
+     * The data.
+     */
     int data[][];
 
     /**
-     * Instantiates a new data buffer of type int.
+     * Instantiates a new data buffer of type integer.
      * 
-     * @param dataArrays the data arrays to copy the data from
-     * @param size the length (number of elements) to use 
-     * from the data arrays
-     * @param offsets the starting indices for reading the 
-     * data from the internal data arrays
+     * @param dataArrays
+     *            the data arrays to copy the data from.
+     * @param size
+     *            the length (number of elements) to use from the data arrays.
+     * @param offsets
+     *            the starting indices for reading the data from the internal
+     *            data arrays.
      */
     public DataBufferInt(int dataArrays[][], int size, int offsets[]) {
         super(TYPE_INT, size, dataArrays.length, offsets);
@@ -44,11 +51,12 @@
     }
 
     /**
-     * Instantiates a new data buffer of type int.
+     * Instantiates a new data buffer of type integer.
      * 
-     * @param dataArrays the data arrays to copy the data from
-     * @param size the length (number of elements) to use 
-     * from the data arrays
+     * @param dataArrays
+     *            the data arrays to copy the data from.
+     * @param size
+     *            the length (number of elements) to use from the data arrays.
      */
     public DataBufferInt(int dataArrays[][], int size) {
         super(TYPE_INT, size, dataArrays.length);
@@ -56,12 +64,15 @@
     }
 
     /**
-     * Instantiates a new data buffer of type int
-     * with a single underlying array of data.
+     * Instantiates a new data buffer of type integer with a single underlying
+     * array of data.
      * 
-     * @param dataArray the data array to copy the data from
-     * @param size the length (number of elements) to use 
-     * @param offset the starting index to use when reading the data
+     * @param dataArray
+     *            the data array to copy the data from.
+     * @param size
+     *            the length (number of elements) to use.
+     * @param offset
+     *            the starting index to use when reading the data.
      */
     public DataBufferInt(int dataArray[], int size, int offset) {
         super(TYPE_INT, size, 1, offset);
@@ -70,12 +81,13 @@
     }
 
     /**
-     * Instantiates a new data buffer of type int
-     * with a single underlying array of data starting at
-     * index 0.
+     * Instantiates a new data buffer of type integer with a single underlying
+     * array of data starting at index 0.
      * 
-     * @param dataArray the data array to copy the data from
-     * @param size the length (number of elements) to use 
+     * @param dataArray
+     *            the data array to copy the data from.
+     * @param size
+     *            the length (number of elements) to use.
      */
     public DataBufferInt(int dataArray[], int size) {
         super(TYPE_INT, size);
@@ -84,12 +96,13 @@
     }
 
     /**
-     * Instantiates a new empty data buffer of type int
-     * with offsets equal to zero.
+     * Instantiates a new empty data buffer of type integer with offsets equal
+     * to zero.
      * 
-     * @param size the length (number of elements) to use 
-     * from the data arrays
-     * @param numBanks the number of data arrays to create
+     * @param size
+     *            the length (number of elements) to use from the data arrays.
+     * @param numBanks
+     *            the number of data arrays to create.
      */
     public DataBufferInt(int size, int numBanks) {
         super(TYPE_INT, size, numBanks);
@@ -101,11 +114,11 @@
     }
 
     /**
-     * Instantiates a new empty data buffer of type int
-     * with a single underlying array of data starting at
-     * index 0.
+     * Instantiates a new empty data buffer of type integer with a single
+     * underlying array of data starting at index 0.
      * 
-     * @param size the length (number of elements) to use 
+     * @param size
+     *            the length (number of elements) to use.
      */
     public DataBufferInt(int size) {
         super(TYPE_INT, size);
@@ -133,9 +146,9 @@
     /**
      * Gets the data of the specified internal data array.
      * 
-     * @param bank the index of the desired data array
-     * 
-     * @return the data
+     * @param bank
+     *            the index of the desired data array.
+     * @return the data.
      */
     public int[] getData(int bank) {
         notifyTaken();
@@ -150,7 +163,7 @@
     /**
      * Gets the bank data.
      * 
-     * @return the bank data
+     * @return the bank data.
      */
     public int[][] getBankData() {
         notifyTaken();
@@ -160,11 +173,10 @@
     /**
      * Gets the data of the first data array.
      * 
-     * @return the data
+     * @return the data.
      */
     public int[] getData() {
         notifyTaken();
         return data[0];
     }
 }
-
diff --git a/awt/java/awt/image/DataBufferShort.java b/awt/java/awt/image/DataBufferShort.java
index 819ba4a..1b11b29 100644
--- a/awt/java/awt/image/DataBufferShort.java
+++ b/awt/java/awt/image/DataBufferShort.java
@@ -18,25 +18,32 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 /**
- * The Class DataBufferShort is the subclass of DataBuffer
- * for the case where the underlying data is short.
+ * The Class DataBufferShort is the subclass of DataBuffer for the case where
+ * the underlying data is short.
+ * 
+ * @since Android 1.0
  */
 public final class DataBufferShort extends DataBuffer {
 
-    /** The data. */
+    /**
+     * The data.
+     */
     short data[][];
 
     /**
      * Instantiates a new data buffer of type short.
      * 
-     * @param dataArrays the data arrays to copy the data from
-     * @param size the length (number of elements) to use 
-     * from the data arrays
-     * @param offsets the starting indices for reading the 
-     * data from the internal data arrays
+     * @param dataArrays
+     *            the data arrays to copy the data from.
+     * @param size
+     *            the length (number of elements) to use from the data arrays.
+     * @param offsets
+     *            the starting indices for reading the data from the internal
+     *            data arrays.
      */
     public DataBufferShort(short dataArrays[][], int size, int offsets[]) {
         super(TYPE_SHORT, size, dataArrays.length, offsets);
@@ -46,9 +53,10 @@
     /**
      * Instantiates a new data buffer of type short.
      * 
-     * @param dataArrays the data arrays to copy the data from
-     * @param size the length (number of elements) to use 
-     * from the data arrays
+     * @param dataArrays
+     *            the data arrays to copy the data from.
+     * @param size
+     *            the length (number of elements) to use from the data arrays.
      */
     public DataBufferShort(short dataArrays[][], int size) {
         super(TYPE_SHORT, size, dataArrays.length);
@@ -56,13 +64,15 @@
     }
 
     /**
-     * Instantiates a new data buffer of type short
-     * with a single underlying array of data.
+     * Instantiates a new data buffer of type short with a single underlying
+     * array of data.
      * 
-     * @param dataArray the data array to copy the data from
-     * @param size the length (number of elements) to use 
-     * @param offset the starting index to use when reading the data
-
+     * @param dataArray
+     *            the data array to copy the data from.
+     * @param size
+     *            the length (number of elements) to use.
+     * @param offset
+     *            the starting index to use when reading the data.
      */
     public DataBufferShort(short dataArray[], int size, int offset) {
         super(TYPE_SHORT, size, 1, offset);
@@ -71,13 +81,13 @@
     }
 
     /**
-     * Instantiates a new data buffer of type short
-     * with a single underlying array of data starting at
-     * index 0.
+     * Instantiates a new data buffer of type short with a single underlying
+     * array of data starting at index 0.
      * 
-     * @param dataArray the data array to copy the data from
-     * @param size the length (number of elements) to use 
-
+     * @param dataArray
+     *            the data array to copy the data from.
+     * @param size
+     *            the length (number of elements) to use.
      */
     public DataBufferShort(short dataArray[], int size) {
         super(TYPE_SHORT, size);
@@ -86,12 +96,12 @@
     }
 
     /**
-     * Instantiates a new data buffer of type short
-     * with offsets equal to zero.
+     * Instantiates a new data buffer of type short with offsets equal to zero.
      * 
-     * @param size the length (number of elements) to use 
-     * from the data arrays
-     * @param numBanks the number of data arrays to create
+     * @param size
+     *            the length (number of elements) to use from the data arrays.
+     * @param numBanks
+     *            the number of data arrays to create.
      */
     public DataBufferShort(int size, int numBanks) {
         super(TYPE_SHORT, size, numBanks);
@@ -103,11 +113,11 @@
     }
 
     /**
-     * Instantiates a new empty data buffer of type short
-     * with a single underlying array of data starting at
-     * index 0.
+     * Instantiates a new empty data buffer of type short with a single
+     * underlying array of data starting at index 0.
      * 
-     * @param size the length (number of elements) to use 
+     * @param size
+     *            the length (number of elements) to use.
      */
     public DataBufferShort(int size) {
         super(TYPE_SHORT, size);
@@ -117,13 +127,13 @@
 
     @Override
     public void setElem(int bank, int i, int val) {
-        data[bank][offsets[bank] + i] = (short) val;
+        data[bank][offsets[bank] + i] = (short)val;
         notifyChanged();
     }
 
     @Override
     public void setElem(int i, int val) {
-        data[0][offset + i] = (short) val;
+        data[0][offset + i] = (short)val;
         notifyChanged();
     }
 
@@ -135,9 +145,9 @@
     /**
      * Gets the data of the specified internal data array.
      * 
-     * @param bank the index of the desired data array
-     * 
-     * @return the data
+     * @param bank
+     *            the index of the desired data array.
+     * @return the data.
      */
     public short[] getData(int bank) {
         notifyTaken();
@@ -152,7 +162,7 @@
     /**
      * Gets the bank data.
      * 
-     * @return the bank data
+     * @return the bank data.
      */
     public short[][] getBankData() {
         notifyTaken();
@@ -162,11 +172,10 @@
     /**
      * Gets the data of the first data array.
      * 
-     * @return the data
+     * @return the data.
      */
     public short[] getData() {
         notifyTaken();
         return data[0];
     }
 }
-
diff --git a/awt/java/awt/image/DataBufferUShort.java b/awt/java/awt/image/DataBufferUShort.java
index 7982678..58d9d83 100644
--- a/awt/java/awt/image/DataBufferUShort.java
+++ b/awt/java/awt/image/DataBufferUShort.java
@@ -18,34 +18,42 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Class DataBufferUShort is the subclass of DataBuffer
- * for the case where the underlying data is unsigned short.
+ * The Class DataBufferUShort is the subclass of DataBuffer for the case where
+ * the underlying data is unsigned short.
+ * 
+ * @since Android 1.0
  */
 public final class DataBufferUShort extends DataBuffer {
 
-    /** The data. */
+    /**
+     * The data.
+     */
     short data[][];
 
     /**
      * Instantiates a new data buffer of type unsigned short.
      * 
-     * @param dataArrays the data arrays to copy the data from
-     * @param size the length (number of elements) to use 
-     * from the data arrays
-     * @param offsets the starting indices for reading the 
-     * data from the internal data arrays
+     * @param dataArrays
+     *            the data arrays to copy the data from.
+     * @param size
+     *            the length (number of elements) to use from the data arrays.
+     * @param offsets
+     *            the starting indices for reading the data from the internal
+     *            data arrays.
      */
     public DataBufferUShort(short dataArrays[][], int size, int offsets[]) {
         super(TYPE_USHORT, size, dataArrays.length, offsets);
-        for(int i = 0; i < dataArrays.length; i++){
-            if(dataArrays[i].length < offsets[i] + size){
-                // awt.28d=Length of dataArray[{0}] is less than size + offset[{1}]
-                throw new IllegalArgumentException(Messages.getString("awt.28D", i, i));  //$NON-NLS-1$
+        for (int i = 0; i < dataArrays.length; i++) {
+            if (dataArrays[i].length < offsets[i] + size) {
+                // awt.28d=Length of dataArray[{0}] is less than size +
+                // offset[{1}]
+                throw new IllegalArgumentException(Messages.getString("awt.28D", i, i)); //$NON-NLS-1$
             }
         }
         data = dataArrays.clone();
@@ -54,9 +62,10 @@
     /**
      * Instantiates a new data buffer of type unsigned short.
      * 
-     * @param dataArrays the data arrays to copy the data from
-     * @param size the length (number of elements) to use 
-     * from the data arrays
+     * @param dataArrays
+     *            the data arrays to copy the data from.
+     * @param size
+     *            the length (number of elements) to use from the data arrays.
      */
     public DataBufferUShort(short dataArrays[][], int size) {
         super(TYPE_USHORT, size, dataArrays.length);
@@ -64,16 +73,19 @@
     }
 
     /**
-     * Instantiates a new data buffer of type unsigned short
-     * with a single underlying array of data.
+     * Instantiates a new data buffer of type unsigned short with a single
+     * underlying array of data.
      * 
-     * @param dataArray the data array to copy the data from
-     * @param size the length (number of elements) to use 
-     * @param offset the starting index to use when reading the data
+     * @param dataArray
+     *            the data array to copy the data from.
+     * @param size
+     *            the length (number of elements) to use.
+     * @param offset
+     *            the starting index to use when reading the data.
      */
     public DataBufferUShort(short dataArray[], int size, int offset) {
         super(TYPE_USHORT, size, 1, offset);
-        if(dataArray.length < size + offset){
+        if (dataArray.length < size + offset) {
             // awt.28E=Length of dataArray is less than size + offset
             throw new IllegalArgumentException(Messages.getString("awt.28E")); //$NON-NLS-1$
         }
@@ -82,12 +94,13 @@
     }
 
     /**
-     * Instantiates a new data buffer of type unsigned short
-     * with a single underlying array of data starting at
-     * index 0.
+     * Instantiates a new data buffer of type unsigned short with a single
+     * underlying array of data starting at index 0.
      * 
-     * @param dataArray the data array to copy the data from
-     * @param size the length (number of elements) to use 
+     * @param dataArray
+     *            the data array to copy the data from.
+     * @param size
+     *            the length (number of elements) to use.
      */
     public DataBufferUShort(short dataArray[], int size) {
         super(TYPE_USHORT, size);
@@ -96,28 +109,29 @@
     }
 
     /**
-     * Instantiates a new empty data buffer of type unsigned short
-     * with offsets equal to zero.
+     * Instantiates a new empty data buffer of type unsigned short with offsets
+     * equal to zero.
      * 
-     * @param size the length (number of elements) to use 
-     * from the data arrays
-     * @param numBanks the number of data arrays to create
+     * @param size
+     *            the length (number of elements) to use from the data arrays.
+     * @param numBanks
+     *            the number of data arrays to create.
      */
     public DataBufferUShort(int size, int numBanks) {
         super(TYPE_USHORT, size, numBanks);
         data = new short[numBanks][];
-        int i= 0;
-        while( i < numBanks) {
+        int i = 0;
+        while (i < numBanks) {
             data[i++] = new short[size];
         }
     }
 
     /**
-     * Instantiates a new empty data buffer of type unsigned short
-     * with a single underlying array of data starting at
-     * index 0.
+     * Instantiates a new empty data buffer of type unsigned short with a single
+     * underlying array of data starting at index 0.
      * 
-     * @param size the length (number of elements) to use 
+     * @param size
+     *            the length (number of elements) to use.
      */
     public DataBufferUShort(int size) {
         super(TYPE_USHORT, size);
@@ -145,9 +159,9 @@
     /**
      * Gets the data of the specified internal data array.
      * 
-     * @param bank the index of the desired data array
-     * 
-     * @return the data
+     * @param bank
+     *            the index of the desired data array.
+     * @return the data.
      */
     public short[] getData(int bank) {
         notifyTaken();
@@ -162,7 +176,7 @@
     /**
      * Gets the bank data.
      * 
-     * @return the bank data
+     * @return the bank data.
      */
     public short[][] getBankData() {
         notifyTaken();
@@ -172,11 +186,10 @@
     /**
      * Gets the data of the first data array.
      * 
-     * @return the data
+     * @return the data.
      */
     public short[] getData() {
         notifyTaken();
         return data[0];
     }
 }
-
diff --git a/awt/java/awt/image/DirectColorModel.java b/awt/java/awt/image/DirectColorModel.java
index 7a287c0..700eb7a 100644
--- a/awt/java/awt/image/DirectColorModel.java
+++ b/awt/java/awt/image/DirectColorModel.java
@@ -18,6 +18,7 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.awt.color.ColorSpace;
@@ -28,104 +29,141 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Class DirectColorModel represents a standard (packed) RGB
- * color model with additional support for converting between sRGB
- * color space and 8 or 16 bit linear RGB color space using lookup tables.
+ * The Class DirectColorModel represents a standard (packed) RGB color model
+ * with additional support for converting between sRGB color space and 8 or 16
+ * bit linear RGB color space using lookup tables.
+ * 
+ * @since Android 1.0
  */
 public class DirectColorModel extends PackedColorModel {
 
-    /** The from_ linea r_ rg b_ lut. */
+    /**
+     * The from_ linea r_ rg b_ lut.
+     */
     private byte from_LINEAR_RGB_LUT[]; // Lookup table for conversion from
-                                        // Linear RGB Color Space into sRGB
 
-    /** The to_ linea r_8 rg b_ lut. */
-    private byte to_LINEAR_8RGB_LUT[];  // Lookup table for conversion from
-                                        // sRGB Color Space into Linear RGB 
-                                        // 8 bit
+    // Linear RGB Color Space into sRGB
 
-    /** The to_ linea r_16 rg b_ lut. */
-    private short to_LINEAR_16RGB_LUT[];  // Lookup table for conversion from
-                                          // sRGB Color Space into Linear RGB 
-                                          // 16 bit 
+    /**
+     * The to_ linea r_8 rg b_ lut.
+     */
+    private byte to_LINEAR_8RGB_LUT[]; // Lookup table for conversion from
 
-    /** The alpha lut. */
-    private byte alphaLUT[];            // Lookup table for scale alpha value  
+    // sRGB Color Space into Linear RGB
+    // 8 bit
 
-    /** The color lu ts. */
-    private byte colorLUTs[][];         // Lookup tables for scale color values 
+    /**
+     * The to_ linea r_16 rg b_ lut.
+     */
+    private short to_LINEAR_16RGB_LUT[]; // Lookup table for conversion from
 
-    /** The is_s rgb. */
-    private boolean is_sRGB;            // ColorModel has sRGB ColorSpace
+    // sRGB Color Space into Linear RGB
+    // 16 bit
 
-    /** The is_ linea r_ rgb. */
-    private boolean is_LINEAR_RGB;      // Color Model has Linear RGB Color 
-                                        // Space
+    /**
+     * The alpha lut.
+     */
+    private byte alphaLUT[]; // Lookup table for scale alpha value
 
-    /** The LINEA r_ rg b_ length. */
-    private int LINEAR_RGB_Length;      // Linear RGB bit length
+    /**
+     * The color lu ts.
+     */
+    private byte colorLUTs[][]; // Lookup tables for scale color values
 
-    /** The factor. */
-    private float fFactor;              // Scale factor
+    /**
+     * The is_s rgb.
+     */
+    private boolean is_sRGB; // ColorModel has sRGB ColorSpace
+
+    /**
+     * The is_ linea r_ rgb.
+     */
+    private boolean is_LINEAR_RGB; // Color Model has Linear RGB Color
+
+    // Space
+
+    /**
+     * The LINEA r_ rg b_ length.
+     */
+    private int LINEAR_RGB_Length; // Linear RGB bit length
+
+    /**
+     * The factor.
+     */
+    private float fFactor; // Scale factor
 
     /**
      * Instantiates a new direct color model.
      * 
-     * @param space the color space
-     * @param bits the array of component masks
-     * @param rmask the bitmask corresponding to the red band
-     * @param gmask the bitmask corresponding to the green band
-     * @param bmask the bitmask corresponding to the blue band
-     * @param amask the bitmask corresponding to the alpha band
-     * @param isAlphaPremultiplied whether the alpha is premultiplied in this color model
-     * @param transferType the transfer type (primitive java type 
-     * to use for the components)
-     * 
-     * @throws IllegalArgumentException if the number of bits in the combined 
-     * bitmasks for the color bands is less than one or greater than 32
+     * @param space
+     *            the color space.
+     * @param bits
+     *            the array of component masks.
+     * @param rmask
+     *            the bitmask corresponding to the red band.
+     * @param gmask
+     *            the bitmask corresponding to the green band.
+     * @param bmask
+     *            the bitmask corresponding to the blue band.
+     * @param amask
+     *            the bitmask corresponding to the alpha band.
+     * @param isAlphaPremultiplied
+     *            whether the alpha is pre-multiplied in this color model.
+     * @param transferType
+     *            the transfer type (primitive java type to use for the
+     *            components).
+     * @throws IllegalArgumentException
+     *             if the number of bits in the combined bitmasks for the color
+     *             bands is less than one or greater than 32.
      */
-    public DirectColorModel(ColorSpace space, int bits, int rmask, int gmask,
-            int bmask, int amask, boolean isAlphaPremultiplied,
-            int transferType) {
+    public DirectColorModel(ColorSpace space, int bits, int rmask, int gmask, int bmask, int amask,
+            boolean isAlphaPremultiplied, int transferType) {
 
         super(space, bits, rmask, gmask, bmask, amask, isAlphaPremultiplied,
-                (amask == 0 ? Transparency.OPAQUE : Transparency.TRANSLUCENT),
-                transferType);
+                (amask == 0 ? Transparency.OPAQUE : Transparency.TRANSLUCENT), transferType);
 
         initLUTs();
     }
 
     /**
-     * Instantiates a new direct color model, determining the transfer 
-     * type from the bits array, the transparency from the alpha mask, 
-     * and the default color space {@link ColorSpace#CS_sRGB}.
+     * Instantiates a new direct color model, determining the transfer type from
+     * the bits array, the transparency from the alpha mask, and the default
+     * color space {@link ColorSpace#CS_sRGB}.
      * 
-     * @param bits the array of component masks
-     * @param rmask the bitmask corresponding to the red band
-     * @param gmask the bitmask corresponding to the green band
-     * @param bmask the bitmask corresponding to the blue band
-     * @param amask the bitmask corresponding to the alpha band
+     * @param bits
+     *            the array of component masks.
+     * @param rmask
+     *            the bitmask corresponding to the red band.
+     * @param gmask
+     *            the bitmask corresponding to the green band.
+     * @param bmask
+     *            the bitmask corresponding to the blue band.
+     * @param amask
+     *            the bitmask corresponding to the alpha band.
      */
-    public DirectColorModel(int bits, int rmask, int gmask, int bmask,
-            int amask) {
+    public DirectColorModel(int bits, int rmask, int gmask, int bmask, int amask) {
 
-        super(ColorSpace.getInstance(ColorSpace.CS_sRGB), bits, rmask, gmask,
-                bmask, amask, false,
-                (amask == 0 ? Transparency.OPAQUE : Transparency.TRANSLUCENT),
-                ColorModel.getTransferType(bits));
+        super(ColorSpace.getInstance(ColorSpace.CS_sRGB), bits, rmask, gmask, bmask, amask, false,
+                (amask == 0 ? Transparency.OPAQUE : Transparency.TRANSLUCENT), ColorModel
+                        .getTransferType(bits));
 
         initLUTs();
     }
 
     /**
-     * Instantiates a new direct color model with no alpha channel, 
-     * determining the transfer type from the bits array, 
-     * the default color space {@link ColorSpace#CS_sRGB}, 
-     * and with the transparency set to {@link Transparency#OPAQUE}.
+     * Instantiates a new direct color model with no alpha channel, determining
+     * the transfer type from the bits array, the default color space
+     * {@link ColorSpace#CS_sRGB}, and with the transparency set to
+     * {@link Transparency#OPAQUE}.
      * 
-     * @param bits the array of component masks
-     * @param rmask the bitmask corresponding to the red band
-     * @param gmask the bitmask corresponding to the green band
-     * @param bmask the bitmask corresponding to the blue band
+     * @param bits
+     *            the array of component masks.
+     * @param rmask
+     *            the bitmask corresponding to the red band.
+     * @param gmask
+     *            the bitmask corresponding to the green band.
+     * @param bmask
+     *            the bitmask corresponding to the blue band.
      */
     public DirectColorModel(int bits, int rmask, int gmask, int bmask) {
         this(bits, rmask, gmask, bmask, 0);
@@ -139,42 +177,42 @@
         }
 
         switch (transferType) {
-        case DataBuffer.TYPE_BYTE:
-            byte ba[];
-            if (obj == null) {
-                ba = new byte[1];
-            } else {
-                ba = (byte[]) obj;
-            }
-            ba[0] = (byte) pixel;
-            obj = ba;
-            break;
+            case DataBuffer.TYPE_BYTE:
+                byte ba[];
+                if (obj == null) {
+                    ba = new byte[1];
+                } else {
+                    ba = (byte[])obj;
+                }
+                ba[0] = (byte)pixel;
+                obj = ba;
+                break;
 
-        case DataBuffer.TYPE_USHORT:
-            short sa[];
-            if (obj == null) {
-                sa = new short[1];
-            } else {
-                sa = (short[]) obj;
-            }
-            sa[0] = (short) pixel;
-            obj = sa;
-            break;
+            case DataBuffer.TYPE_USHORT:
+                short sa[];
+                if (obj == null) {
+                    sa = new short[1];
+                } else {
+                    sa = (short[])obj;
+                }
+                sa[0] = (short)pixel;
+                obj = sa;
+                break;
 
-        case DataBuffer.TYPE_INT:
-            int ia[];
-            if (obj == null) {
-                ia = new int[1];
-            } else {
-                ia = (int[]) obj;
-            }
-            ia[0] = pixel;
-            obj = ia;
-            break;
+            case DataBuffer.TYPE_INT:
+                int ia[];
+                if (obj == null) {
+                    ia = new int[1];
+                } else {
+                    ia = (int[])obj;
+                }
+                ia[0] = pixel;
+                obj = ia;
+                break;
 
-        default:
-            // awt.214=This Color Model doesn't support this transferType
-            throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
+            default:
+                // awt.214=This Color Model doesn't support this transferType
+                throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
         }
 
         return obj;
@@ -187,7 +225,7 @@
             if (pixel == null) {
                 ia = new int[1];
             } else {
-                ia = (int[]) pixel;
+                ia = (int[])pixel;
             }
             ia[0] = rgb;
             return ia;
@@ -246,67 +284,66 @@
         int pxl = 0;
         if (hasAlpha) {
             float normAlpha = normComp[numColorComponents];
-            alpha = (int) (normAlpha * maxValues[numColorComponents] + 0.5f);
+            alpha = (int)(normAlpha * maxValues[numColorComponents] + 0.5f);
             if (isAlphaPremultiplied) {
-                red = (int) (normComp[0] * normAlpha * maxValues[0] + 0.5f);
-                green = (int) (normComp[1] * normAlpha * maxValues[1] + 0.5f);
-                blue = (int) (normComp[2] * normAlpha * maxValues[2] + 0.5f);
+                red = (int)(normComp[0] * normAlpha * maxValues[0] + 0.5f);
+                green = (int)(normComp[1] * normAlpha * maxValues[1] + 0.5f);
+                blue = (int)(normComp[2] * normAlpha * maxValues[2] + 0.5f);
             } else {
-                red = (int) (normComp[0] * maxValues[0] + 0.5f);
-                green = (int) (normComp[1] * maxValues[1] + 0.5f);
-                blue = (int) (normComp[2] * maxValues[2] + 0.5f);
+                red = (int)(normComp[0] * maxValues[0] + 0.5f);
+                green = (int)(normComp[1] * maxValues[1] + 0.5f);
+                blue = (int)(normComp[2] * maxValues[2] + 0.5f);
             }
             pxl = (alpha << offsets[3]) & componentMasks[3];
         } else {
-            red = (int) (normComp[0] * maxValues[0] + 0.5f);
-            green = (int) (normComp[1] * maxValues[1] + 0.5f);
-            blue = (int) (normComp[2] * maxValues[2] + 0.5f);
+            red = (int)(normComp[0] * maxValues[0] + 0.5f);
+            green = (int)(normComp[1] * maxValues[1] + 0.5f);
+            blue = (int)(normComp[2] * maxValues[2] + 0.5f);
         }
 
-        pxl |= ((red << offsets[0]) & componentMasks[0]) |
-               ((green << offsets[1]) & componentMasks[1]) |
-               ((blue << offsets[2]) & componentMasks[2]);
+        pxl |= ((red << offsets[0]) & componentMasks[0])
+                | ((green << offsets[1]) & componentMasks[1])
+                | ((blue << offsets[2]) & componentMasks[2]);
 
         switch (transferType) {
-        case DataBuffer.TYPE_BYTE:
-            byte ba[];
-            if (pixel == null) {
-                ba = new byte[1];
-            } else {
-                ba = (byte[]) pixel;
-            }
-            ba[0] = (byte) pxl;
-            return ba;
+            case DataBuffer.TYPE_BYTE:
+                byte ba[];
+                if (pixel == null) {
+                    ba = new byte[1];
+                } else {
+                    ba = (byte[])pixel;
+                }
+                ba[0] = (byte)pxl;
+                return ba;
 
-        case DataBuffer.TYPE_USHORT:
-            short sa[];
-            if (pixel == null) {
-                sa = new short[1];
-            } else {
-                sa = (short[]) pixel;
-            }
-            sa[0] = (short) pxl;
-            return sa;
+            case DataBuffer.TYPE_USHORT:
+                short sa[];
+                if (pixel == null) {
+                    sa = new short[1];
+                } else {
+                    sa = (short[])pixel;
+                }
+                sa[0] = (short)pxl;
+                return sa;
 
-        case DataBuffer.TYPE_INT:
-            int ia[];
-            if (pixel == null) {
-                ia = new int[1];
-            } else {
-                ia = (int[]) pixel;
-            }
-            ia[0] = pxl;
-            return ia;
+            case DataBuffer.TYPE_INT:
+                int ia[];
+                if (pixel == null) {
+                    ia = new int[1];
+                } else {
+                    ia = (int[])pixel;
+                }
+                ia[0] = pxl;
+                return ia;
 
-        default:
-            // awt.214=This Color Model doesn't support this transferType
-            throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
+            default:
+                // awt.214=This Color Model doesn't support this transferType
+                throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
         }
     }
 
     @Override
-    public final ColorModel coerceData(WritableRaster raster,
-            boolean isAlphaPremultiplied) {
+    public final ColorModel coerceData(WritableRaster raster, boolean isAlphaPremultiplied) {
 
         if (!hasAlpha || this.isAlphaPremultiplied == isAlphaPremultiplied) {
             return this;
@@ -324,86 +361,82 @@
 
         if (isAlphaPremultiplied) {
             switch (transferType) {
-            case DataBuffer.TYPE_BYTE:
-            case DataBuffer.TYPE_USHORT:
-            case DataBuffer.TYPE_INT:
-                for (int i = 0; i < h; i++, minY++) {
-                    for (int j = 0, x = minX; j < w; j++, x++) {
-                        components = raster.getPixel(x, minY, components);
-                        if (components[numColorComponents] == 0) {
-                            raster.setPixel(x, minY, transparentComponents);
-                        } else {
-                            float alpha =
-                                components[numColorComponents] /
-                                    alphaFactor;
-                            for (int n = 0; n < numColorComponents; n++) {
-                                components[n] =
-                                    (int) (alpha * components[n] + 0.5f);
+                case DataBuffer.TYPE_BYTE:
+                case DataBuffer.TYPE_USHORT:
+                case DataBuffer.TYPE_INT:
+                    for (int i = 0; i < h; i++, minY++) {
+                        for (int j = 0, x = minX; j < w; j++, x++) {
+                            components = raster.getPixel(x, minY, components);
+                            if (components[numColorComponents] == 0) {
+                                raster.setPixel(x, minY, transparentComponents);
+                            } else {
+                                float alpha = components[numColorComponents] / alphaFactor;
+                                for (int n = 0; n < numColorComponents; n++) {
+                                    components[n] = (int)(alpha * components[n] + 0.5f);
+                                }
+                                raster.setPixel(x, minY, components);
                             }
-                            raster.setPixel(x, minY, components);
                         }
+
                     }
+                    break;
 
-                }
-                break;
-
-            default:
-                // awt.214=This Color Model doesn't support this transferType
-                throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
+                default:
+                    // awt.214=This Color Model doesn't support this
+                    // transferType
+                    throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
             }
         } else {
             switch (transferType) {
-            case DataBuffer.TYPE_BYTE:
-            case DataBuffer.TYPE_USHORT:
-            case DataBuffer.TYPE_INT:
-                for (int i = 0; i < h; i++, minY++) {
-                    for (int j = 0, x = minX; j < w; j++, x++) {
-                        components = raster.getPixel(x, minY, components);
-                        if (components[numColorComponents] != 0) {
-                            float alpha =
-                                alphaFactor / components[numColorComponents];
-                            for (int n = 0; n < numColorComponents; n++) {
-                                components[n] =
-                                    (int) (alpha * components[n] + 0.5f);
+                case DataBuffer.TYPE_BYTE:
+                case DataBuffer.TYPE_USHORT:
+                case DataBuffer.TYPE_INT:
+                    for (int i = 0; i < h; i++, minY++) {
+                        for (int j = 0, x = minX; j < w; j++, x++) {
+                            components = raster.getPixel(x, minY, components);
+                            if (components[numColorComponents] != 0) {
+                                float alpha = alphaFactor / components[numColorComponents];
+                                for (int n = 0; n < numColorComponents; n++) {
+                                    components[n] = (int)(alpha * components[n] + 0.5f);
+                                }
+                                raster.setPixel(x, minY, components);
                             }
-                            raster.setPixel(x, minY, components);
                         }
+
                     }
+                    break;
 
-                }
-                break;
-
-            default:
-                // awt.214=This Color Model doesn't support this transferType
-                throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
+                default:
+                    // awt.214=This Color Model doesn't support this
+                    // transferType
+                    throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
             }
 
         }
 
-        return new DirectColorModel(cs, pixel_bits, componentMasks[0],
-                componentMasks[1], componentMasks[2], componentMasks[3],
-                isAlphaPremultiplied, transferType);
+        return new DirectColorModel(cs, pixel_bits, componentMasks[0], componentMasks[1],
+                componentMasks[2], componentMasks[3], isAlphaPremultiplied, transferType);
     }
 
     @Override
     public String toString() {
-        // The output format based on 1.5 release behaviour. 
+        // The output format based on 1.5 release behaviour.
         // It could be reveled such way:
-        // BufferedImage bi = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
+        // BufferedImage bi = new BufferedImage(1, 1,
+        // BufferedImage.TYPE_INT_ARGB);
         // ColorModel cm = bi.getColorModel();
         // System.out.println(cm.toString());
         String str = "DirectColorModel:" + " rmask = " + //$NON-NLS-1$ //$NON-NLS-2$
-               Integer.toHexString(componentMasks[0]) + " gmask = " + //$NON-NLS-1$
-               Integer.toHexString(componentMasks[1]) + " bmask = " + //$NON-NLS-1$
-               Integer.toHexString(componentMasks[2]) + " amask = " + //$NON-NLS-1$
-               (!hasAlpha ? "0" : Integer.toHexString(componentMasks[3])); //$NON-NLS-1$
+                Integer.toHexString(componentMasks[0]) + " gmask = " + //$NON-NLS-1$
+                Integer.toHexString(componentMasks[1]) + " bmask = " + //$NON-NLS-1$
+                Integer.toHexString(componentMasks[2]) + " amask = " + //$NON-NLS-1$
+                (!hasAlpha ? "0" : Integer.toHexString(componentMasks[3])); //$NON-NLS-1$
 
         return str;
     }
 
     @Override
-    public final int[] getComponents(Object pixel, int components[],
-            int offset) {
+    public final int[] getComponents(Object pixel, int components[], int offset) {
 
         if (components == null) {
             components = new int[numComponents + offset];
@@ -412,25 +445,26 @@
         int intPixel = 0;
 
         switch (transferType) {
-        case DataBuffer.TYPE_BYTE:
-            byte ba[] = (byte[]) pixel;
-            intPixel = ba[0] & 0xff;
-            break;
+            case DataBuffer.TYPE_BYTE:
+                byte ba[] = (byte[])pixel;
+                intPixel = ba[0] & 0xff;
+                break;
 
-        case DataBuffer.TYPE_USHORT:
-            short sa[] = (short[]) pixel;
-            intPixel = sa[0] & 0xffff;
-            break;
+            case DataBuffer.TYPE_USHORT:
+                short sa[] = (short[])pixel;
+                intPixel = sa[0] & 0xffff;
+                break;
 
-        case DataBuffer.TYPE_INT:
-            int ia[] = (int[]) pixel;
-            intPixel = ia[0];
-            break;
+            case DataBuffer.TYPE_INT:
+                int ia[] = (int[])pixel;
+                intPixel = ia[0];
+                break;
 
-        default:
-            // awt.22D=This transferType ( {0} ) is not supported by this color model
-            throw new UnsupportedOperationException(Messages.getString("awt.22D", //$NON-NLS-1$
-                   transferType));
+            default:
+                // awt.22D=This transferType ( {0} ) is not supported by this
+                // color model
+                throw new UnsupportedOperationException(Messages.getString("awt.22D", //$NON-NLS-1$
+                        transferType));
         }
 
         return getComponents(intPixel, components, offset);
@@ -440,24 +474,24 @@
     public int getRed(Object inData) {
         int pixel = 0;
         switch (transferType) {
-        case DataBuffer.TYPE_BYTE:
-            byte ba[] = (byte[]) inData;
-            pixel = ba[0] & 0xff;
-            break;
+            case DataBuffer.TYPE_BYTE:
+                byte ba[] = (byte[])inData;
+                pixel = ba[0] & 0xff;
+                break;
 
-        case DataBuffer.TYPE_USHORT:
-            short sa[] = (short[]) inData;
-            pixel = sa[0] & 0xffff;
-            break;
+            case DataBuffer.TYPE_USHORT:
+                short sa[] = (short[])inData;
+                pixel = sa[0] & 0xffff;
+                break;
 
-        case DataBuffer.TYPE_INT:
-            int ia[] = (int[]) inData;
-            pixel = ia[0];
-            break;
+            case DataBuffer.TYPE_INT:
+                int ia[] = (int[])inData;
+                pixel = ia[0];
+                break;
 
-        default:
-            // awt.214=This Color Model doesn't support this transferType
-            throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
+            default:
+                // awt.214=This Color Model doesn't support this transferType
+                throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
         }
         return getRed(pixel);
     }
@@ -466,24 +500,24 @@
     public int getRGB(Object inData) {
         int pixel = 0;
         switch (transferType) {
-        case DataBuffer.TYPE_BYTE:
-            byte ba[] = (byte[]) inData;
-            pixel = ba[0] & 0xff;
-            break;
+            case DataBuffer.TYPE_BYTE:
+                byte ba[] = (byte[])inData;
+                pixel = ba[0] & 0xff;
+                break;
 
-        case DataBuffer.TYPE_USHORT:
-            short sa[] = (short[]) inData;
-            pixel = sa[0] & 0xffff;
-            break;
+            case DataBuffer.TYPE_USHORT:
+                short sa[] = (short[])inData;
+                pixel = sa[0] & 0xffff;
+                break;
 
-        case DataBuffer.TYPE_INT:
-            int ia[] = (int[]) inData;
-            pixel = ia[0];
-            break;
+            case DataBuffer.TYPE_INT:
+                int ia[] = (int[])inData;
+                pixel = ia[0];
+                break;
 
-        default:
-            // awt.214=This Color Model doesn't support this transferType
-            throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
+            default:
+                // awt.214=This Color Model doesn't support this transferType
+                throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
         }
         return getRGB(pixel);
     }
@@ -492,24 +526,24 @@
     public int getGreen(Object inData) {
         int pixel = 0;
         switch (transferType) {
-        case DataBuffer.TYPE_BYTE:
-            byte ba[] = (byte[]) inData;
-            pixel = ba[0] & 0xff;
-            break;
+            case DataBuffer.TYPE_BYTE:
+                byte ba[] = (byte[])inData;
+                pixel = ba[0] & 0xff;
+                break;
 
-        case DataBuffer.TYPE_USHORT:
-            short sa[] = (short[]) inData;
-            pixel = sa[0] & 0xffff;
-            break;
+            case DataBuffer.TYPE_USHORT:
+                short sa[] = (short[])inData;
+                pixel = sa[0] & 0xffff;
+                break;
 
-        case DataBuffer.TYPE_INT:
-            int ia[] = (int[]) inData;
-            pixel = ia[0];
-            break;
+            case DataBuffer.TYPE_INT:
+                int ia[] = (int[])inData;
+                pixel = ia[0];
+                break;
 
-        default:
-            // awt.214=This Color Model doesn't support this transferType
-            throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
+            default:
+                // awt.214=This Color Model doesn't support this transferType
+                throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
         }
         return getGreen(pixel);
     }
@@ -518,24 +552,24 @@
     public int getBlue(Object inData) {
         int pixel = 0;
         switch (transferType) {
-        case DataBuffer.TYPE_BYTE:
-            byte ba[] = (byte[]) inData;
-            pixel = ba[0] & 0xff;
-            break;
+            case DataBuffer.TYPE_BYTE:
+                byte ba[] = (byte[])inData;
+                pixel = ba[0] & 0xff;
+                break;
 
-        case DataBuffer.TYPE_USHORT:
-            short sa[] = (short[]) inData;
-            pixel = sa[0] & 0xffff;
-            break;
+            case DataBuffer.TYPE_USHORT:
+                short sa[] = (short[])inData;
+                pixel = sa[0] & 0xffff;
+                break;
 
-        case DataBuffer.TYPE_INT:
-            int ia[] = (int[]) inData;
-            pixel = ia[0];
-            break;
+            case DataBuffer.TYPE_INT:
+                int ia[] = (int[])inData;
+                pixel = ia[0];
+                break;
 
-        default:
-            // awt.214=This Color Model doesn't support this transferType
-            throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
+            default:
+                // awt.214=This Color Model doesn't support this transferType
+                throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
         }
         return getBlue(pixel);
     }
@@ -544,24 +578,24 @@
     public int getAlpha(Object inData) {
         int pixel = 0;
         switch (transferType) {
-        case DataBuffer.TYPE_BYTE:
-            byte ba[] = (byte[]) inData;
-            pixel = ba[0] & 0xff;
-            break;
+            case DataBuffer.TYPE_BYTE:
+                byte ba[] = (byte[])inData;
+                pixel = ba[0] & 0xff;
+                break;
 
-        case DataBuffer.TYPE_USHORT:
-            short sa[] = (short[]) inData;
-            pixel = sa[0] & 0xffff;
-            break;
+            case DataBuffer.TYPE_USHORT:
+                short sa[] = (short[])inData;
+                pixel = sa[0] & 0xffff;
+                break;
 
-        case DataBuffer.TYPE_INT:
-            int ia[] = (int[]) inData;
-            pixel = ia[0];
-            break;
+            case DataBuffer.TYPE_INT:
+                int ia[] = (int[])inData;
+                pixel = ia[0];
+                break;
 
-        default:
-            // awt.214=This Color Model doesn't support this transferType
-            throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
+            default:
+                // awt.214=This Color Model doesn't support this transferType
+                throw new UnsupportedOperationException(Messages.getString("awt.214")); //$NON-NLS-1$
         }
         return getAlpha(pixel);
     }
@@ -576,14 +610,11 @@
         int bandMasks[] = componentMasks.clone();
 
         if (pixel_bits > 16) {
-            return Raster.createPackedRaster(DataBuffer.TYPE_INT, w, h,
-                    bandMasks, null);
+            return Raster.createPackedRaster(DataBuffer.TYPE_INT, w, h, bandMasks, null);
         } else if (pixel_bits > 8) {
-            return Raster.createPackedRaster(DataBuffer.TYPE_USHORT, w, h,
-                    bandMasks, null);
+            return Raster.createPackedRaster(DataBuffer.TYPE_USHORT, w, h, bandMasks, null);
         } else {
-            return Raster.createPackedRaster(DataBuffer.TYPE_BYTE, w, h,
-                    bandMasks, null);
+            return Raster.createPackedRaster(DataBuffer.TYPE_BYTE, w, h, bandMasks, null);
         }
     }
 
@@ -594,7 +625,7 @@
             return false;
         }
 
-        SinglePixelPackedSampleModel sppsm = (SinglePixelPackedSampleModel) sm;
+        SinglePixelPackedSampleModel sppsm = (SinglePixelPackedSampleModel)sm;
 
         if (sppsm.getNumBands() != numComponents) {
             return false;
@@ -640,8 +671,8 @@
 
     @Override
     public final int getRGB(int pixel) {
-        return (getAlpha(pixel) << 24) | (getRed(pixel) << 16) |
-               (getGreen(pixel) << 8) | getBlue(pixel);
+        return (getAlpha(pixel) << 24) | (getRed(pixel) << 16) | (getGreen(pixel) << 8)
+                | getBlue(pixel);
     }
 
     @Override
@@ -681,7 +712,7 @@
     /**
      * Gets the red mask.
      * 
-     * @return the red mask
+     * @return the red mask.
      */
     public final int getRedMask() {
         return componentMasks[0];
@@ -690,7 +721,7 @@
     /**
      * Gets the green mask.
      * 
-     * @return the green mask
+     * @return the green mask.
      */
     public final int getGreenMask() {
         return componentMasks[1];
@@ -699,7 +730,7 @@
     /**
      * Gets the blue mask.
      * 
-     * @return the blue mask
+     * @return the blue mask.
      */
     public final int getBlueMask() {
         return componentMasks[2];
@@ -708,7 +739,7 @@
     /**
      * Gets the alpha mask.
      * 
-     * @return the alpha mask
+     * @return the alpha mask.
      */
     public final int getAlphaMask() {
         if (hasAlpha) {
@@ -727,16 +758,12 @@
         if (is_LINEAR_RGB) {
             if (maxBitLength > 8) {
                 LINEAR_RGB_Length = 16;
-                from_LINEAR_RGB_LUT =
-                    LUTColorConverter.getFrom16lRGBtosRGB_LUT();
-                to_LINEAR_16RGB_LUT =
-                    LUTColorConverter.getFromsRGBto16lRGB_LUT();
+                from_LINEAR_RGB_LUT = LUTColorConverter.getFrom16lRGBtosRGB_LUT();
+                to_LINEAR_16RGB_LUT = LUTColorConverter.getFromsRGBto16lRGB_LUT();
             } else {
                 LINEAR_RGB_Length = 8;
-                from_LINEAR_RGB_LUT =
-                    LUTColorConverter.getFrom8lRGBtosRGB_LUT();
-                to_LINEAR_8RGB_LUT =
-                    LUTColorConverter.getFromsRGBto8lRGB_LUT();
+                from_LINEAR_RGB_LUT = LUTColorConverter.getFrom8lRGBtosRGB_LUT();
+                to_LINEAR_8RGB_LUT = LUTColorConverter.getFromsRGBto8lRGB_LUT();
             }
             fFactor = ((1 << LINEAR_RGB_Length) - 1);
         } else {
@@ -746,7 +773,7 @@
         if (hasAlpha && bits[3] != 8) {
             alphaLUT = new byte[maxValues[3] + 1];
             for (int i = 0; i <= maxValues[3]; i++) {
-                alphaLUT[i] = (byte) (scales[3] * i + 0.5f);
+                alphaLUT[i] = (byte)(scales[3] * i + 0.5f);
             }
 
         }
@@ -765,7 +792,7 @@
                         }
                         colorLUTs[i] = new byte[maxValues[i] + 1];
                         for (int j = 0; j <= maxValues[i]; j++) {
-                            colorLUTs[i][j] = (byte) (scales[i] * j + 0.5f);
+                            colorLUTs[i][j] = (byte)(scales[i] * j + 0.5f);
                         }
                     }
                 }
@@ -784,9 +811,9 @@
                         for (int j = 0; j <= maxValues[0]; j++) {
                             int idx;
                             if (LINEAR_RGB_Length == 8) {
-                                idx = (int) (scales[i] * j + 0.5f);
+                                idx = (int)(scales[i] * j + 0.5f);
                             } else {
-                                idx = (int) (scales[i] * j * 257.0f + 0.5f);
+                                idx = (int)(scales[i] * j * 257.0f + 0.5f);
                             }
                             colorLUTs[i][j] = from_LINEAR_RGB_LUT[idx];
                         }
@@ -798,20 +825,20 @@
     }
 
     /**
-     * This method return RGB component value if Color Model has
-     * sRGB ColorSpace.
+     * This method return RGB component value if Color Model has sRGB
+     * ColorSpace.
      * 
-     * @param pixel - INT representation of pixel
-     * @param idx - index of pixel component
-     * 
-     * @return - value of the pixel component scaled fro 0 to 255
+     * @param pixel
+     *            the integer representation of the pixel.
+     * @param idx
+     *            the index of the pixel component.
+     * @return the value of the pixel component scaled from 0 to 255.
      */
     private int getComponentFrom_sRGB(int pixel, int idx) {
         int comp = (pixel & componentMasks[idx]) >> offsets[idx];
         if (isAlphaPremultiplied) {
             int alpha = (pixel & componentMasks[3]) >>> offsets[3];
-            comp = alpha == 0 ? 0 : (int) (scales[idx] * comp * 255.0f /
-                    (scales[3] * alpha) + 0.5f);
+            comp = alpha == 0 ? 0 : (int)(scales[idx] * comp * 255.0f / (scales[3] * alpha) + 0.5f);
         } else if (bits[idx] != 8) {
             comp = colorLUTs[idx][comp] & 0xff;
         }
@@ -819,21 +846,21 @@
     }
 
     /**
-     * This method return RGB component value if Color Model has
-     * Linear RGB ColorSpace.
+     * This method return RGB component value if Color Model has Linear RGB
+     * ColorSpace.
      * 
-     * @param pixel - INT representation of pixel
-     * @param idx - index of pixel component
-     * 
-     * @return - value of the pixel component scaled fro 0 to 255
+     * @param pixel
+     *            the integer representation of the pixel.
+     * @param idx
+     *            the index of the pixel component.
+     * @return the value of the pixel component scaled from 0 to 255.
      */
     private int getComponentFrom_LINEAR_RGB(int pixel, int idx) {
         int comp = (pixel & componentMasks[idx]) >> offsets[idx];
         if (isAlphaPremultiplied) {
             float factor = ((1 << LINEAR_RGB_Length) - 1);
             int alpha = (pixel & componentMasks[3]) >> offsets[3];
-            comp = alpha == 0 ? 0 : (int) (scales[idx] * comp * factor /
-                    (scales[3] * alpha) + 0.5f);
+            comp = alpha == 0 ? 0 : (int)(scales[idx] * comp * factor / (scales[3] * alpha) + 0.5f);
         } else if (bits[idx] != LINEAR_RGB_Length) {
             comp = colorLUTs[idx][comp] & 0xff;
         } else {
@@ -843,20 +870,20 @@
     }
 
     /**
-     * This method return RGB component value if Color Model has
-     * arbitrary RGB ColorSapce.
+     * This method return RGB component value if Color Model has arbitrary RGB
+     * ColorSapce.
      * 
-     * @param pixel - INT representation of pixel
-     * @param idx - index of pixel component
-     * 
-     * @return - value of the pixel component scaled fro 0 to 255
+     * @param pixel
+     *            the integer representation of the pixel.
+     * @param idx
+     *            the index of the pixel component.
+     * @return the value of the pixel component scaled from 0 to 255.
      */
     private int getComponentFrom_RGB(int pixel, int idx) {
         int components[] = getComponents(pixel, null, 0);
         float[] normComponents = getNormalizedComponents(components, 0, null, 0);
         float[] sRGBcomponents = cs.toRGB(normComponents);
-        return (int) (sRGBcomponents[idx] * 255.0f + 0.5f);
+        return (int)(sRGBcomponents[idx] * 255.0f + 0.5f);
     }
 
 }
-
diff --git a/awt/java/awt/image/FilteredImageSource.java b/awt/java/awt/image/FilteredImageSource.java
index 6a41fa7..ed8558d 100644
--- a/awt/java/awt/image/FilteredImageSource.java
+++ b/awt/java/awt/image/FilteredImageSource.java
@@ -18,32 +18,42 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.util.Hashtable;
 
-
 /**
- * The FilteredImageSource class is used for producing image data for a new 
- * filtered version of the original image using the specified filter object. 
+ * The FilteredImageSource class is used for producing image data for a new
+ * filtered version of the original image using the specified filter object.
+ * 
+ * @since Android 1.0
  */
 public class FilteredImageSource implements ImageProducer {
 
-    /** The source. */
+    /**
+     * The source.
+     */
     private final ImageProducer source;
-    
-    /** The filter. */
+
+    /**
+     * The filter.
+     */
     private final ImageFilter filter;
 
-    /** The cons table. */
+    /**
+     * The cons table.
+     */
     private final Hashtable<ImageConsumer, ImageConsumer> consTable = new Hashtable<ImageConsumer, ImageConsumer>();
 
     /**
-     * Instantiates a new FilteredImageSource object with 
-     * the specified ImageProducer and the ImageFilter objects.
+     * Instantiates a new FilteredImageSource object with the specified
+     * ImageProducer and the ImageFilter objects.
      * 
-     * @param orig the specified ImageProducer.
-     * @param imgf the specified ImageFilter.
+     * @param orig
+     *            the specified ImageProducer.
+     * @param imgf
+     *            the specified ImageFilter.
      */
     public FilteredImageSource(ImageProducer orig, ImageFilter imgf) {
         source = orig;
@@ -51,7 +61,7 @@
     }
 
     public synchronized boolean isConsumer(ImageConsumer ic) {
-        if(ic != null) {
+        if (ic != null) {
             return consTable.containsKey(ic);
         }
         return false;
@@ -64,14 +74,14 @@
     }
 
     public void requestTopDownLeftRightResend(ImageConsumer ic) {
-        if(ic != null && isConsumer(ic)){
-            ImageFilter fic = (ImageFilter) consTable.get(ic);
+        if (ic != null && isConsumer(ic)) {
+            ImageFilter fic = (ImageFilter)consTable.get(ic);
             fic.resendTopDownLeftRight(source);
         }
     }
 
     public synchronized void removeConsumer(ImageConsumer ic) {
-        if(ic != null && isConsumer(ic)){
+        if (ic != null && isConsumer(ic)) {
             ImageConsumer fic = consTable.get(ic);
             source.removeConsumer(fic);
             consTable.remove(ic);
@@ -79,7 +89,7 @@
     }
 
     public synchronized void addConsumer(ImageConsumer ic) {
-        if(ic != null && !isConsumer(ic)){
+        if (ic != null && !isConsumer(ic)) {
             ImageConsumer fic = filter.getFilterInstance(ic);
             source.addConsumer(fic);
             consTable.put(ic, fic);
diff --git a/awt/java/awt/image/ImageConsumer.java b/awt/java/awt/image/ImageConsumer.java
index 2eba290..caf87d1 100644
--- a/awt/java/awt/image/ImageConsumer.java
+++ b/awt/java/awt/image/ImageConsumer.java
@@ -18,148 +18,168 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.util.Hashtable;
 
 /**
- * The ImageConsumer interface provides the data about the image
- * and about how its data is delivered.  A ImageProducer provides 
- * all of the information about the image using 
- * the methods defined in this interface.
+ * The ImageConsumer interface provides the data about the image and about how
+ * its data is delivered. A ImageProducer provides all of the information about
+ * the image using the methods defined in this interface.
+ * 
+ * @since Android 1.0
  */
 public interface ImageConsumer {
 
-    /** 
-     * The Constant RANDOMPIXELORDER indicates that the pixels are 
-     * delivered in a random order.
+    /**
+     * The Constant RANDOMPIXELORDER indicates that the pixels are delivered in
+     * a random order.
      */
     public static final int RANDOMPIXELORDER = 1;
 
-    /** 
-     * The Constant TOPDOWNLEFTRIGHT indicates that the pixels are 
-     * delivered in top-down, left-to-right order. 
+    /**
+     * The Constant TOPDOWNLEFTRIGHT indicates that the pixels are delivered in
+     * top-down, left-to-right order.
      */
     public static final int TOPDOWNLEFTRIGHT = 2;
 
-    /** 
-     * The Constant COMPLETESCANLINES indicates that the pixels are
-     * delivered in complete scanline. 
+    /**
+     * The Constant COMPLETESCANLINES indicates that the pixels are delivered in
+     * complete scanline.
      */
     public static final int COMPLETESCANLINES = 4;
 
-    /** 
-     * The Constant SINGLEPASS indicates that pixels are delivered 
-     * in a single pass. 
+    /**
+     * The Constant SINGLEPASS indicates that pixels are delivered in a single
+     * pass.
      */
     public static final int SINGLEPASS = 8;
 
-    /** 
-     * The Constant SINGLEFRAME indicates that image consists of
-     * single frame.
+    /**
+     * The Constant SINGLEFRAME indicates that image consists of single frame.
      */
     public static final int SINGLEFRAME = 16;
 
-    /** 
+    /**
      * The Constant IMAGEERROR indicates an image error during image producing.
      */
     public static final int IMAGEERROR = 1;
 
-    /** 
-     * The Constant SINGLEFRAMEDONE indicates that only one of the 
-     * image's frames is completed. 
+    /**
+     * The Constant SINGLEFRAMEDONE indicates that only one of the image's
+     * frames is completed.
      */
     public static final int SINGLEFRAMEDONE = 2;
 
-    /** 
-     * The Constant STATICIMAGEDONE indicates that the image is completed. 
+    /**
+     * The Constant STATICIMAGEDONE indicates that the image is completed.
      */
     public static final int STATICIMAGEDONE = 3;
 
-    /** 
-     * The Constant IMAGEABORTED indicates that the image producing 
-     * process is aborted. 
+    /**
+     * The Constant IMAGEABORTED indicates that the image producing process is
+     * aborted.
      */
     public static final int IMAGEABORTED = 4;
 
     /**
      * Sets the properties for the image associated with this ImageConsumer.
      * 
-     * @param props the properties for the image associated with 
-     * this ImageConsumer.
+     * @param props
+     *            the properties for the image associated with this
+     *            ImageConsumer.
      */
     public void setProperties(Hashtable<?, ?> props);
 
     /**
      * Sets the ColorModel object.
      * 
-     * @param model the new ColorModel.
+     * @param model
+     *            the new ColorModel.
      */
     public void setColorModel(ColorModel model);
 
     /**
      * Sets the pixels for the specified rectangular area of the image.
      * 
-     * @param x the X coordinate of rectangular area.
-     * @param y the Y coordinate of rectangular area.
-     * @param w the width of rectangular area.
-     * @param h the height of rectangular area.
-     * @param model the specified ColorModel to be used for pixels
-     * converting.  
-     * @param pixels the array of pixels.
-     * @param off the offset of pixels array.
-     * @param scansize the distance from the one row of pixels
-     * to the next row in the specified array.
+     * @param x
+     *            the X coordinate of rectangular area.
+     * @param y
+     *            the Y coordinate of rectangular area.
+     * @param w
+     *            the width of rectangular area.
+     * @param h
+     *            the height of rectangular area.
+     * @param model
+     *            the specified ColorModel to be used for pixels converting.
+     * @param pixels
+     *            the array of pixels.
+     * @param off
+     *            the offset of pixels array.
+     * @param scansize
+     *            the distance from the one row of pixels to the next row in the
+     *            specified array.
      */
-    public void setPixels(int x, int y, int w, int h, ColorModel model,
-            int[] pixels, int off, int scansize);
+    public void setPixels(int x, int y, int w, int h, ColorModel model, int[] pixels, int off,
+            int scansize);
 
     /**
      * Sets the pixels for the specified rectangular area of the image.
      * 
-     * @param x the X coordinate of rectangular area.
-     * @param y the Y coordinate of rectangular area.
-     * @param w the width of rectangular area.
-     * @param h the height of rectangular area.
-     * @param model the specified ColorModel to be used for pixels
-     * converting.  
-     * @param pixels the array of pixels.
-     * @param off the offset of pixels array.
-     * @param scansize the distance from the one row of pixels
-     * to the next row in the specified array.
+     * @param x
+     *            the X coordinate of rectangular area.
+     * @param y
+     *            the Y coordinate of rectangular area.
+     * @param w
+     *            the width of rectangular area.
+     * @param h
+     *            the height of rectangular area.
+     * @param model
+     *            the specified ColorModel to be used for pixels converting.
+     * @param pixels
+     *            the array of pixels.
+     * @param off
+     *            the offset of pixels array.
+     * @param scansize
+     *            the distance from the one row of pixels to the next row in the
+     *            specified array.
      */
-    public void setPixels(int x, int y, int w, int h, ColorModel model,
-            byte[] pixels, int off, int scansize);
+    public void setPixels(int x, int y, int w, int h, ColorModel model, byte[] pixels, int off,
+            int scansize);
 
     /**
      * Sets the dimensions of a source image.
      * 
-     * @param width the width of the image.
-     * @param height the height of the image.
+     * @param width
+     *            the width of the image.
+     * @param height
+     *            the height of the image.
      */
     public void setDimensions(int width, int height);
 
     /**
-     * Sets the hint flags of pixels order, which is used by 
-     * the ImageConsumer for obtaining pixels from the ImageProducer
-     * for which this ImageConsumer is added.
+     * Sets the hint flags of pixels order, which is used by the ImageConsumer
+     * for obtaining pixels from the ImageProducer for which this ImageConsumer
+     * is added.
      * 
-     * @param hintflags the mask of hint flags. 
+     * @param hintflags
+     *            the mask of hint flags.
      */
     public void setHints(int hintflags);
 
     /**
      * THis method is called in the one of the following cases:
      * <ul>
-     * <li>The ImageProducer (for which this ImageConsumer is added) 
-     * has been delivered all pixels of the source image. </li>
-     * <li>A one frame of an animation has been completed. </li> 
-     * <li> An error while loading or producing of the image has occured.
-     * </ul> 
+     * <li>The ImageProducer (for which this ImageConsumer is added) has been
+     * delivered all pixels of the source image.</li>
+     * <li>A one frame of an animation has been completed.</li>
+     * <li>An error while loading or producing of the image has occurred.
+     * </ul>
      * 
-     * @param status the status of image producing.
+     * @param status
+     *            the status of image producing.
      */
     public void imageComplete(int status);
 
 }
-
diff --git a/awt/java/awt/image/ImageFilter.java b/awt/java/awt/image/ImageFilter.java
index e386d65..d2c9f50 100644
--- a/awt/java/awt/image/ImageFilter.java
+++ b/awt/java/awt/image/ImageFilter.java
@@ -18,17 +18,22 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.util.Hashtable;
 
 /**
- * The ImageFilter class provides a filter for delivering image data 
- * from an ImageProducer to an ImageConsumer.
+ * The ImageFilter class provides a filter for delivering image data from an
+ * ImageProducer to an ImageConsumer.
+ * 
+ * @since Android 1.0
  */
 public class ImageFilter implements ImageConsumer, Cloneable {
 
-    /** The consumer. */
+    /**
+     * The consumer.
+     */
     protected ImageConsumer consumer;
 
     /**
@@ -39,16 +44,16 @@
     }
 
     /**
-     * Gets an instance of an ImageFilter object which performs
-     * the filtering for the specified ImageConsumer.
-     *  
-     * @param ic the specified ImageConsumer.
+     * Gets an instance of an ImageFilter object which performs the filtering
+     * for the specified ImageConsumer.
      * 
-     * @return an ImageFilter used to perform the filtering for 
-     * the specified ImageConsumer.
+     * @param ic
+     *            the specified ImageConsumer.
+     * @return an ImageFilter used to perform the filtering for the specified
+     *         ImageConsumer.
      */
     public ImageFilter getFilterInstance(ImageConsumer ic) {
-        ImageFilter filter = (ImageFilter) clone();
+        ImageFilter filter = (ImageFilter)clone();
         filter.consumer = ic;
         return filter;
     }
@@ -59,14 +64,14 @@
         if (props == null) {
             fprops = new Hashtable<Object, Object>();
         } else {
-            fprops = (Hashtable<Object, Object>) props.clone();
+            fprops = (Hashtable<Object, Object>)props.clone();
         }
         String propName = "Filters"; //$NON-NLS-1$
         String prop = "Null filter"; //$NON-NLS-1$
         Object o = fprops.get(propName);
         if (o != null) {
             if (o instanceof String) {
-                prop = (String) o + "; " + prop; //$NON-NLS-1$
+                prop = (String)o + "; " + prop; //$NON-NLS-1$
             } else {
                 prop = o.toString() + "; " + prop; //$NON-NLS-1$
             }
@@ -90,11 +95,11 @@
     }
 
     /**
-     * Responds to a request for a Top-Down-Left-Right ordered 
-     * resend of the pixel data from an ImageConsumer. 
+     * Responds to a request for a Top-Down-Left-Right ordered resend of the
+     * pixel data from an ImageConsumer.
      * 
-     * @param ip the ImageProducer that provides this instance of 
-     * the filter.
+     * @param ip
+     *            the ImageProducer that provides this instance of the filter.
      */
     public void resendTopDownLeftRight(ImageProducer ip) {
         ip.requestTopDownLeftRightResend(this);
diff --git a/awt/java/awt/image/ImageObserver.java b/awt/java/awt/image/ImageObserver.java
index 418bd07..21ec41b 100644
--- a/awt/java/awt/image/ImageObserver.java
+++ b/awt/java/awt/image/ImageObserver.java
@@ -18,82 +18,84 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.awt.Image;
 
 /**
- * the ImageObserver interface is an asynchronous update interface 
- * for receiving notifications about Image construction status.
+ * the ImageObserver interface is an asynchronous update interface for receiving
+ * notifications about Image construction status.
+ * 
+ * @since Android 1.0
  */
 public interface ImageObserver {
 
-    /** 
-     * The Constant WIDTH indicates that the width of the image is 
-     * available. 
+    /**
+     * The Constant WIDTH indicates that the width of the image is available.
      */
     public static final int WIDTH = 1;
 
-    /** 
-     * The Constant HEIGHT indicates that the width of the image is 
-     * available.
+    /**
+     * The Constant HEIGHT indicates that the width of the image is available.
      */
     public static final int HEIGHT = 2;
 
-    /** 
-     * The Constant PROPERTIES indicates that the properties of the image
-     * are available. 
+    /**
+     * The Constant PROPERTIES indicates that the properties of the image are
+     * available.
      */
     public static final int PROPERTIES = 4;
 
     /**
-     *  The Constant SOMEBITS indicates that more bits needed for 
-     *  drawing a scaled variation of the image pixels are available.
+     * The Constant SOMEBITS indicates that more bits needed for drawing a
+     * scaled variation of the image pixels are available.
      */
     public static final int SOMEBITS = 8;
 
-    /** 
-     * The Constant FRAMEBITS indicates that complete frame of 
-     * a image which was previously drawn is now available
-     * for drawing again. 
+    /**
+     * The Constant FRAMEBITS indicates that complete frame of a image which was
+     * previously drawn is now available for drawing again.
      */
     public static final int FRAMEBITS = 16;
 
-    /** 
-     * The Constant ALLBITS indicates that an image which 
-     * was previously drawn is now complete and can be drawn again. 
+    /**
+     * The Constant ALLBITS indicates that an image which was previously drawn
+     * is now complete and can be drawn again.
      */
     public static final int ALLBITS = 32;
 
-    /** 
-     * The Constant ERROR indicates that error occured. 
+    /**
+     * The Constant ERROR indicates that error occurred.
      */
     public static final int ERROR = 64;
 
-    /** 
-     * The Constant ABORT indicates that the image producing is 
-     * aborted.
+    /**
+     * The Constant ABORT indicates that the image producing is aborted.
      */
     public static final int ABORT = 128;
 
     /**
-     * This method is called when information about an Image
-     * interface becomes available. This method returns true 
-     * if further updates are needed, false if not.
+     * This method is called when information about an Image interface becomes
+     * available. This method returns true if further updates are needed, false
+     * if not.
      * 
-     * @param img the image to be observed.
-     * @param infoflags the bitwise OR combination of information flags:
-     * ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, 
-     * WIDTH.
-     * @param x the X coordinate.
-     * @param y the Y coordinate.
-     * @param width the width.
-     * @param height the height.
-     * 
+     * @param img
+     *            the image to be observed.
+     * @param infoflags
+     *            the bitwise OR combination of information flags: ABORT,
+     *            ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS,
+     *            WIDTH.
+     * @param x
+     *            the X coordinate.
+     * @param y
+     *            the Y coordinate.
+     * @param width
+     *            the width.
+     * @param height
+     *            the height.
      * @return true if further updates are needed, false if not.
      */
-    public boolean imageUpdate(Image img, int infoflags, int x, int y,
-            int width, int height);
+    public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height);
 
 }
-
diff --git a/awt/java/awt/image/ImageProducer.java b/awt/java/awt/image/ImageProducer.java
index 557ae08..9138be2 100644
--- a/awt/java/awt/image/ImageProducer.java
+++ b/awt/java/awt/image/ImageProducer.java
@@ -18,57 +18,62 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
-
 /**
- * The ImageProducer provides an interface for objects which produce
- * the image data. ImageProducer is used for reconstructing the 
- * image. Each image contains an ImageProducer. 
+ * The ImageProducer provides an interface for objects which produce the image
+ * data. ImageProducer is used for reconstructing the image. Each image contains
+ * an ImageProducer.
+ * 
+ * @since Android 1.0
  */
 public interface ImageProducer {
 
     /**
-     * Checks if the specified ImageConsumer is registered with this 
+     * Checks if the specified ImageConsumer is registered with this
      * ImageProvider or not.
      * 
-     * @param ic the ImageConsumer to be checked.
-     * 
-     * @return true, if the specified ImageConsumer is registered with this 
-     * ImageProvider, false otherwise.
+     * @param ic
+     *            the ImageConsumer to be checked.
+     * @return true, if the specified ImageConsumer is registered with this
+     *         ImageProvider, false otherwise.
      */
     public boolean isConsumer(ImageConsumer ic);
 
     /**
-     * Starts a reconstruction of the image data which will 
-     * be delivered to this consumer. This method addes the
-     * specified ImageConsumer before reconstructing the image.  
+     * Starts a reconstruction of the image data which will be delivered to this
+     * consumer. This method adds the specified ImageConsumer before
+     * reconstructing the image.
      * 
-     * @param ic the specified ImageConsumer.
+     * @param ic
+     *            the specified ImageConsumer.
      */
     public void startProduction(ImageConsumer ic);
 
     /**
-     * Requests the ImageProducer to resend the image data 
-     * in ImageConsumer.TOPDOWNLEFTRIGHT order.
+     * Requests the ImageProducer to resend the image data in
+     * ImageConsumer.TOPDOWNLEFTRIGHT order.
      * 
-     * @param ic the specified ImageConsumer.
+     * @param ic
+     *            the specified ImageConsumer.
      */
     public void requestTopDownLeftRightResend(ImageConsumer ic);
 
     /**
      * Deregisters the specified ImageConsumer.
      * 
-     * @param ic the specified ImageConsumer.
+     * @param ic
+     *            the specified ImageConsumer.
      */
     public void removeConsumer(ImageConsumer ic);
 
     /**
      * Adds the specified ImageConsumer object to this ImageProducer.
      * 
-     * @param ic the specified ImageConsumer.
+     * @param ic
+     *            the specified ImageConsumer.
      */
     public void addConsumer(ImageConsumer ic);
 
 }
-
diff --git a/awt/java/awt/image/ImagingOpException.java b/awt/java/awt/image/ImagingOpException.java
index ebcaba4..e0c0127 100644
--- a/awt/java/awt/image/ImagingOpException.java
+++ b/awt/java/awt/image/ImagingOpException.java
@@ -24,19 +24,24 @@
 package java.awt.image;
 
 /**
- * The ImagingOpException class provides error notification when 
- * the BufferedImageOp or RasterOp filter methods can not perform
- * the desired filter operation.
+ * The ImagingOpException class provides error notification when the
+ * BufferedImageOp or RasterOp filter methods can not perform the desired filter
+ * operation.
+ * 
+ * @since Android 1.0
  */
 public class ImagingOpException extends RuntimeException {
-    
-    /** The Constant serialVersionUID. */
+
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = 8026288481846276658L;
 
     /**
      * Instantiates a new ImagingOpException with a detail message.
      * 
-     * @param s the detail message.
+     * @param s
+     *            the detail message.
      */
     public ImagingOpException(String s) {
         super(s);
diff --git a/awt/java/awt/image/IndexColorModel.java b/awt/java/awt/image/IndexColorModel.java
index a7043f4..0b06acd 100644
--- a/awt/java/awt/image/IndexColorModel.java
+++ b/awt/java/awt/image/IndexColorModel.java
@@ -18,6 +18,7 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.awt.Transparency;
@@ -27,64 +28,92 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Class IndexColorModel represents a color model in which the 
- * color values of the pixels are read from a palette.
+ * The Class IndexColorModel represents a color model in which the color values
+ * of the pixels are read from a palette.
+ * 
+ * @since Android 1.0
  */
 public class IndexColorModel extends ColorModel {
 
-    /** The color map. */
-    private int colorMap[];        // Color Map  
+    /**
+     * The color map.
+     */
+    private int colorMap[]; // Color Map
 
-    /** The map size. */
-    private int mapSize;           // Color Map size
+    /**
+     * The map size.
+     */
+    private int mapSize; // Color Map size
 
-    /** The transparent index. */
-    private int transparentIndex;  // Index of fully transparent pixel
+    /**
+     * The transparent index.
+     */
+    private int transparentIndex; // Index of fully transparent pixel
 
-    /** The gray palette. */
-    private boolean grayPalette;   // Color Model has Color Map with Gray Pallete
+    /**
+     * The gray palette.
+     */
+    private boolean grayPalette; // Color Model has Color Map with Gray Pallete
 
-    /** The valid bits. */
-    private BigInteger validBits;  // Specify valid Color Map values
+    /**
+     * The valid bits.
+     */
+    private BigInteger validBits; // Specify valid Color Map values
 
-    /** The Constant CACHESIZE. */
-    private static final int CACHESIZE = 20; // Cache size. Cache used for 
-                                             // improving performace of selection
-                                             // nearest color in Color Map
+    /**
+     * The Constant CACHESIZE.
+     */
+    private static final int CACHESIZE = 20; // Cache size. Cache used for
 
-    /** The cachetable. */
-    private final int cachetable[] = new int[CACHESIZE * 2]; // Cache table - used for 
-                               // storing RGB values and that appropriate indices 
-                               // in the Color Map 
-                    
+    // improving performace of selection
+    // nearest color in Color Map
 
-    /** The next insert idx. */
-    private int nextInsertIdx = 0;  // Next index for insertion into Cache table
+    /**
+     * The cachetable.
+     */
+    private final int cachetable[] = new int[CACHESIZE * 2]; // Cache table -
 
-    /** The total inserted. */
-    private int totalInserted = 0;  // Number of inserted values into Cache table
+    // used for
+
+    // storing RGB values and that appropriate indices
+    // in the Color Map
+
+    /**
+     * The next insert idx.
+     */
+    private int nextInsertIdx = 0; // Next index for insertion into Cache table
+
+    /**
+     * The total inserted.
+     */
+    private int totalInserted = 0; // Number of inserted values into Cache table
 
     /**
      * Instantiates a new index color model.
      * 
-     * @param bits the array of component masks
-     * @param size the size of the color map
-     * @param cmap the array that gives the color mapping
-     * @param start the start index of the color mapping data within the cmap array
-     * @param transferType the transfer type (primitive java type 
-     * to use for the components)
-     * @param validBits a list of which bits represent valid colormap 
-     * values, or null if all are valid
-     * 
-     * @throws IllegalArgumentException if the size of the color map is
-     * less than one
+     * @param bits
+     *            the array of component masks.
+     * @param size
+     *            the size of the color map.
+     * @param cmap
+     *            the array that gives the color mapping.
+     * @param start
+     *            the start index of the color mapping data within the cmap
+     *            array.
+     * @param transferType
+     *            the transfer type (primitive java type to use for the
+     *            components).
+     * @param validBits
+     *            a list of which bits represent valid colormap values, or null
+     *            if all are valid.
+     * @throws IllegalArgumentException
+     *             if the size of the color map is less than one.
      */
-    public IndexColorModel(int bits, int size, int cmap[], int start,
-            int transferType, BigInteger validBits) {
+    public IndexColorModel(int bits, int size, int cmap[], int start, int transferType,
+            BigInteger validBits) {
 
-        super(bits, IndexColorModel.createBits(true),
-                ColorSpace.getInstance(ColorSpace.CS_sRGB), true, false,
-                Transparency.OPAQUE, validateTransferType(transferType));
+        super(bits, IndexColorModel.createBits(true), ColorSpace.getInstance(ColorSpace.CS_sRGB),
+                true, false, Transparency.OPAQUE, validateTransferType(transferType));
 
         if (size < 1) {
             // awt.264=Size of the color map is less than 1
@@ -122,8 +151,7 @@
                 if (transparency == Transparency.OPAQUE) {
                     transparency = Transparency.BITMASK;
                 }
-            } else if (alpha != alphaMask &&
-                    transparency != Transparency.TRANSLUCENT) {
+            } else if (alpha != alphaMask && transparency != Transparency.TRANSLUCENT) {
                 transparency = Transparency.TRANSLUCENT;
             }
 
@@ -135,25 +163,31 @@
     /**
      * Instantiates a new index color model.
      * 
-     * @param bits the array of component masks
-     * @param size the size of the color map
-     * @param cmap the array that gives the color mapping
-     * @param start the start index of the color mapping data within the cmap array
-     * @param hasalpha whether this color model uses alpha
-     * @param trans the transparency supported, @see java.awt.Transparency
-     * @param transferType the transfer type (primitive java type 
-     * to use for the components)
-     * 
-     * @throws IllegalArgumentException if the size of the color map is
-     * less than one
+     * @param bits
+     *            the array of component masks.
+     * @param size
+     *            the size of the color map.
+     * @param cmap
+     *            the array that gives the color mapping.
+     * @param start
+     *            the start index of the color mapping data within the cmap
+     *            array.
+     * @param hasalpha
+     *            whether this color model uses alpha.
+     * @param trans
+     *            the transparency supported, @see java.awt.Transparency.
+     * @param transferType
+     *            the transfer type (primitive java type to use for the
+     *            components).
+     * @throws IllegalArgumentException
+     *             if the size of the color map is less than one.
      */
-    public IndexColorModel(int bits, int size, int cmap[], int start,
-            boolean hasalpha, int trans, int transferType) {
+    public IndexColorModel(int bits, int size, int cmap[], int start, boolean hasalpha, int trans,
+            int transferType) {
 
-        super(bits, IndexColorModel.createBits(hasalpha || (trans >= 0)),
-                ColorSpace.getInstance(ColorSpace.CS_sRGB),
-                (hasalpha || (trans >= 0)), false, Transparency.OPAQUE,
-                validateTransferType(transferType));
+        super(bits, IndexColorModel.createBits(hasalpha || (trans >= 0)), ColorSpace
+                .getInstance(ColorSpace.CS_sRGB), (hasalpha || (trans >= 0)), false,
+                Transparency.OPAQUE, validateTransferType(transferType));
 
         if (size < 1) {
             // awt.264=Size of the color map is less than 1
@@ -192,8 +226,7 @@
                     if (transparency == Transparency.OPAQUE) {
                         transparency = Transparency.BITMASK;
                     }
-                } else if (alpha != 0
-                        && transparency != Transparency.TRANSLUCENT) {
+                } else if (alpha != 0 && transparency != Transparency.TRANSLUCENT) {
                     transparency = Transparency.TRANSLUCENT;
                 }
             } else {
@@ -205,55 +238,70 @@
     }
 
     /**
-     * Instantiates a new index color model by building the color map 
-     * from arrays of red, green, blue, and alpha values.
+     * Instantiates a new index color model by building the color map from
+     * arrays of red, green, blue, and alpha values.
      * 
-     * @param bits the array of component masks
-     * @param size the size of the color map
-     * @param r the array giving the red components of the entries in the color map
-     * @param g the array giving the green components of the entries in the color map
-     * @param b the array giving the blue components of the entries in the color map
-     * @param a the array giving the alpha components of the entries in the color map
-     * 
-     * @throws IllegalArgumentException if the size of the color map is
-     * less than one
-     * @throws ArrayIndexOutOfBoundsException if the size of one of the 
-     * component arrays is less than the size of the color map
+     * @param bits
+     *            the array of component masks.
+     * @param size
+     *            the size of the color map.
+     * @param r
+     *            the array giving the red components of the entries in the
+     *            color map.
+     * @param g
+     *            the array giving the green components of the entries in the
+     *            color map.
+     * @param b
+     *            the array giving the blue components of the entries in the
+     *            color map.
+     * @param a
+     *            the array giving the alpha components of the entries in the
+     *            color map.
+     * @throws IllegalArgumentException
+     *             if the size of the color map is less than one.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if the size of one of the component arrays is less than the
+     *             size of the color map.
      */
-    public IndexColorModel(int bits, int size, byte r[], byte g[], byte b[],
-            byte a[]) {
+    public IndexColorModel(int bits, int size, byte r[], byte g[], byte b[], byte a[]) {
 
-        super(bits, IndexColorModel.createBits(true),
-                ColorSpace.getInstance(ColorSpace.CS_sRGB), true, false,
-                Transparency.OPAQUE,
-                validateTransferType(ColorModel.getTransferType(bits)));
+        super(bits, IndexColorModel.createBits(true), ColorSpace.getInstance(ColorSpace.CS_sRGB),
+                true, false, Transparency.OPAQUE, validateTransferType(ColorModel
+                        .getTransferType(bits)));
 
         createColorMap(size, r, g, b, a, -1);
         checkPalette();
     }
 
     /**
-     * Instantiates a new index color model by building the color map 
-     * from arrays of red, green, and blue values.
+     * Instantiates a new index color model by building the color map from
+     * arrays of red, green, and blue values.
      * 
-     * @param bits the array of component masks
-     * @param size the size of the color map
-     * @param r the array giving the red components of the entries in the color map
-     * @param g the array giving the green components of the entries in the color map
-     * @param b the array giving the blue components of the entries in the color map
-     * @param trans the transparency supported, @see java.awt.Transparency
-     * 
-     * @throws IllegalArgumentException if the size of the color map is
-     * less than one
-     * @throws ArrayIndexOutOfBoundsException if the size of one of the 
-     * component arrays is less than the size of the color map
+     * @param bits
+     *            the array of component masks.
+     * @param size
+     *            the size of the color map.
+     * @param r
+     *            the array giving the red components of the entries in the
+     *            color map.
+     * @param g
+     *            the array giving the green components of the entries in the
+     *            color map.
+     * @param b
+     *            the array giving the blue components of the entries in the
+     *            color map.
+     * @param trans
+     *            the transparency supported, @see java.awt.Transparency.
+     * @throws IllegalArgumentException
+     *             if the size of the color map is less than one.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if the size of one of the component arrays is less than the
+     *             size of the color map.
      */
-    public IndexColorModel(int bits, int size, byte r[], byte g[], byte b[],
-            int trans) {
+    public IndexColorModel(int bits, int size, byte r[], byte g[], byte b[], int trans) {
 
-        super(bits, IndexColorModel.createBits((trans >= 0)),
-                ColorSpace.getInstance(ColorSpace.CS_sRGB), (trans >= 0), false,
-                Transparency.OPAQUE,
+        super(bits, IndexColorModel.createBits((trans >= 0)), ColorSpace
+                .getInstance(ColorSpace.CS_sRGB), (trans >= 0), false, Transparency.OPAQUE,
                 validateTransferType(ColorModel.getTransferType(bits)));
 
         createColorMap(size, r, g, b, null, trans);
@@ -261,25 +309,32 @@
     }
 
     /**
-     * Instantiates a new index color model by building the color map 
-     * from arrays of red, green, and blue values.
+     * Instantiates a new index color model by building the color map from
+     * arrays of red, green, and blue values.
      * 
-     * @param bits the array of component masks
-     * @param size the size of the color map
-     * @param r the array giving the red components of the entries in the color map
-     * @param g the array giving the green components of the entries in the color map
-     * @param b the array giving the blue components of the entries in the color map
-     * 
-     * @throws IllegalArgumentException if the size of the color map is
-     * less than one
-     * @throws ArrayIndexOutOfBoundsException if the size of one of the 
-     * component arrays is less than the size of the color map
+     * @param bits
+     *            the array of component masks.
+     * @param size
+     *            the size of the color map.
+     * @param r
+     *            the array giving the red components of the entries in the
+     *            color map.
+     * @param g
+     *            the array giving the green components of the entries in the
+     *            color map.
+     * @param b
+     *            the array giving the blue components of the entries in the
+     *            color map.
+     * @throws IllegalArgumentException
+     *             if the size of the color map is less than one.
+     * @throws ArrayIndexOutOfBoundsException
+     *             if the size of one of the component arrays is less than the
+     *             size of the color map.
      */
     public IndexColorModel(int bits, int size, byte r[], byte g[], byte b[]) {
-        super(bits, IndexColorModel.createBits(false),
-                ColorSpace.getInstance(ColorSpace.CS_sRGB), false, false,
-                Transparency.OPAQUE,
-                validateTransferType(ColorModel.getTransferType(bits)));
+        super(bits, IndexColorModel.createBits(false), ColorSpace.getInstance(ColorSpace.CS_sRGB),
+                false, false, Transparency.OPAQUE, validateTransferType(ColorModel
+                        .getTransferType(bits)));
 
         createColorMap(size, r, g, b, null, -1);
         checkPalette();
@@ -288,23 +343,27 @@
     /**
      * Instantiates a new index color model.
      * 
-     * @param bits the array of component masks
-     * @param size the size of the color map
-     * @param cmap the array that gives the color mapping
-     * @param start the start index of the color mapping data within the cmap array
-     * @param hasalpha whether this color model uses alpha
-     * @param trans the transparency supported, @see java.awt.Transparency
-     * 
-     * @throws IllegalArgumentException if the size of the color map is
-     * less than one
+     * @param bits
+     *            the array of component masks.
+     * @param size
+     *            the size of the color map.
+     * @param cmap
+     *            the array that gives the color mapping.
+     * @param start
+     *            the start index of the color mapping data within the cmap
+     *            array.
+     * @param hasalpha
+     *            whether this color model uses alpha.
+     * @param trans
+     *            the transparency supported, @see java.awt.Transparency.
+     * @throws IllegalArgumentException
+     *             if the size of the color map is less than one.
      */
-    public IndexColorModel(int bits, int size, byte cmap[], int start,
-            boolean hasalpha, int trans) {
+    public IndexColorModel(int bits, int size, byte cmap[], int start, boolean hasalpha, int trans) {
 
-        super(bits, IndexColorModel.createBits(hasalpha || (trans >= 0)),
-                ColorSpace.getInstance(ColorSpace.CS_sRGB),
-                (hasalpha || (trans >= 0)), false, Transparency.OPAQUE,
-                validateTransferType(ColorModel.getTransferType(bits)));
+        super(bits, IndexColorModel.createBits(hasalpha || (trans >= 0)), ColorSpace
+                .getInstance(ColorSpace.CS_sRGB), (hasalpha || (trans >= 0)), false,
+                Transparency.OPAQUE, validateTransferType(ColorModel.getTransferType(bits)));
 
         if (size < 1) {
             // awt.264=Size of the color map is less than 1
@@ -319,13 +378,13 @@
         int alpha = 0xff000000;
 
         for (int i = 0; i < mapSize; i++) {
-            colorMap[i] = (cmap[start++] & 0xff) << 16 |
-                   (cmap[start++] & 0xff) << 8 | (cmap[start++] & 0xff);
+            colorMap[i] = (cmap[start++] & 0xff) << 16 | (cmap[start++] & 0xff) << 8
+                    | (cmap[start++] & 0xff);
             if (trans == i) {
                 if (transparency == Transparency.OPAQUE) {
                     transparency = Transparency.BITMASK;
                 }
-                if(hasalpha) {
+                if (hasalpha) {
                     start++;
                 }
                 continue;
@@ -340,8 +399,7 @@
                         }
                     }
                 } else {
-                    if (alpha != 0xff &&
-                           transparency != Transparency.TRANSLUCENT) {
+                    if (alpha != 0xff && transparency != Transparency.TRANSLUCENT) {
                         transparency = Transparency.TRANSLUCENT;
                     }
                 }
@@ -360,25 +418,29 @@
     /**
      * Instantiates a new index color model.
      * 
-     * @param bits the array of component masks
-     * @param size the size of the color map
-     * @param cmap the array that gives the color mapping
-     * @param start the start index of the color mapping data within the cmap array
-     * @param hasalpha whether this color model uses alpha
-     * 
-     * @throws IllegalArgumentException if the size of the color map is
-     * less than one
+     * @param bits
+     *            the array of component masks.
+     * @param size
+     *            the size of the color map.
+     * @param cmap
+     *            the array that gives the color mapping.
+     * @param start
+     *            the start index of the color mapping data within the cmap
+     *            array.
+     * @param hasalpha
+     *            whether this color model uses alpha.
+     * @throws IllegalArgumentException
+     *             if the size of the color map is less than one.
      */
-    public IndexColorModel(int bits, int size, byte cmap[], int start,
-            boolean hasalpha) {
+    public IndexColorModel(int bits, int size, byte cmap[], int start, boolean hasalpha) {
 
         this(bits, size, cmap, start, hasalpha, -1);
     }
 
     @Override
     public Object getDataElements(int[] components, int offset, Object pixel) {
-        int rgb = (components[offset] << 16) | (components[offset + 1]) << 8 |
-               components[offset + 2];
+        int rgb = (components[offset] << 16) | (components[offset + 1]) << 8
+                | components[offset + 2];
         if (hasAlpha) {
             rgb |= components[offset + 3] << 24;
         } else {
@@ -419,7 +481,7 @@
             }
         } else if (alpha == 0 && transparentIndex > -1) {
             pixIdx = transparentIndex;
-        } else  {
+        } else {
             int minAlphaError = 255;
             int minError = 195075; // 255^2 + 255^2 + 255^2
             int alphaError;
@@ -470,19 +532,19 @@
     /**
      * Converts an image from indexed to RGB format.
      * 
-     * @param raster the raster containing the source image
-     * @param forceARGB whether to use the default RGB color model
-     * 
-     * @return the buffered image
-     * 
-     * @throws IllegalArgumentException if the raster is not compatible with 
-     * this color model
+     * @param raster
+     *            the raster containing the source image.
+     * @param forceARGB
+     *            whether to use the default RGB color model.
+     * @return the buffered image.
+     * @throws IllegalArgumentException
+     *             if the raster is not compatible with this color model.
      */
-    public BufferedImage convertToIntDiscrete(Raster raster,
-            boolean forceARGB) {
+    public BufferedImage convertToIntDiscrete(Raster raster, boolean forceARGB) {
 
         if (!isCompatibleRaster(raster)) {
-            // awt.265=The raster argument is not compatible with this IndexColorModel
+            // awt.265=The raster argument is not compatible with this
+            // IndexColorModel
             throw new IllegalArgumentException(Messages.getString("awt.265")); //$NON-NLS-1$
         }
 
@@ -490,8 +552,7 @@
         if (forceARGB || transparency == Transparency.TRANSLUCENT) {
             model = ColorModel.getRGBdefault();
         } else if (transparency == Transparency.BITMASK) {
-            model = new DirectColorModel(25, 0x00ff0000, 0x0000ff00,
-                    0x000000ff, 0x01000000);
+            model = new DirectColorModel(25, 0x00ff0000, 0x0000ff00, 0x000000ff, 0x01000000);
         } else {
             model = new DirectColorModel(24, 0x00ff0000, 0x0000ff00, 0x000000ff);
         }
@@ -510,7 +571,7 @@
         for (int i = 0; i < h; i++, minY++) {
             obj = raster.getDataElements(minX, minY, w, 1, obj);
             if (obj instanceof byte[]) {
-                byte ba[] = (byte[]) obj;
+                byte ba[] = (byte[])obj;
                 if (pixels == null) {
                     pixels = new int[ba.length];
                 }
@@ -518,7 +579,7 @@
                     pixels[j] = colorMap[ba[j] & 0xff];
                 }
             } else if (obj instanceof short[]) {
-                short sa[] = (short[]) obj;
+                short sa[] = (short[])obj;
                 if (pixels == null) {
                     pixels = new int[sa.length];
                 }
@@ -527,7 +588,7 @@
                 }
             }
             if (obj instanceof int[]) {
-                int ia[] = (int[]) obj;
+                int ia[] = (int[])obj;
                 if (pixels == null) {
                     pixels = new int[ia.length];
                 }
@@ -545,7 +606,7 @@
     /**
      * Gets the valid pixels.
      * 
-     * @return the valid pixels
+     * @return the valid pixels.
      */
     public BigInteger getValidPixels() {
         return validBits;
@@ -553,14 +614,15 @@
 
     @Override
     public String toString() {
-        // The output format based on 1.5 release behaviour. 
+        // The output format based on 1.5 release behaviour.
         // It could be reveled such way:
-        // BufferedImage bi = new BufferedImage(1, 1, BufferedImage.TYPE_BYTE_INDEXED);
+        // BufferedImage bi = new BufferedImage(1, 1,
+        // BufferedImage.TYPE_BYTE_INDEXED);
         // ColorModel cm = bi.getColorModel();
         // System.out.println(cm.toString());
         String str = "IndexColorModel: #pixel_bits = " + pixel_bits + //$NON-NLS-1$
-               " numComponents = " + numComponents + " color space = " + cs + //$NON-NLS-1$ //$NON-NLS-2$
-               " transparency = "; //$NON-NLS-1$
+                " numComponents = " + numComponents + " color space = " + cs + //$NON-NLS-1$ //$NON-NLS-2$
+                " transparency = "; //$NON-NLS-1$
 
         if (transparency == Transparency.OPAQUE) {
             str = str + "Transparency.OPAQUE"; //$NON-NLS-1$
@@ -571,7 +633,7 @@
         }
 
         str = str + " transIndex = " + transparentIndex + " has alpha = " + //$NON-NLS-1$ //$NON-NLS-2$
-               hasAlpha + " isAlphaPre = " + isAlphaPremultiplied; //$NON-NLS-1$
+                hasAlpha + " isAlphaPre = " + isAlphaPremultiplied; //$NON-NLS-1$
 
         return str;
     }
@@ -580,13 +642,13 @@
     public int[] getComponents(Object pixel, int components[], int offset) {
         int pixIdx = -1;
         if (pixel instanceof byte[]) {
-            byte ba[] = (byte[]) pixel;
+            byte ba[] = (byte[])pixel;
             pixIdx = ba[0] & 0xff;
         } else if (pixel instanceof short[]) {
-            short sa[] = (short[]) pixel;
+            short sa[] = (short[])pixel;
             pixIdx = sa[0] & 0xffff;
         } else if (pixel instanceof int[]) {
-            int ia[] = (int[]) pixel;
+            int ia[] = (int[])pixel;
             pixIdx = ia[0];
         } else {
             // awt.219=This transferType is not supported by this color model
@@ -600,14 +662,11 @@
     public WritableRaster createCompatibleWritableRaster(int w, int h) {
         WritableRaster raster;
         if (pixel_bits == 1 || pixel_bits == 2 || pixel_bits == 4) {
-            raster = Raster.createPackedRaster(DataBuffer.TYPE_BYTE, w, h, 1,
-                    pixel_bits, null);
+            raster = Raster.createPackedRaster(DataBuffer.TYPE_BYTE, w, h, 1, pixel_bits, null);
         } else if (pixel_bits <= 8) {
-            raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, w, h,
-                    1, null);
+            raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, w, h, 1, null);
         } else if (pixel_bits <= 16) {
-            raster = Raster.createInterleavedRaster(DataBuffer.TYPE_USHORT, w,
-                    h, 1, null);
+            raster = Raster.createInterleavedRaster(DataBuffer.TYPE_USHORT, w, h, 1, null);
         } else {
             // awt.266=The number of bits in a pixel is greater than 16
             throw new UnsupportedOperationException(Messages.getString("awt.266")); //$NON-NLS-1$
@@ -622,8 +681,7 @@
             return false;
         }
 
-        if (!(sm instanceof MultiPixelPackedSampleModel)
-                && !(sm instanceof ComponentSampleModel)) {
+        if (!(sm instanceof MultiPixelPackedSampleModel) && !(sm instanceof ComponentSampleModel)) {
             return false;
         }
 
@@ -640,48 +698,45 @@
     @Override
     public SampleModel createCompatibleSampleModel(int w, int h) {
         if (pixel_bits == 1 || pixel_bits == 2 || pixel_bits == 4) {
-            return new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, w, h,
-                    pixel_bits);
+            return new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, w, h, pixel_bits);
         }
         int bandOffsets[] = new int[1];
         bandOffsets[0] = 0;
-        return new ComponentSampleModel(transferType, w, h, 1, w,
-                bandOffsets);
+        return new ComponentSampleModel(transferType, w, h, 1, w, bandOffsets);
 
     }
 
     @Override
     public boolean isCompatibleRaster(Raster raster) {
         int sampleSize = raster.getSampleModel().getSampleSize(0);
-        return (raster.getTransferType() == transferType &&
-               raster.getNumBands() == 1 && (1 << sampleSize) >= mapSize);
+        return (raster.getTransferType() == transferType && raster.getNumBands() == 1 && (1 << sampleSize) >= mapSize);
     }
 
     @Override
     public int getDataElement(int components[], int offset) {
         int rgb = (components[offset] << 16) | (components[offset + 1]) << 8
                 | components[offset + 2];
-        
+
         if (hasAlpha) {
             rgb |= components[offset + 3] << 24;
         } else {
             rgb |= 0xff000000;
         }
- 
+
         int pixel;
 
         switch (transferType) {
-        case DataBuffer.TYPE_BYTE:
-            byte ba[] = (byte[]) getDataElements(rgb, null);
-            pixel = ba[0] & 0xff;
-            break;
-        case DataBuffer.TYPE_USHORT:
-            short sa[] = (short[]) getDataElements(rgb, null);
-            pixel = sa[0] & 0xffff;
-            break;
-        default:
-            // awt.267=The transferType is invalid
-            throw new UnsupportedOperationException(Messages.getString("awt.267")); //$NON-NLS-1$
+            case DataBuffer.TYPE_BYTE:
+                byte ba[] = (byte[])getDataElements(rgb, null);
+                pixel = ba[0] & 0xff;
+                break;
+            case DataBuffer.TYPE_USHORT:
+                short sa[] = (short[])getDataElements(rgb, null);
+                pixel = sa[0] & 0xffff;
+                break;
+            default:
+                // awt.267=The transferType is invalid
+                throw new UnsupportedOperationException(Messages.getString("awt.267")); //$NON-NLS-1$
         }
 
         return pixel;
@@ -690,7 +745,8 @@
     /**
      * Gets the color map.
      * 
-     * @param rgb the destination array where the color map is written
+     * @param rgb
+     *            the destination array where the color map is written.
      */
     public final void getRGBs(int rgb[]) {
         System.arraycopy(colorMap, 0, rgb, 0, mapSize);
@@ -699,44 +755,48 @@
     /**
      * Gets the red component of the color map.
      * 
-     * @param r the destination array
+     * @param r
+     *            the destination array.
      */
     public final void getReds(byte r[]) {
         for (int i = 0; i < mapSize; i++) {
-            r[i] = (byte) (colorMap[i] >> 16);
+            r[i] = (byte)(colorMap[i] >> 16);
         }
     }
 
     /**
      * Gets the green component of the color map.
      * 
-     * @param g the destination array
+     * @param g
+     *            the destination array.
      */
     public final void getGreens(byte g[]) {
         for (int i = 0; i < mapSize; i++) {
-            g[i] = (byte) (colorMap[i] >> 8);
+            g[i] = (byte)(colorMap[i] >> 8);
         }
     }
 
     /**
      * Gets the blue component of the color map.
      * 
-     * @param b the destination array
+     * @param b
+     *            the destination array.
      */
     public final void getBlues(byte b[]) {
         for (int i = 0; i < mapSize; i++) {
-            b[i] = (byte) colorMap[i];
+            b[i] = (byte)colorMap[i];
         }
     }
 
     /**
      * Gets the alpha component of the color map.
      * 
-     * @param a the destination array
+     * @param a
+     *            the destination array.
      */
     public final void getAlphas(byte a[]) {
         for (int i = 0; i < mapSize; i++) {
-            a[i] = (byte) (colorMap[i] >> 24);
+            a[i] = (byte)(colorMap[i] >> 24);
         }
     }
 
@@ -759,9 +819,9 @@
     /**
      * Checks if the specified pixel is valid for this color model.
      * 
-     * @param pixel the pixel
-     * 
-     * @return true, if the pixel is valid
+     * @param pixel
+     *            the pixel.
+     * @return true, if the pixel is valid.
      */
     public boolean isValid(int pixel) {
         if (validBits == null) {
@@ -803,7 +863,7 @@
     /**
      * Checks if this color model validates pixels.
      * 
-     * @return true, if all pixels are valid, otherwise false
+     * @return true, if all pixels are valid, otherwise false.
      */
     public boolean isValid() {
         return (validBits == null);
@@ -818,7 +878,7 @@
     /**
      * Gets the index that represents the transparent pixel.
      * 
-     * @return the index that represents the transparent pixel
+     * @return the index that represents the transparent pixel.
      */
     public final int getTransparentPixel() {
         return transparentIndex;
@@ -832,7 +892,7 @@
     /**
      * Gets the size of the color map.
      * 
-     * @return the map size
+     * @return the map size.
      */
     public final int getMapSize() {
         return mapSize;
@@ -841,15 +901,20 @@
     /**
      * Creates the color map.
      * 
-     * @param size the size
-     * @param r the r
-     * @param g the g
-     * @param b the b
-     * @param a the a
-     * @param trans the trans
+     * @param size
+     *            the size.
+     * @param r
+     *            the r.
+     * @param g
+     *            the g.
+     * @param b
+     *            the b.
+     * @param a
+     *            the a.
+     * @param trans
+     *            the trans.
      */
-    private void createColorMap(int size, byte r[], byte g[], byte b[],
-            byte a[], int trans) {
+    private void createColorMap(int size, byte r[], byte g[], byte b[], byte a[], int trans) {
         if (size < 1) {
             // awt.264=Size of the color map is less than 1
             throw new IllegalArgumentException(Messages.getString("awt.264")); //$NON-NLS-1$
@@ -867,8 +932,7 @@
         int alpha = 0;
 
         for (int i = 0; i < mapSize; i++) {
-            colorMap[i] = ((r[i] & 0xff) << 16) | ((g[i] & 0xff) << 8) |
-                   (b[i] & 0xff);
+            colorMap[i] = ((r[i] & 0xff) << 16) | ((g[i] & 0xff) << 8) | (b[i] & 0xff);
 
             if (trans == i) {
                 continue;
@@ -900,7 +964,7 @@
     }
 
     /**
-     * This method checking, if Color Map has Gray Palette.
+     * This method checking, if Color Map has Gray palette.
      */
     private void checkPalette() {
         grayPalette = false;
@@ -911,8 +975,7 @@
 
         for (int i = 0; i < mapSize; i++) {
             rgb = colorMap[i];
-            if (((rgb >> 16) & 0xff) != ((rgb >> 8) & 0xff) ||
-                   ((rgb >> 8) & 0xff) != (rgb & 0xff)) {
+            if (((rgb >> 16) & 0xff) != ((rgb >> 8) & 0xff) || ((rgb >> 8) & 0xff) != (rgb & 0xff)) {
                 return;
             }
         }
@@ -922,40 +985,39 @@
     /**
      * Construction an array pixel representation.
      * 
-     * @param colorMapIdx - index into Color Map
-     * @param pixel - pixel
-     * 
-     * @return - an array pixel representation
+     * @param colorMapIdx
+     *            the index into Color Map.
+     * @param pixel
+     *            the pixel
+     * @return the pixel representation array.
      */
     private Object createDataObject(int colorMapIdx, Object pixel) {
         if (pixel == null) {
             switch (transferType) {
-            case DataBuffer.TYPE_BYTE:
-                byte[] ba = new byte[1];
-                ba[0] = (byte) colorMapIdx;
-                pixel = ba;
-                break;
-            case DataBuffer.TYPE_USHORT:
-                short[] sa = new short[1];
-                sa[0] = (short) colorMapIdx;
-                pixel = sa;
-                break;
-            default:
-                // awt.267=The transferType is invalid
-                throw new UnsupportedOperationException(Messages.getString("awt.267")); //$NON-NLS-1$
+                case DataBuffer.TYPE_BYTE:
+                    byte[] ba = new byte[1];
+                    ba[0] = (byte)colorMapIdx;
+                    pixel = ba;
+                    break;
+                case DataBuffer.TYPE_USHORT:
+                    short[] sa = new short[1];
+                    sa[0] = (short)colorMapIdx;
+                    pixel = sa;
+                    break;
+                default:
+                    // awt.267=The transferType is invalid
+                    throw new UnsupportedOperationException(Messages.getString("awt.267")); //$NON-NLS-1$
             }
-        } else if (pixel instanceof byte[]
-                && transferType == DataBuffer.TYPE_BYTE) {
-            byte ba[] = (byte[]) pixel;
-            ba[0] = (byte) colorMapIdx;
+        } else if (pixel instanceof byte[] && transferType == DataBuffer.TYPE_BYTE) {
+            byte ba[] = (byte[])pixel;
+            ba[0] = (byte)colorMapIdx;
             pixel = ba;
-        } else if (pixel instanceof short[]&&
-                transferType == DataBuffer.TYPE_USHORT) {
-            short[] sa = (short[]) pixel;
-            sa[0] = (short) colorMapIdx;
+        } else if (pixel instanceof short[] && transferType == DataBuffer.TYPE_USHORT) {
+            short[] sa = (short[])pixel;
+            sa[0] = (short)colorMapIdx;
             pixel = sa;
         } else if (pixel instanceof int[]) {
-            int ia[] = (int[]) pixel;
+            int ia[] = (int[])pixel;
             ia[0] = colorMapIdx;
             pixel = ia;
         } else {
@@ -968,9 +1030,9 @@
     /**
      * Creates the bits.
      * 
-     * @param hasAlpha the has alpha
-     * 
-     * @return the int[]
+     * @param hasAlpha
+     *            the has alpha.
+     * @return the int[].
      */
     private static int[] createBits(boolean hasAlpha) {
 
@@ -993,28 +1055,26 @@
     /**
      * Validate transfer type.
      * 
-     * @param transferType the transfer type
-     * 
-     * @return the int
+     * @param transferType
+     *            the transfer type.
+     * @return the int.
      */
     private static int validateTransferType(int transferType) {
-        if (transferType != DataBuffer.TYPE_BYTE &&
-               transferType != DataBuffer.TYPE_USHORT) {
-            // awt.269=The transferType is not one of DataBuffer.TYPE_BYTE or DataBuffer.TYPE_USHORT
+        if (transferType != DataBuffer.TYPE_BYTE && transferType != DataBuffer.TYPE_USHORT) {
+            // awt.269=The transferType is not one of DataBuffer.TYPE_BYTE or
+            // DataBuffer.TYPE_USHORT
             throw new IllegalArgumentException(Messages.getString("awt.269")); //$NON-NLS-1$
         }
         return transferType;
     }
 
     /**
-     * Checks if is gray pallete.
+     * Checks if is gray palette.
      * 
-     * @return true, if is gray pallete
+     * @return true, if is gray palette.
      */
-    boolean isGrayPallete(){
+    boolean isGrayPallete() {
         return grayPalette;
     }
 
 }
-
-
diff --git a/awt/java/awt/image/Kernel.java b/awt/java/awt/image/Kernel.java
index c6f00e2..a59d27a 100644
--- a/awt/java/awt/image/Kernel.java
+++ b/awt/java/awt/image/Kernel.java
@@ -27,38 +27,53 @@
 
 /**
  * The Kernel class provides a matrix. This matrix is stored as a float array
- * which describes how a specified pixel affects the value calculated for 
- * the pixel's position in the output image of a filtering operation. 
- * The X, Y origins indicate the kernel matrix element which corresponds to 
- * the pixel position for which an output value is being calculated.
+ * which describes how a specified pixel affects the value calculated for the
+ * pixel's position in the output image of a filtering operation. The X, Y
+ * origins indicate the kernel matrix element which corresponds to the pixel
+ * position for which an output value is being calculated.
+ * 
+ * @since Android 1.0
  */
 public class Kernel implements Cloneable {
-    
-    /** The x origin. */
+
+    /**
+     * The x origin.
+     */
     private final int xOrigin;
-    
-    /** The y origin. */
+
+    /**
+     * The y origin.
+     */
     private final int yOrigin;
-    
-    /** The width. */
+
+    /**
+     * The width.
+     */
     private int width;
-    
-    /** The height. */
+
+    /**
+     * The height.
+     */
     private int height;
-    
-    /** The data. */
+
+    /**
+     * The data.
+     */
     float data[];
 
     /**
-     * Instantiates a new Kernel with the specified float array.
-     * The width*height elements of the data array are copied. 
+     * Instantiates a new Kernel with the specified float array. The
+     * width*height elements of the data array are copied.
      * 
-     * @param width the width of the Kernel.
-     * @param height the height of the Kernel.
-     * @param data the data of Kernel.
+     * @param width
+     *            the width of the Kernel.
+     * @param height
+     *            the height of the Kernel.
+     * @param data
+     *            the data of Kernel.
      */
     public Kernel(int width, int height, float[] data) {
-        int dataLength = width*height;
+        int dataLength = width * height;
         if (data.length < dataLength) {
             // awt.22B=Length of data should not be less than width*height
             throw new IllegalArgumentException(Messages.getString("awt.22B")); //$NON-NLS-1$
@@ -70,8 +85,8 @@
         this.data = new float[dataLength];
         System.arraycopy(data, 0, this.data, 0, dataLength);
 
-        xOrigin = (width-1)/2;
-        yOrigin = (height-1)/2;
+        xOrigin = (width - 1) / 2;
+        yOrigin = (height - 1) / 2;
     }
 
     /**
@@ -95,8 +110,8 @@
     /**
      * Gets the float data array of this Kernel.
      * 
-     * @param data the float array where the resulted data will be stored.
-     * 
+     * @param data
+     *            the float array where the resulted data will be stored.
      * @return the float data array of this Kernel.
      */
     public final float[] getKernelData(float[] data) {
diff --git a/awt/java/awt/image/LookupOp.java b/awt/java/awt/image/LookupOp.java
index f9bd2c7..3362c5c 100644
--- a/awt/java/awt/image/LookupOp.java
+++ b/awt/java/awt/image/LookupOp.java
@@ -32,56 +32,76 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The LookupOp class perfoms a lookup operation which transforms a 
- * source image by filtering each band using a table of data. 
- * The table may contain a single array or it may contain a 
- * different data array for each band of the image.
+ * The LookupOp class performs a lookup operation which transforms a source
+ * image by filtering each band using a table of data. The table may contain a
+ * single array or it may contain a different data array for each band of the
+ * image.
+ * 
+ * @since Android 1.0
  */
 public class LookupOp implements BufferedImageOp, RasterOp {
-    
-    /** The lut. */
+
+    /**
+     * The lut.
+     */
     private final LookupTable lut;
-    
-    /** The hints. */
+
+    /**
+     * The hints.
+     */
     private RenderingHints hints;
-    
+
     // TODO remove when this field is used
-    /** The can use ipp. */
+    /**
+     * The can use ipp.
+     */
     @SuppressWarnings("unused")
     private final boolean canUseIpp;
 
     // We don't create levels/values when it is possible to reuse old
-    /** The cached levels. */
+    /**
+     * The cached levels.
+     */
     private int cachedLevels[];
-    
-    /** The cached values. */
+
+    /**
+     * The cached values.
+     */
     private int cachedValues[];
+
     // Number of channels for which cache is valid.
-    // If negative number of channels is same as positive but skipAlpha was specified
-    /** The valid for channels. */
+    // If negative number of channels is same as positive but skipAlpha was
+    // specified
+    /**
+     * The valid for channels.
+     */
     private int validForChannels;
 
-    /** The level initializer. */
+    /**
+     * The level initializer.
+     */
     static int levelInitializer[] = new int[0x10000];
 
     static {
         // TODO
         // System.loadLibrary("imageops");
 
-        for (int i=1; i<=0x10000; i++) {
-            levelInitializer[i-1] = i;
+        for (int i = 1; i <= 0x10000; i++) {
+            levelInitializer[i - 1] = i;
         }
     }
 
     /**
-     * Instantiates a new LookupOp object from the specified 
-     * LookupTable object and a RenderingHints object.
+     * Instantiates a new LookupOp object from the specified LookupTable object
+     * and a RenderingHints object.
      * 
-     * @param lookup the specified LookupTable object. 
-     * @param hints the RenderingHints object or null.
+     * @param lookup
+     *            the specified LookupTable object.
+     * @param hints
+     *            the RenderingHints object or null.
      */
     public LookupOp(LookupTable lookup, RenderingHints hints) {
-        if (lookup == null){
+        if (lookup == null) {
             throw new NullPointerException(Messages.getString("awt.01", "lookup")); //$NON-NLS-1$ //$NON-NLS-2$
         }
         lut = lookup;
@@ -136,27 +156,16 @@
                     transferType = DataBuffer.TYPE_SHORT;
                 }
 
-                dstCM = new ComponentColorModel(
-                        dstCM.cs,
-                        dstCM.hasAlpha(),
-                        dstCM.isAlphaPremultiplied,
-                        dstCM.transparency,
-                        transferType
-                );
+                dstCM = new ComponentColorModel(dstCM.cs, dstCM.hasAlpha(),
+                        dstCM.isAlphaPremultiplied, dstCM.transparency, transferType);
             }
         }
 
-        WritableRaster r =
-                dstCM.isCompatibleSampleModel(src.getSampleModel()) ?
-                src.getRaster().createCompatibleWritableRaster(src.getWidth(), src.getHeight()) :
-                dstCM.createCompatibleWritableRaster(src.getWidth(), src.getHeight());
+        WritableRaster r = dstCM.isCompatibleSampleModel(src.getSampleModel()) ? src.getRaster()
+                .createCompatibleWritableRaster(src.getWidth(), src.getHeight()) : dstCM
+                .createCompatibleWritableRaster(src.getWidth(), src.getHeight());
 
-        return new BufferedImage(
-                dstCM,
-                r,
-                dstCM.isAlphaPremultiplied(),
-                null
-        );
+        return new BufferedImage(dstCM, r, dstCM.isAlphaPremultiplied(), null);
     }
 
     public final WritableRaster filter(Raster src, WritableRaster dst) {
@@ -166,25 +175,27 @@
             if (src.getNumBands() != dst.getNumBands()) {
                 throw new IllegalArgumentException(Messages.getString("awt.237")); //$NON-NLS-1$            }
             }
-            if (src.getWidth() != dst.getWidth()){
+            if (src.getWidth() != dst.getWidth()) {
                 throw new IllegalArgumentException(Messages.getString("awt.28F")); //$NON-NLS-1$            }
             }
-            if (src.getHeight() != dst.getHeight()){
+            if (src.getHeight() != dst.getHeight()) {
                 throw new IllegalArgumentException(Messages.getString("awt.290")); //$NON-NLS-1$            }
             }
         }
 
         if (lut.getNumComponents() != 1 && lut.getNumComponents() != src.getNumBands()) {
-            // awt.238=The number of arrays in the LookupTable does not meet the restrictions
+            // awt.238=The number of arrays in the LookupTable does not meet the
+            // restrictions
             throw new IllegalArgumentException(Messages.getString("awt.238")); //$NON-NLS-1$
         }
 
         // TODO
-        // if (!canUseIpp || ippFilter(src, dst, BufferedImage.TYPE_CUSTOM, false) != 0)
-            if (slowFilter(src, dst, false) != 0) {
-                // awt.21F=Unable to transform source
-                throw new ImagingOpException (Messages.getString("awt.21F")); //$NON-NLS-1$
-            }
+        // if (!canUseIpp || ippFilter(src, dst, BufferedImage.TYPE_CUSTOM,
+        // false) != 0)
+        if (slowFilter(src, dst, false) != 0) {
+            // awt.21F=Unable to transform source
+            throw new ImagingOpException(Messages.getString("awt.21F")); //$NON-NLS-1$
+        }
 
         return dst;
     }
@@ -202,18 +213,20 @@
         int nLUTComponents = lut.getNumComponents();
         boolean skipAlpha;
         if (srcCM.hasAlpha()) {
-            if (nLUTComponents == 1 || nLUTComponents == nComponents-1) {
+            if (nLUTComponents == 1 || nLUTComponents == nComponents - 1) {
                 skipAlpha = true;
             } else if (nLUTComponents == nComponents) {
                 skipAlpha = false;
             } else {
-                // awt.229=Number of components in the LUT does not match the number of bands
+                // awt.229=Number of components in the LUT does not match the
+                // number of bands
                 throw new IllegalArgumentException(Messages.getString("awt.229")); //$NON-NLS-1$
             }
         } else if (nLUTComponents == 1 || nLUTComponents == nComponents) {
             skipAlpha = false;
         } else {
-            // awt.229=Number of components in the LUT does not match the number of bands
+            // awt.229=Number of components in the LUT does not match the number
+            // of bands
             throw new IllegalArgumentException(Messages.getString("awt.229")); //$NON-NLS-1$
         }
 
@@ -222,21 +235,19 @@
             finalDst = dst;
             dst = createCompatibleDestImage(src, null);
         } else {
-            if (src.getWidth() != dst.getWidth()){
+            if (src.getWidth() != dst.getWidth()) {
                 throw new IllegalArgumentException(Messages.getString("awt.291")); //$NON-NLS-1$
             }
 
-            if (src.getHeight() != dst.getHeight()){
+            if (src.getHeight() != dst.getHeight()) {
                 throw new IllegalArgumentException(Messages.getString("awt.292")); //$NON-NLS-1$
             }
 
             if (!srcCM.equals(dst.getColorModel())) {
                 // Treat BufferedImage.TYPE_INT_RGB and
                 // BufferedImage.TYPE_INT_ARGB as same
-                if (!((src.getType() == BufferedImage.TYPE_INT_RGB || src
-                        .getType() == BufferedImage.TYPE_INT_ARGB) && (dst
-                        .getType() == BufferedImage.TYPE_INT_RGB || dst
-                        .getType() == BufferedImage.TYPE_INT_ARGB))) {
+                if (!((src.getType() == BufferedImage.TYPE_INT_RGB || src.getType() == BufferedImage.TYPE_INT_ARGB) && (dst
+                        .getType() == BufferedImage.TYPE_INT_RGB || dst.getType() == BufferedImage.TYPE_INT_ARGB))) {
                     finalDst = dst;
                     dst = createCompatibleDestImage(src, null);
                 }
@@ -244,11 +255,12 @@
         }
 
         // TODO
-        //if (!canUseIpp || ippFilter(src.getRaster(), dst.getRaster(), src.getType(), skipAlpha) != 0)
-            if (slowFilter(src.getRaster(), dst.getRaster(), skipAlpha) != 0) {
-                // awt.21F=Unable to transform source
-                throw new ImagingOpException (Messages.getString("awt.21F")); //$NON-NLS-1$
-            }
+        // if (!canUseIpp || ippFilter(src.getRaster(), dst.getRaster(),
+        // src.getType(), skipAlpha) != 0)
+        if (slowFilter(src.getRaster(), dst.getRaster(), skipAlpha) != 0) {
+            // awt.21F=Unable to transform source
+            throw new ImagingOpException(Messages.getString("awt.21F")); //$NON-NLS-1$
+        }
 
         if (finalDst != null) {
             Graphics2D g = finalDst.createGraphics();
@@ -264,11 +276,13 @@
     /**
      * Slow filter.
      * 
-     * @param src the src
-     * @param dst the dst
-     * @param skipAlpha the skip alpha
-     * 
-     * @return the int
+     * @param src
+     *            the src.
+     * @param dst
+     *            the dst.
+     * @param skipAlpha
+     *            the skip alpha.
+     * @return the int.
      */
     private final int slowFilter(Raster src, WritableRaster dst, boolean skipAlpha) {
         int minSrcX = src.getMinX();
@@ -286,39 +300,39 @@
         int[] pixels = null;
         int offset = lut.getOffset();
 
-        if (lut instanceof ByteLookupTable){
+        if (lut instanceof ByteLookupTable) {
             byte[][] byteData = ((ByteLookupTable)lut).getTable();
             pixels = src.getPixels(minSrcX, minSrcY, srcWidth, srcHeight, pixels);
 
-            if (lut.getNumComponents() != 1){
-                for (int i=0; i < pixels.length; i+= numBands){
-                    for (int b = 0; b < numBands2Process; b++){
-                        pixels[i+b] = byteData[b][pixels[i+b]-offset] & 0xFF;
+            if (lut.getNumComponents() != 1) {
+                for (int i = 0; i < pixels.length; i += numBands) {
+                    for (int b = 0; b < numBands2Process; b++) {
+                        pixels[i + b] = byteData[b][pixels[i + b] - offset] & 0xFF;
                     }
                 }
             } else {
-                for (int i=0; i < pixels.length; i+= numBands){
-                    for (int b = 0; b < numBands2Process; b++){
-                        pixels[i+b] = byteData[0][pixels[i+b]-offset] & 0xFF;
+                for (int i = 0; i < pixels.length; i += numBands) {
+                    for (int b = 0; b < numBands2Process; b++) {
+                        pixels[i + b] = byteData[0][pixels[i + b] - offset] & 0xFF;
                     }
                 }
             }
 
             dst.setPixels(minDstX, minDstY, srcWidth, srcHeight, pixels);
-        } else if (lut instanceof ShortLookupTable){
-            short[][] shortData  = ((ShortLookupTable)lut).getTable();
+        } else if (lut instanceof ShortLookupTable) {
+            short[][] shortData = ((ShortLookupTable)lut).getTable();
             pixels = src.getPixels(minSrcX, minSrcY, srcWidth, srcHeight, pixels);
 
-            if (lut.getNumComponents() != 1){
-                for (int i=0; i < pixels.length; i+= numBands){
-                    for (int b = 0; b < numBands2Process; b++){
-                        pixels[i+b] = shortData[b][pixels[i+b]-offset] & 0xFFFF;
+            if (lut.getNumComponents() != 1) {
+                for (int i = 0; i < pixels.length; i += numBands) {
+                    for (int b = 0; b < numBands2Process; b++) {
+                        pixels[i + b] = shortData[b][pixels[i + b] - offset] & 0xFFFF;
                     }
                 }
             } else {
-                for (int i=0; i < pixels.length; i+= numBands){
-                    for (int b = 0; b < numBands2Process; b++){
-                        pixels[i+b] = shortData[0][pixels[i+b]-offset] & 0xFFFF;
+                for (int i = 0; i < pixels.length; i += numBands) {
+                    for (int b = 0; b < numBands2Process; b++) {
+                        pixels[i + b] = shortData[0][pixels[i + b] - offset] & 0xFFFF;
                     }
                 }
             }
@@ -328,8 +342,8 @@
             int pixel[] = new int[src.getNumBands()];
             int maxY = minSrcY + srcHeight;
             int maxX = minSrcX + srcWidth;
-            for (int srcY=minSrcY, dstY = minDstY; srcY < maxY; srcY++, dstY++){
-                for (int srcX=minSrcX, dstX = minDstX; srcX < maxX; srcX++, dstX++){
+            for (int srcY = minSrcY, dstY = minDstY; srcY < maxY; srcY++, dstY++) {
+                for (int srcX = minSrcX, dstX = minDstX; srcX < maxX; srcX++, dstX++) {
                     src.getPixel(srcX, srcY, pixel);
                     lut.lookupPixel(pixel, pixel);
                     dst.setPixel(dstX, dstY, pixel);
@@ -343,16 +357,19 @@
     /**
      * Creates the byte levels.
      * 
-     * @param channels the channels
-     * @param skipAlpha the skip alpha
-     * @param levels the levels
-     * @param values the values
-     * @param channelsOrder the channels order
+     * @param channels
+     *            the channels.
+     * @param skipAlpha
+     *            the skip alpha.
+     * @param levels
+     *            the levels.
+     * @param values
+     *            the values.
+     * @param channelsOrder
+     *            the channels order.
      */
-    private final void createByteLevels(
-            int channels, boolean skipAlpha,
-            int levels[], int values[], int channelsOrder[]
-    ) {
+    private final void createByteLevels(int channels, boolean skipAlpha, int levels[],
+            int values[], int channelsOrder[]) {
         byte data[][] = ((ByteLookupTable)lut).getTable();
         int nLevels = data[0].length;
         int offset = lut.getOffset();
@@ -360,18 +377,18 @@
         // Use one data array for all channels or use several data arrays
         int dataIncrement = data.length > 1 ? 1 : 0;
 
-        for (int ch = 0, dataIdx = 0; ch<channels; dataIdx+=dataIncrement, ch++) {
+        for (int ch = 0, dataIdx = 0; ch < channels; dataIdx += dataIncrement, ch++) {
             int channelOffset = channelsOrder == null ? ch : channelsOrder[ch];
             int channelBase = nLevels * channelOffset;
 
             // Skip last channel if needed, zero values are OK -
             // no changes to the channel information will be done in IPP
-            if ((channelOffset == channels-1 && skipAlpha) || (dataIdx >= data.length)) {
+            if ((channelOffset == channels - 1 && skipAlpha) || (dataIdx >= data.length)) {
                 continue;
             }
 
             System.arraycopy(levelInitializer, offset, levels, channelBase, nLevels);
-            for (int from=0, to=channelBase; from<nLevels; from++, to++) {
+            for (int from = 0, to = channelBase; from < nLevels; from++, to++) {
                 values[to] = data[dataIdx][from] & 0xFF;
             }
         }
@@ -380,16 +397,19 @@
     /**
      * Creates the short levels.
      * 
-     * @param channels the channels
-     * @param skipAlpha the skip alpha
-     * @param levels the levels
-     * @param values the values
-     * @param channelsOrder the channels order
+     * @param channels
+     *            the channels.
+     * @param skipAlpha
+     *            the skip alpha.
+     * @param levels
+     *            the levels.
+     * @param values
+     *            the values.
+     * @param channelsOrder
+     *            the channels order.
      */
-    private final void createShortLevels(
-            int channels, boolean skipAlpha,
-            int levels[], int values[], int channelsOrder[]
-    ) {
+    private final void createShortLevels(int channels, boolean skipAlpha, int levels[],
+            int values[], int channelsOrder[]) {
         short data[][] = ((ShortLookupTable)lut).getTable();
         int nLevels = data[0].length;
         int offset = lut.getOffset();
@@ -397,18 +417,18 @@
         // Use one data array for all channels or use several data arrays
         int dataIncrement = data.length > 1 ? 1 : 0;
 
-        for (int ch = 0, dataIdx = 0; ch<channels; dataIdx+=dataIncrement, ch++) {
+        for (int ch = 0, dataIdx = 0; ch < channels; dataIdx += dataIncrement, ch++) {
             int channelOffset = channelsOrder == null ? ch : channelsOrder[ch];
 
             // Skip last channel if needed, zero values are OK -
             // no changes to the channel information will be done in IPP
-            if ((channelOffset == channels-1 && skipAlpha) || (dataIdx >= data.length)) {
+            if ((channelOffset == channels - 1 && skipAlpha) || (dataIdx >= data.length)) {
                 continue;
             }
 
             int channelBase = nLevels * channelOffset;
             System.arraycopy(levelInitializer, offset, levels, channelBase, nLevels);
-            for (int from=0, to=channelBase; from<nLevels; from++, to++) {
+            for (int from = 0, to = channelBase; from < nLevels; from++, to++) {
                 values[to] = data[dataIdx][from] & 0xFFFF;
             }
         }
@@ -418,18 +438,18 @@
     /**
      * Ipp filter.
      * 
-     * @param src the src
-     * @param dst the dst
-     * @param imageType the image type
-     * @param skipAlpha the skip alpha
-     * 
-     * @return the int
+     * @param src
+     *            the src.
+     * @param dst
+     *            the dst.
+     * @param imageType
+     *            the image type.
+     * @param skipAlpha
+     *            the skip alpha.
+     * @return the int.
      */
     @SuppressWarnings("unused")
-    private final int ippFilter(
-            Raster src, WritableRaster dst,
-            int imageType, boolean skipAlpha
-    ) {
+    private final int ippFilter(Raster src, WritableRaster dst, int imageType, boolean skipAlpha) {
         int res;
 
         int srcStride, dstStride;
@@ -442,9 +462,11 @@
             case BufferedImage.TYPE_INT_ARGB_PRE:
             case BufferedImage.TYPE_INT_RGB: {
                 channels = 4;
-                srcStride = src.getWidth()*4;
-                dstStride = dst.getWidth()*4;
-                channelsOrder = new int[] {2, 1, 0, 3};
+                srcStride = src.getWidth() * 4;
+                dstStride = dst.getWidth() * 4;
+                channelsOrder = new int[] {
+                        2, 1, 0, 3
+                };
                 break;
             }
 
@@ -452,8 +474,8 @@
             case BufferedImage.TYPE_4BYTE_ABGR_PRE:
             case BufferedImage.TYPE_INT_BGR: {
                 channels = 4;
-                srcStride = src.getWidth()*4;
-                dstStride = dst.getWidth()*4;
+                srcStride = src.getWidth() * 4;
+                dstStride = dst.getWidth() * 4;
                 break;
             }
 
@@ -466,9 +488,11 @@
 
             case BufferedImage.TYPE_3BYTE_BGR: {
                 channels = 3;
-                srcStride = src.getWidth()*3;
-                dstStride = dst.getWidth()*3;
-                channelsOrder = new int[] {2, 1, 0};
+                srcStride = src.getWidth() * 3;
+                dstStride = dst.getWidth() * 3;
+                channelsOrder = new int[] {
+                        2, 1, 0
+                };
                 break;
             }
 
@@ -483,15 +507,11 @@
                 SampleModel srcSM = src.getSampleModel();
                 SampleModel dstSM = dst.getSampleModel();
 
-                if (
-                        srcSM instanceof PixelInterleavedSampleModel &&
-                        dstSM instanceof PixelInterleavedSampleModel
-                ) {
+                if (srcSM instanceof PixelInterleavedSampleModel
+                        && dstSM instanceof PixelInterleavedSampleModel) {
                     // Check PixelInterleavedSampleModel
-                    if (
-                            srcSM.getDataType() != DataBuffer.TYPE_BYTE ||
-                            dstSM.getDataType() != DataBuffer.TYPE_BYTE
-                    ) {
+                    if (srcSM.getDataType() != DataBuffer.TYPE_BYTE
+                            || dstSM.getDataType() != DataBuffer.TYPE_BYTE) {
                         return slowFilter(src, dst, skipAlpha);
                     }
 
@@ -501,40 +521,32 @@
                         return slowFilter(src, dst, skipAlpha);
                     }
 
-                    srcStride = ((ComponentSampleModel) srcSM).getScanlineStride();
-                    dstStride = ((ComponentSampleModel) dstSM).getScanlineStride();
+                    srcStride = ((ComponentSampleModel)srcSM).getScanlineStride();
+                    dstStride = ((ComponentSampleModel)dstSM).getScanlineStride();
 
-                    channelsOrder = ((ComponentSampleModel) srcSM).getBandOffsets();
-                } else if (
-                        srcSM instanceof SinglePixelPackedSampleModel &&
-                        dstSM instanceof SinglePixelPackedSampleModel
-                ) {
+                    channelsOrder = ((ComponentSampleModel)srcSM).getBandOffsets();
+                } else if (srcSM instanceof SinglePixelPackedSampleModel
+                        && dstSM instanceof SinglePixelPackedSampleModel) {
                     // Check SinglePixelPackedSampleModel
-                    SinglePixelPackedSampleModel sppsm1 =
-                            (SinglePixelPackedSampleModel) srcSM;
-                    SinglePixelPackedSampleModel sppsm2 =
-                            (SinglePixelPackedSampleModel) dstSM;
+                    SinglePixelPackedSampleModel sppsm1 = (SinglePixelPackedSampleModel)srcSM;
+                    SinglePixelPackedSampleModel sppsm2 = (SinglePixelPackedSampleModel)dstSM;
 
                     channels = sppsm1.getNumBands();
 
-                     // TYPE_INT_RGB, TYPE_INT_ARGB...
-                    if (
-                            sppsm1.getDataType() != DataBuffer.TYPE_INT ||
-                            sppsm2.getDataType() != DataBuffer.TYPE_INT ||
-                            !(channels == 3 || channels == 4)
-                    ) {
+                    // TYPE_INT_RGB, TYPE_INT_ARGB...
+                    if (sppsm1.getDataType() != DataBuffer.TYPE_INT
+                            || sppsm2.getDataType() != DataBuffer.TYPE_INT
+                            || !(channels == 3 || channels == 4)) {
                         return slowFilter(src, dst, skipAlpha);
                     }
 
                     // Check compatibility of sample models
-                    if (
-                            !Arrays.equals(sppsm1.getBitOffsets(), sppsm2.getBitOffsets()) ||
-                            !Arrays.equals(sppsm1.getBitMasks(), sppsm2.getBitMasks())
-                    ) {
+                    if (!Arrays.equals(sppsm1.getBitOffsets(), sppsm2.getBitOffsets())
+                            || !Arrays.equals(sppsm1.getBitMasks(), sppsm2.getBitMasks())) {
                         return slowFilter(src, dst, skipAlpha);
                     }
 
-                    for (int i=0; i<channels; i++) {
+                    for (int i = 0; i < channels; i++) {
                         if (sppsm1.getSampleSize(i) != 8) {
                             return slowFilter(src, dst, skipAlpha);
                         }
@@ -542,11 +554,12 @@
 
                     channelsOrder = new int[channels];
                     int bitOffsets[] = sppsm1.getBitOffsets();
-                    for (int i=0; i<channels; i++) {
+                    for (int i = 0; i < channels; i++) {
                         channelsOrder[i] = bitOffsets[i] / 8;
                     }
 
-                    if (channels == 3) { // Don't skip channel now, could be optimized
+                    if (channels == 3) { // Don't skip channel now, could be
+                        // optimized
                         channels = 4;
                     }
 
@@ -558,12 +571,9 @@
 
                 // Fill offsets if there's a child raster
                 if (src.getParent() != null || dst.getParent() != null) {
-                    if (
-                            src.getSampleModelTranslateX() != 0 ||
-                            src.getSampleModelTranslateY() != 0 ||
-                            dst.getSampleModelTranslateX() != 0 ||
-                            dst.getSampleModelTranslateY() != 0
-                    ) {
+                    if (src.getSampleModelTranslateX() != 0 || src.getSampleModelTranslateY() != 0
+                            || dst.getSampleModelTranslateX() != 0
+                            || dst.getSampleModelTranslateY() != 0) {
                         offsets = new int[4];
                         offsets[0] = -src.getSampleModelTranslateX() + src.getMinX();
                         offsets[1] = -src.getSampleModelTranslateY() + src.getMinY();
@@ -576,24 +586,25 @@
 
         int levels[] = null, values[] = null;
         int channelMultiplier = skipAlpha ? -1 : 1;
-        if (channelMultiplier*channels == validForChannels) { // use existing levels/values
+        if (channelMultiplier * channels == validForChannels) { // use existing
+            // levels/values
             levels = cachedLevels;
             values = cachedValues;
         } else { // create new levels/values
             if (lut instanceof ByteLookupTable) {
                 byte data[][] = ((ByteLookupTable)lut).getTable();
-                levels = new int[channels*data[0].length];
-                values = new int[channels*data[0].length];
+                levels = new int[channels * data[0].length];
+                values = new int[channels * data[0].length];
                 createByteLevels(channels, skipAlpha, levels, values, channelsOrder);
             } else if (lut instanceof ShortLookupTable) {
                 short data[][] = ((ShortLookupTable)lut).getTable();
-                levels = new int[channels*data[0].length];
-                values = new int[channels*data[0].length];
+                levels = new int[channels * data[0].length];
+                values = new int[channels * data[0].length];
                 createShortLevels(channels, skipAlpha, levels, values, channelsOrder);
             }
 
             // cache levels/values
-            validForChannels = channelMultiplier*channels;
+            validForChannels = channelMultiplier * channels;
             cachedLevels = levels;
             cachedValues = values;
         }
@@ -607,13 +618,8 @@
             return -1; // Unknown data buffer type
         }
 
-        res = ippLUT(
-            srcData, src.getWidth(), src.getHeight(), srcStride,
-            dstData, dst.getWidth(), dst.getHeight(), dstStride,
-            levels, values,
-            channels, offsets,
-            false
-        );
+        res = ippLUT(srcData, src.getWidth(), src.getHeight(), srcStride, dstData, dst.getWidth(),
+                dst.getHeight(), dstStride, levels, values, channels, offsets, false);
 
         return res;
     }
@@ -621,27 +627,35 @@
     /**
      * Ipp lut.
      * 
-     * @param src the src
-     * @param srcWidth the src width
-     * @param srcHeight the src height
-     * @param srcStride the src stride
-     * @param dst the dst
-     * @param dstWidth the dst width
-     * @param dstHeight the dst height
-     * @param dstStride the dst stride
-     * @param levels the levels
-     * @param values the values
-     * @param channels the channels
-     * @param offsets the offsets
-     * @param linear the linear
-     * 
-     * @return the int
+     * @param src
+     *            the src.
+     * @param srcWidth
+     *            the src width.
+     * @param srcHeight
+     *            the src height.
+     * @param srcStride
+     *            the src stride.
+     * @param dst
+     *            the dst.
+     * @param dstWidth
+     *            the dst width.
+     * @param dstHeight
+     *            the dst height.
+     * @param dstStride
+     *            the dst stride.
+     * @param levels
+     *            the levels.
+     * @param values
+     *            the values.
+     * @param channels
+     *            the channels.
+     * @param offsets
+     *            the offsets.
+     * @param linear
+     *            the linear.
+     * @return the int.
      */
-    final static native int ippLUT(
-            Object src, int srcWidth, int srcHeight, int srcStride,
-            Object dst, int dstWidth, int dstHeight, int dstStride,
-            int levels[], int values[],
-            int channels, int offsets[],
-            boolean linear
-    );
+    final static native int ippLUT(Object src, int srcWidth, int srcHeight, int srcStride,
+            Object dst, int dstWidth, int dstHeight, int dstStride, int levels[], int values[],
+            int channels, int offsets[], boolean linear);
 }
diff --git a/awt/java/awt/image/LookupTable.java b/awt/java/awt/image/LookupTable.java
index d15f23c..e465a54 100644
--- a/awt/java/awt/image/LookupTable.java
+++ b/awt/java/awt/image/LookupTable.java
@@ -26,26 +26,33 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * This abstract LookupTable class represents lookup table which
- * is defined with the number of components and offset value.
- * ByteLookupTable and ShortLookupTable classes are subclasses of
- * LookupTable which contains byte and short data tables as
- * an input arrays for bands or components of image.
+ * This abstract LookupTable class represents lookup table which is defined with
+ * the number of components and offset value. ByteLookupTable and
+ * ShortLookupTable classes are subclasses of LookupTable which contains byte
+ * and short data tables as an input arrays for bands or components of image.
+ * 
+ * @since Android 1.0
  */
 public abstract class LookupTable {
-    
-    /** The offset. */
+
+    /**
+     * The offset.
+     */
     private int offset;
-    
-    /** The num components. */
+
+    /**
+     * The num components.
+     */
     private int numComponents;
 
     /**
-     * Instantiates a new LookupTable with the specified offset value
-     * and number of components.
+     * Instantiates a new LookupTable with the specified offset value and number
+     * of components.
      * 
-     * @param offset the offset value.
-     * @param numComponents the number of components.
+     * @param offset
+     *            the offset value.
+     * @param numComponents
+     *            the number of components.
      */
     protected LookupTable(int offset, int numComponents) {
         if (offset < 0) {
@@ -80,14 +87,15 @@
     }
 
     /**
-     * Returns a int array which contains samples of the specified
-     * pixel which is translated with the lookup table of this 
-     * LookupTable. The resulted array is stored to the dst array.
+     * Returns an integer array which contains samples of the specified pixel which
+     * is translated with the lookup table of this LookupTable. The resulted
+     * array is stored to the dst array.
      * 
-     * @param src the source array.
-     * @param dst the destination array where the result can be stored.
-     * 
-     * @return the int array of translated samples of a pixel.
+     * @param src
+     *            the source array.
+     * @param dst
+     *            the destination array where the result can be stored.
+     * @return the integer array of translated samples of a pixel.
      */
     public abstract int[] lookupPixel(int[] src, int[] dst);
 }
diff --git a/awt/java/awt/image/MemoryImageSource.java b/awt/java/awt/image/MemoryImageSource.java
index 983f19e..644fd40f 100644
--- a/awt/java/awt/image/MemoryImageSource.java
+++ b/awt/java/awt/image/MemoryImageSource.java
@@ -18,6 +18,7 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.util.Hashtable;
@@ -26,154 +27,211 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The MemoryImageSource class is used to produces pixels of an image from
- * an array. This class can manage a memory image which 
- * contains an animation or custom rendering.
+ * The MemoryImageSource class is used to produces pixels of an image from an
+ * array. This class can manage a memory image which contains an animation or
+ * custom rendering.
+ * 
+ * @since Android 1.0
  */
 public class MemoryImageSource implements ImageProducer {
 
-    /** The width. */
+    /**
+     * The width.
+     */
     int width;
-    
-    /** The height. */
+
+    /**
+     * The height.
+     */
     int height;
-    
-    /** The cm. */
+
+    /**
+     * The cm.
+     */
     ColorModel cm;
-    
-    /** The b data. */
+
+    /**
+     * The b data.
+     */
     byte bData[];
-    
-    /** The i data. */
+
+    /**
+     * The i data.
+     */
     int iData[];
-    
-    /** The offset. */
+
+    /**
+     * The offset.
+     */
     int offset;
-    
-    /** The scanline. */
+
+    /**
+     * The scanline.
+     */
     int scanline;
-    
-    /** The properties. */
+
+    /**
+     * The properties.
+     */
     Hashtable<?, ?> properties;
-    
-    /** The consumers. */
+
+    /**
+     * The consumers.
+     */
     Vector<ImageConsumer> consumers;
-    
-    /** The animated. */
+
+    /**
+     * The animated.
+     */
     boolean animated;
-    
-    /** The fullbuffers. */
+
+    /**
+     * The fullbuffers.
+     */
     boolean fullbuffers;
-    
-    /** The data type. */
+
+    /**
+     * The data type.
+     */
     int dataType;
 
-    /** The Constant DATA_TYPE_BYTE. */
+    /**
+     * The Constant DATA_TYPE_BYTE.
+     */
     static final int DATA_TYPE_BYTE = 0;
-    
-    /** The Constant DATA_TYPE_INT. */
+
+    /**
+     * The Constant DATA_TYPE_INT.
+     */
     static final int DATA_TYPE_INT = 1;
 
     /**
-     * Instantiates a new MemoryImageSource with the specified
-     * parameters.
+     * Instantiates a new MemoryImageSource with the specified parameters.
      * 
-     * @param w the width of the rectangular area of pixels.
-     * @param h the height of the rectangular area of pixels.
-     * @param cm the specified ColorModel.
-     * @param pix the pixel array.
-     * @param off the offset in the pixel array.
-     * @param scan the distance from one pixel's row to the next 
-     * in the pixel array.
-     * @param props the set of properties to be used for image
-     * processing.
+     * @param w
+     *            the width of the rectangular area of pixels.
+     * @param h
+     *            the height of the rectangular area of pixels.
+     * @param cm
+     *            the specified ColorModel.
+     * @param pix
+     *            the pixel array.
+     * @param off
+     *            the offset in the pixel array.
+     * @param scan
+     *            the distance from one pixel's row to the next in the pixel
+     *            array.
+     * @param props
+     *            the set of properties to be used for image processing.
      */
-    public MemoryImageSource(int w, int h, ColorModel cm, int pix[],
-            int off, int scan, Hashtable<?, ?> props) {
-        init(w, h, cm, pix, off, scan, props);
-    }
-
-    /**
-     * Instantiates a new MemoryImageSource with the specified
-     * parameters.
-     * 
-     * @param w the width of the rectangular area of pixels.
-     * @param h the height of the rectangular area of pixels.
-     * @param cm the specified ColorModel.
-     * @param pix the pixel array.
-     * @param off the offset in the pixel array.
-     * @param scan the distance from one pixel's row to the next 
-     * in the pixel array.
-     * @param props the set of properties to be used for image
-     * processing.
-     */
-    public MemoryImageSource(int w, int h, ColorModel cm, byte pix[],
-            int off, int scan, Hashtable<?, ?> props) {
-        init(w, h, cm, pix, off, scan, props);
-    }
-
-    /**
-     * Instantiates a new MemoryImageSource with the specified
-     * parameters and default RGB ColorModel.
-     * 
-     * @param w the width of the rectangular area of pixels.
-     * @param h the height of the rectangular area of pixels.
-     * @param pix the pixel array.
-     * @param off the offset in the pixel array.
-     * @param scan the distance from one pixel's row to the next 
-     * in the pixel array.
-     * @param props the set of properties to be used for image
-     * processing.
-     */
-    public MemoryImageSource(int w, int h, int pix[], int off, int scan,
+    public MemoryImageSource(int w, int h, ColorModel cm, int pix[], int off, int scan,
             Hashtable<?, ?> props) {
+        init(w, h, cm, pix, off, scan, props);
+    }
+
+    /**
+     * Instantiates a new MemoryImageSource with the specified parameters.
+     * 
+     * @param w
+     *            the width of the rectangular area of pixels.
+     * @param h
+     *            the height of the rectangular area of pixels.
+     * @param cm
+     *            the specified ColorModel.
+     * @param pix
+     *            the pixel array.
+     * @param off
+     *            the offset in the pixel array.
+     * @param scan
+     *            the distance from one pixel's row to the next in the pixel
+     *            array.
+     * @param props
+     *            the set of properties to be used for image processing.
+     */
+    public MemoryImageSource(int w, int h, ColorModel cm, byte pix[], int off, int scan,
+            Hashtable<?, ?> props) {
+        init(w, h, cm, pix, off, scan, props);
+    }
+
+    /**
+     * Instantiates a new MemoryImageSource with the specified parameters and
+     * default RGB ColorModel.
+     * 
+     * @param w
+     *            the width of the rectangular area of pixels.
+     * @param h
+     *            the height of the rectangular area of pixels.
+     * @param pix
+     *            the pixel array.
+     * @param off
+     *            the offset in the pixel array.
+     * @param scan
+     *            the distance from one pixel's row to the next in the pixel
+     *            array.
+     * @param props
+     *            the set of properties to be used for image processing.
+     */
+    public MemoryImageSource(int w, int h, int pix[], int off, int scan, Hashtable<?, ?> props) {
         init(w, h, ColorModel.getRGBdefault(), pix, off, scan, props);
     }
 
     /**
-     * Instantiates a new MemoryImageSource with the specified
-     * parameters.
+     * Instantiates a new MemoryImageSource with the specified parameters.
      * 
-     * @param w the width of the rectangular area of pixels.
-     * @param h the height of the rectangular area of pixels.
-     * @param cm the specified ColorModel.
-     * @param pix the pixel array.
-     * @param off the offset in the pixel array.
-     * @param scan the distance from one pixel's row to the next 
-     * in the pixel array.
+     * @param w
+     *            the width of the rectangular area of pixels.
+     * @param h
+     *            the height of the rectangular area of pixels.
+     * @param cm
+     *            the specified ColorModel.
+     * @param pix
+     *            the pixel array.
+     * @param off
+     *            the offset in the pixel array.
+     * @param scan
+     *            the distance from one pixel's row to the next in the pixel
+     *            array.
      */
-    public MemoryImageSource(int w, int h, ColorModel cm, int pix[],
-            int off, int scan) {
+    public MemoryImageSource(int w, int h, ColorModel cm, int pix[], int off, int scan) {
         init(w, h, cm, pix, off, scan, null);
     }
 
     /**
-     * Instantiates a new MemoryImageSource with the specified
-     * parameters.
+     * Instantiates a new MemoryImageSource with the specified parameters.
      * 
-     * @param w the width of the rectangular area of pixels.
-     * @param h the height of the rectangular area of pixels.
-     * @param cm the specified ColorModel.
-     * @param pix the pixel array.
-     * @param off the offset in the pixel array.
-     * @param scan the distance from one pixel's row to the next 
-     * in the pixel array.
+     * @param w
+     *            the width of the rectangular area of pixels.
+     * @param h
+     *            the height of the rectangular area of pixels.
+     * @param cm
+     *            the specified ColorModel.
+     * @param pix
+     *            the pixel array.
+     * @param off
+     *            the offset in the pixel array.
+     * @param scan
+     *            the distance from one pixel's row to the next in the pixel
+     *            array.
      */
-    public MemoryImageSource(int w, int h, ColorModel cm, byte pix[],
-            int off, int scan) {
+    public MemoryImageSource(int w, int h, ColorModel cm, byte pix[], int off, int scan) {
         init(w, h, cm, pix, off, scan, null);
     }
 
     /**
-     * Instantiates a new MemoryImageSource with the specified
-     * parameters and default RGB ColorModel.
+     * Instantiates a new MemoryImageSource with the specified parameters and
+     * default RGB ColorModel.
      * 
-     * @param w the width of the rectangular area of pixels.
-     * @param h the height of the rectangular area of pixels.
-     * @param pix the pixels array.
-     * @param off the offset in the pixel array.
-     * @param scan the distance from one pixel's row to the next 
-     * in the pixel array.
+     * @param w
+     *            the width of the rectangular area of pixels.
+     * @param h
+     *            the height of the rectangular area of pixels.
+     * @param pix
+     *            the pixels array.
+     * @param off
+     *            the offset in the pixel array.
+     * @param scan
+     *            the distance from one pixel's row to the next in the pixel
+     *            array.
      */
     public MemoryImageSource(int w, int h, int pix[], int off, int scan) {
         init(w, h, ColorModel.getRGBdefault(), pix, off, scan, null);
@@ -184,25 +242,25 @@
     }
 
     public void startProduction(ImageConsumer ic) {
-        if(!isConsumer(ic) && ic != null) {
+        if (!isConsumer(ic) && ic != null) {
             consumers.addElement(ic);
         }
-        try{
+        try {
             setHeader(ic);
             setPixels(ic, 0, 0, width, height);
-            if(animated){
+            if (animated) {
                 ic.imageComplete(ImageConsumer.SINGLEFRAMEDONE);
-            }else{
+            } else {
                 ic.imageComplete(ImageConsumer.STATICIMAGEDONE);
-                if(isConsumer(ic)) {
+                if (isConsumer(ic)) {
                     removeConsumer(ic);
                 }
             }
-        }catch(Exception e){
-            if(isConsumer(ic)) {
+        } catch (Exception e) {
+            if (isConsumer(ic)) {
                 ic.imageComplete(ImageConsumer.IMAGEERROR);
             }
-            if(isConsumer(ic)) {
+            if (isConsumer(ic)) {
                 removeConsumer(ic);
             }
         }
@@ -216,26 +274,29 @@
     }
 
     public synchronized void addConsumer(ImageConsumer ic) {
-        if(ic == null || consumers.contains(ic)) {
+        if (ic == null || consumers.contains(ic)) {
             return;
         }
         consumers.addElement(ic);
     }
 
     /**
-     * Replaces the pixel data with a new pixel array for holding 
-     * the pixels for this image. If an animation 
-     * flag is set to true value by the setAnimated() method, 
-     * the new pixels will be immediately delivered to the ImageConsumers. 
+     * Replaces the pixel data with a new pixel array for holding the pixels for
+     * this image. If an animation flag is set to true value by the
+     * setAnimated() method, the new pixels will be immediately delivered to the
+     * ImageConsumers.
      * 
-     * @param newpix the new pixel array.
-     * @param newmodel the new ColorModel.
-     * @param offset the offset in the array.
-     * @param scansize the distance from one row of pixels to the next row
-     * in the pixel array
+     * @param newpix
+     *            the new pixel array.
+     * @param newmodel
+     *            the new ColorModel.
+     * @param offset
+     *            the offset in the array.
+     * @param scansize
+     *            the distance from one row of pixels to the next row in the
+     *            pixel array.
      */
-    public synchronized void newPixels(int newpix[], ColorModel newmodel,
-            int offset, int scansize) {
+    public synchronized void newPixels(int newpix[], ColorModel newmodel, int offset, int scansize) {
         this.dataType = DATA_TYPE_INT;
         this.iData = newpix;
         this.cm = newmodel;
@@ -245,19 +306,22 @@
     }
 
     /**
-     * Replaces the pixel data with a new pixel array for holding 
-     * the pixels for this image. If an animation 
-     * flag is set to true value by the setAnimated() method, 
-     * the new pixels will be immediately delivered to the ImageConsumers. 
+     * Replaces the pixel data with a new pixel array for holding the pixels for
+     * this image. If an animation flag is set to true value by the
+     * setAnimated() method, the new pixels will be immediately delivered to the
+     * ImageConsumers.
      * 
-     * @param newpix the new pixel array.
-     * @param newmodel the new ColorModel.
-     * @param offset the offset in the array.
-     * @param scansize the distance from one row of pixels to the next row
-     * in the pixel array
+     * @param newpix
+     *            the new pixel array.
+     * @param newmodel
+     *            the new ColorModel.
+     * @param offset
+     *            the offset in the array.
+     * @param scansize
+     *            the distance from one row of pixels to the next row in the
+     *            pixel array.
      */
-    public synchronized void newPixels(byte newpix[], ColorModel newmodel,
-            int offset, int scansize) {
+    public synchronized void newPixels(byte newpix[], ColorModel newmodel, int offset, int scansize) {
         this.dataType = DATA_TYPE_BYTE;
         this.bData = newpix;
         this.cm = newmodel;
@@ -267,33 +331,33 @@
     }
 
     /**
-     * Sets the full buffer updates flag to true. If this is an 
-     * animated image, the image consumers hints are updated
-     * accordingly.
+     * Sets the full buffer updates flag to true. If this is an animated image,
+     * the image consumers hints are updated accordingly.
      * 
-     * @param fullbuffers the true if the pixel buffer should be sent always.
+     * @param fullbuffers
+     *            the true if the pixel buffer should be sent always.
      */
     public synchronized void setFullBufferUpdates(boolean fullbuffers) {
-        if(this.fullbuffers == fullbuffers) {
+        if (this.fullbuffers == fullbuffers) {
             return;
         }
         this.fullbuffers = fullbuffers;
-        if(animated){
+        if (animated) {
             Object consAr[] = consumers.toArray();
             for (Object element : consAr) {
                 ImageConsumer con = (ImageConsumer)element;
-                try{
-                    if(fullbuffers){
-                        con.setHints(ImageConsumer.TOPDOWNLEFTRIGHT |
-                                ImageConsumer.COMPLETESCANLINES);
-                    }else{
+                try {
+                    if (fullbuffers) {
+                        con.setHints(ImageConsumer.TOPDOWNLEFTRIGHT
+                                | ImageConsumer.COMPLETESCANLINES);
+                    } else {
                         con.setHints(ImageConsumer.RANDOMPIXELORDER);
                     }
-                }catch(Exception e){
-                    if(isConsumer(con)) {
+                } catch (Exception e) {
+                    if (isConsumer(con)) {
                         con.imageComplete(ImageConsumer.IMAGEERROR);
                     }
-                    if(isConsumer(con)) {
+                    if (isConsumer(con)) {
                         removeConsumer(con);
                     }
                 }
@@ -302,27 +366,28 @@
     }
 
     /**
-     * Sets the flag that tells whether this memory image has more 
-     * than one frame (for animation): true for multiple frames,
-     * false if this class represents a single frame image.
-     *  
-     * @param animated whether this image represents an animation.
+     * Sets the flag that tells whether this memory image has more than one
+     * frame (for animation): true for multiple frames, false if this class
+     * represents a single frame image.
+     * 
+     * @param animated
+     *            whether this image represents an animation.
      */
     public synchronized void setAnimated(boolean animated) {
-        if(this.animated == animated) {
+        if (this.animated == animated) {
             return;
         }
         Object consAr[] = consumers.toArray();
         for (Object element : consAr) {
             ImageConsumer con = (ImageConsumer)element;
-            try{
+            try {
                 con.imageComplete(ImageConsumer.STATICIMAGEDONE);
-            }catch(Exception e){
-                if(isConsumer(con)) {
+            } catch (Exception e) {
+                if (isConsumer(con)) {
                     con.imageComplete(ImageConsumer.IMAGEERROR);
                 }
             }
-            if(isConsumer(con)){
+            if (isConsumer(con)) {
                 removeConsumer(con);
             }
         }
@@ -330,60 +395,63 @@
     }
 
     /**
-     * Sends the specified rectangular area of the buffer to 
-     * ImageConsumers and notifies them that an animation frame 
-     * is completed only if framenotify parameter is true.
-     * That works only if the animated flag has been set to true 
-     * by the setAnimated() method. If the full buffer update flag 
-     * has been set to true by the setFullBufferUpdates() method, 
-     * then the entire buffer will always be sent ignoring parameters.
+     * Sends the specified rectangular area of the buffer to ImageConsumers and
+     * notifies them that an animation frame is completed only if the {@code
+     * framenotify} parameter is true. That works only if the animated flag has
+     * been set to true by the setAnimated() method. If the full buffer update
+     * flag has been set to true by the setFullBufferUpdates() method, then the
+     * entire buffer will always be sent ignoring parameters.
      * 
-     * @param x the X coordinate of the rectangular area.
-     * @param y the Y coordinate of rthe ectangular area.
-     * @param w the width of the rectangular area.
-     * @param h the height of the rectangular area. 
-     * @param framenotify true if a SINGLEFRAMEDONE notification
-     * should be sent to the registered consumers, false otherwise. 
+     * @param x
+     *            the X coordinate of the rectangular area.
+     * @param y
+     *            the Y coordinate of the rectangular area.
+     * @param w
+     *            the width of the rectangular area.
+     * @param h
+     *            the height of the rectangular area.
+     * @param framenotify
+     *            true if a SINGLEFRAMEDONE notification should be sent to the
+     *            registered consumers, false otherwise.
      */
-    public synchronized void newPixels(int x, int y, int w, int h,
-            boolean framenotify) {
-        if(animated){
-            if(fullbuffers){
+    public synchronized void newPixels(int x, int y, int w, int h, boolean framenotify) {
+        if (animated) {
+            if (fullbuffers) {
                 x = 0;
                 y = 0;
                 w = width;
                 h = height;
-            }else{
-                if(x < 0){
+            } else {
+                if (x < 0) {
                     w += x;
                     x = 0;
                 }
-                if(w > width) {
+                if (w > width) {
                     w = width - x;
                 }
-                if(y < 0){
+                if (y < 0) {
                     h += y;
                     y = 0;
                 }
             }
-            if(h > height) {
+            if (h > height) {
                 h = height - y;
             }
             Object consAr[] = consumers.toArray();
             for (Object element : consAr) {
                 ImageConsumer con = (ImageConsumer)element;
-                try{
-                    if(w > 0 && h > 0) {
+                try {
+                    if (w > 0 && h > 0) {
                         setPixels(con, x, y, w, h);
                     }
-                    if(framenotify) {
+                    if (framenotify) {
                         con.imageComplete(ImageConsumer.SINGLEFRAMEDONE);
                     }
-                }catch(Exception ex){
-                    if(isConsumer(con)) {
+                } catch (Exception ex) {
+                    if (isConsumer(con)) {
                         con.imageComplete(ImageConsumer.IMAGEERROR);
                     }
-                    if(isConsumer(con)) {
+                    if (isConsumer(con)) {
                         removeConsumer(con);
                     }
                 }
@@ -392,26 +460,29 @@
     }
 
     /**
-     * Sends the specified rectangular area of the buffer to 
-     * the ImageConsumers and notifies them that an animation frame 
-     * is completed if the animated flag has been set to true 
-     * by the setAnimated() method. If the full buffer update flag 
-     * has been set to true by the setFullBufferUpdates() method, 
+     * Sends the specified rectangular area of the buffer to the ImageConsumers
+     * and notifies them that an animation frame is completed if the animated
+     * flag has been set to true by the setAnimated() method. If the full buffer
+     * update flag has been set to true by the setFullBufferUpdates() method,
      * then the entire buffer will always be sent ignoring parameters.
      * 
-     * @param x the X coordinate of the rectangular area.
-     * @param y the Y coordinate of the rectangular area.
-     * @param w the width of the rectangular area.
-     * @param h the height of the rectangular area. 
+     * @param x
+     *            the X coordinate of the rectangular area.
+     * @param y
+     *            the Y coordinate of the rectangular area.
+     * @param w
+     *            the width of the rectangular area.
+     * @param h
+     *            the height of the rectangular area.
      */
     public synchronized void newPixels(int x, int y, int w, int h) {
         newPixels(x, y, w, h, true);
     }
 
     /**
-     * Sends a new buffer of pixels to the ImageConsumers 
-     * and notifies them that an animation frame is completed if
-     * the animated flag has been set to true by the setAnimated() method. 
+     * Sends a new buffer of pixels to the ImageConsumers and notifies them that
+     * an animation frame is completed if the animated flag has been set to true
+     * by the setAnimated() method.
      */
     public void newPixels() {
         newPixels(0, 0, width, height, true);
@@ -420,16 +491,23 @@
     /**
      * Inits the.
      * 
-     * @param width the width
-     * @param height the height
-     * @param model the model
-     * @param pixels the pixels
-     * @param off the off
-     * @param scan the scan
-     * @param prop the prop
+     * @param width
+     *            the width.
+     * @param height
+     *            the height.
+     * @param model
+     *            the model.
+     * @param pixels
+     *            the pixels.
+     * @param off
+     *            the off.
+     * @param scan
+     *            the scan.
+     * @param prop
+     *            the prop.
      */
-    private void init(int width, int height, ColorModel model, byte pixels[],
-            int off, int scan, Hashtable<?, ?> prop){
+    private void init(int width, int height, ColorModel model, byte pixels[], int off, int scan,
+            Hashtable<?, ?> prop) {
 
         this.width = width;
         this.height = height;
@@ -446,16 +524,23 @@
     /**
      * Inits the.
      * 
-     * @param width the width
-     * @param height the height
-     * @param model the model
-     * @param pixels the pixels
-     * @param off the off
-     * @param scan the scan
-     * @param prop the prop
+     * @param width
+     *            the width.
+     * @param height
+     *            the height.
+     * @param model
+     *            the model.
+     * @param pixels
+     *            the pixels.
+     * @param off
+     *            the off.
+     * @param scan
+     *            the scan.
+     * @param prop
+     *            the prop.
      */
-    private void init(int width, int height, ColorModel model, int pixels[],
-            int off, int scan, Hashtable<?, ?> prop){
+    private void init(int width, int height, ColorModel model, int pixels[], int off, int scan,
+            Hashtable<?, ?> prop) {
 
         this.width = width;
         this.height = height;
@@ -471,42 +556,48 @@
     /**
      * Sets the pixels.
      * 
-     * @param con the con
-     * @param x the x
-     * @param y the y
-     * @param w the w
-     * @param h the h
+     * @param con
+     *            the con.
+     * @param x
+     *            the x.
+     * @param y
+     *            the y.
+     * @param w
+     *            the w.
+     * @param h
+     *            the h.
      */
-    private void setPixels(ImageConsumer con, int x, int y, int w, int h){
+    private void setPixels(ImageConsumer con, int x, int y, int w, int h) {
         int pixelOff = scanline * y + offset + x;
 
-        switch(dataType){
-        case DATA_TYPE_BYTE:
-            con.setPixels(x, y, w, h, cm, bData, pixelOff, scanline);
-            break;
-        case DATA_TYPE_INT:
-            con.setPixels(x, y, w, h, cm, iData, pixelOff, scanline);
-            break;
-        default:
-            // awt.22A=Wrong type of pixels array
-            throw new IllegalArgumentException(Messages.getString("awt.22A")); //$NON-NLS-1$
+        switch (dataType) {
+            case DATA_TYPE_BYTE:
+                con.setPixels(x, y, w, h, cm, bData, pixelOff, scanline);
+                break;
+            case DATA_TYPE_INT:
+                con.setPixels(x, y, w, h, cm, iData, pixelOff, scanline);
+                break;
+            default:
+                // awt.22A=Wrong type of pixels array
+                throw new IllegalArgumentException(Messages.getString("awt.22A")); //$NON-NLS-1$
         }
     }
 
     /**
      * Sets the header.
      * 
-     * @param con the new header
+     * @param con
+     *            the new header.
      */
-    private synchronized void setHeader(ImageConsumer con){
+    private synchronized void setHeader(ImageConsumer con) {
         con.setDimensions(width, height);
         con.setProperties(properties);
         con.setColorModel(cm);
-        con.setHints(animated ? (fullbuffers ? (ImageConsumer.TOPDOWNLEFTRIGHT |
-                ImageConsumer.COMPLETESCANLINES) : ImageConsumer.RANDOMPIXELORDER) :
-                (ImageConsumer.TOPDOWNLEFTRIGHT | ImageConsumer.COMPLETESCANLINES |
-                 ImageConsumer.SINGLEPASS | ImageConsumer.SINGLEFRAME));
+        con
+                .setHints(animated ? (fullbuffers ? (ImageConsumer.TOPDOWNLEFTRIGHT | ImageConsumer.COMPLETESCANLINES)
+                        : ImageConsumer.RANDOMPIXELORDER)
+                        : (ImageConsumer.TOPDOWNLEFTRIGHT | ImageConsumer.COMPLETESCANLINES
+                                | ImageConsumer.SINGLEPASS | ImageConsumer.SINGLEFRAME));
     }
 
 }
-
diff --git a/awt/java/awt/image/MultiPixelPackedSampleModel.java b/awt/java/awt/image/MultiPixelPackedSampleModel.java
index dd44b49..3dc13d8 100644
--- a/awt/java/awt/image/MultiPixelPackedSampleModel.java
+++ b/awt/java/awt/image/MultiPixelPackedSampleModel.java
@@ -18,72 +18,93 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The MultiPixelPackedSampleModel class represents image data with one
- * band. This class packs multiple pixels with one sample in one data 
- * element and supports the following data types: DataBuffer.TYPE_BYTE, 
- * DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT. 
+ * The MultiPixelPackedSampleModel class represents image data with one band.
+ * This class packs multiple pixels with one sample in one data element and
+ * supports the following data types: DataBuffer.TYPE_BYTE,
+ * DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT.
+ * 
+ * @since Android 1.0
  */
 public class MultiPixelPackedSampleModel extends SampleModel {
 
-    /** The pixel bit stride. */
+    /**
+     * The pixel bit stride.
+     */
     private int pixelBitStride;
 
-    /** The scanline stride. */
+    /**
+     * The scanline stride.
+     */
     private int scanlineStride;
 
-    /** The data bit offset. */
+    /**
+     * The data bit offset.
+     */
     private int dataBitOffset;
 
-    /** The bit mask. */
+    /**
+     * The bit mask.
+     */
     private int bitMask;
 
-    /** The data element size. */
+    /**
+     * The data element size.
+     */
     private int dataElementSize;
 
-    /** The pixels per data element. */
+    /**
+     * The pixels per data element.
+     */
     private int pixelsPerDataElement;
 
     /**
      * Instantiates a new MultiPixelPackedSampleModel with the specified
      * parameters.
      * 
-     * @param dataType the data type of the samples.
-     * @param w the width of the image data.
-     * @param h the height of the image data.
-     * @param numberOfBits the number of bits per pixel.
-     * @param scanlineStride the scanline stride of the of the image data.
-     * @param dataBitOffset the array of the band offsets.
+     * @param dataType
+     *            the data type of the samples.
+     * @param w
+     *            the width of the image data.
+     * @param h
+     *            the height of the image data.
+     * @param numberOfBits
+     *            the number of bits per pixel.
+     * @param scanlineStride
+     *            the scanline stride of the of the image data.
+     * @param dataBitOffset
+     *            the array of the band offsets.
      */
-    public MultiPixelPackedSampleModel(int dataType, int w, int h,
-            int numberOfBits, int scanlineStride, int dataBitOffset) {
+    public MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits,
+            int scanlineStride, int dataBitOffset) {
 
         super(dataType, w, h, 1);
-        if (dataType != DataBuffer.TYPE_BYTE &&
-               dataType != DataBuffer.TYPE_USHORT &&
-               dataType != DataBuffer.TYPE_INT) {
+        if (dataType != DataBuffer.TYPE_BYTE && dataType != DataBuffer.TYPE_USHORT
+                && dataType != DataBuffer.TYPE_INT) {
             // awt.61=Unsupported data type: {0}
             throw new IllegalArgumentException(Messages.getString("awt.61", //$NON-NLS-1$
                     dataType));
         }
 
         this.scanlineStride = scanlineStride;
-        if(numberOfBits == 0) {
+        if (numberOfBits == 0) {
             // awt.20C=Number of Bits equals to zero
             throw new RasterFormatException(Messages.getString("awt.20C")); //$NON-NLS-1$
         }
         this.pixelBitStride = numberOfBits;
         this.dataElementSize = DataBuffer.getDataTypeSize(dataType);
-        if(dataElementSize % pixelBitStride != 0) {
-            // awt.20D=The number of bits per pixel is not a power of 2 or pixels span data element boundaries
+        if (dataElementSize % pixelBitStride != 0) {
+            // awt.20D=The number of bits per pixel is not a power of 2 or
+            // pixels span data element boundaries
             throw new RasterFormatException(Messages.getString("awt.20D")); //$NON-NLS-1$
         }
 
-        if(dataBitOffset % numberOfBits != 0) {
+        if (dataBitOffset % numberOfBits != 0) {
             // awt.20E=Data Bit offset is not a multiple of pixel bit stride
             throw new RasterFormatException(Messages.getString("awt.20E")); //$NON-NLS-1$
         }
@@ -97,17 +118,20 @@
      * Instantiates a new MultiPixelPackedSampleModel with the specified
      * parameters.
      * 
-     * @param dataType the data type of the samples.
-     * @param w the width of the image data.
-     * @param h the height of the image data.
-     * @param numberOfBits the number of bits per pixel.
+     * @param dataType
+     *            the data type of the samples.
+     * @param w
+     *            the width of the image data.
+     * @param h
+     *            the height of the image data.
+     * @param numberOfBits
+     *            the number of bits per pixel.
      */
-    public MultiPixelPackedSampleModel(int dataType, int w, int h,
-            int numberOfBits) {
+    public MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits) {
 
-        this(dataType, w, h, numberOfBits, (numberOfBits * w +
-               DataBuffer.getDataTypeSize(dataType) - 1) /
-               DataBuffer.getDataTypeSize(dataType), 0);
+        this(dataType, w, h, numberOfBits,
+                (numberOfBits * w + DataBuffer.getDataTypeSize(dataType) - 1)
+                        / DataBuffer.getDataTypeSize(dataType), 0);
     }
 
     @Override
@@ -117,36 +141,36 @@
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
         switch (getTransferType()) {
-        case DataBuffer.TYPE_BYTE:
-            byte bdata[];
-            if (obj == null) {
-                bdata = new byte[1];
-            } else {
-                bdata = (byte[]) obj;
-            }
-            bdata[0] = (byte) getSample(x, y, 0, data);
-            obj = bdata;
-            break;
-        case DataBuffer.TYPE_USHORT:
-            short sdata[];
-            if (obj == null) {
-                sdata = new short[1];
-            } else {
-                sdata = (short[]) obj;
-            }
-            sdata[0] = (short) getSample(x, y, 0, data);
-            obj = sdata;
-            break;
-        case DataBuffer.TYPE_INT:
-            int idata[];
-            if (obj == null) {
-                idata = new int[1];
-            } else {
-                idata = (int[]) obj;
-            }
-            idata[0] = getSample(x, y, 0, data);
-            obj = idata;
-            break;
+            case DataBuffer.TYPE_BYTE:
+                byte bdata[];
+                if (obj == null) {
+                    bdata = new byte[1];
+                } else {
+                    bdata = (byte[])obj;
+                }
+                bdata[0] = (byte)getSample(x, y, 0, data);
+                obj = bdata;
+                break;
+            case DataBuffer.TYPE_USHORT:
+                short sdata[];
+                if (obj == null) {
+                    sdata = new short[1];
+                } else {
+                    sdata = (short[])obj;
+                }
+                sdata[0] = (short)getSample(x, y, 0, data);
+                obj = sdata;
+                break;
+            case DataBuffer.TYPE_INT:
+                int idata[];
+                if (obj == null) {
+                    idata = new int[1];
+                } else {
+                    idata = (int[])obj;
+                }
+                idata[0] = getSample(x, y, 0, data);
+                obj = idata;
+                break;
         }
 
         return obj;
@@ -158,14 +182,14 @@
     }
 
     /**
-     * Compares this MultiPixelPackedSampleModel object with 
-     * the specified object.
+     * Compares this MultiPixelPackedSampleModel object with the specified
+     * object.
      * 
-     * @param o the Object to be compared.
-     * 
-     * @return true, if the object is a MultiPixelPackedSampleModel 
-     * with the same data parameter values as this MultiPixelPackedSampleModel,
-     * false otherwise.
+     * @param o
+     *            the Object to be compared.
+     * @return true, if the object is a MultiPixelPackedSampleModel with the
+     *         same data parameter values as this MultiPixelPackedSampleModel,
+     *         false otherwise.
      */
     @Override
     public boolean equals(Object o) {
@@ -173,17 +197,14 @@
             return false;
         }
 
-        MultiPixelPackedSampleModel model = (MultiPixelPackedSampleModel) o;
-        return this.width == model.width &&
-               this.height == model.height &&
-               this.numBands == model.numBands &&
-               this.dataType == model.dataType &&
-               this.pixelBitStride == model.pixelBitStride &&
-               this.bitMask == model.bitMask &&
-               this.pixelsPerDataElement == model.pixelsPerDataElement &&
-               this.dataElementSize == model.dataElementSize &&
-               this.dataBitOffset == model.dataBitOffset &&
-               this.scanlineStride == model.scanlineStride;
+        MultiPixelPackedSampleModel model = (MultiPixelPackedSampleModel)o;
+        return this.width == model.width && this.height == model.height
+                && this.numBands == model.numBands && this.dataType == model.dataType
+                && this.pixelBitStride == model.pixelBitStride && this.bitMask == model.bitMask
+                && this.pixelsPerDataElement == model.pixelsPerDataElement
+                && this.dataElementSize == model.dataElementSize
+                && this.dataBitOffset == model.dataBitOffset
+                && this.scanlineStride == model.scanlineStride;
     }
 
     @Override
@@ -231,8 +252,7 @@
 
         int bitnum = dataBitOffset + x * pixelBitStride;
         int elem = data.getElem(y * scanlineStride + bitnum / dataElementSize);
-        int shift = dataElementSize - (bitnum & (dataElementSize - 1)) -
-                pixelBitStride;
+        int shift = dataElementSize - (bitnum & (dataElementSize - 1)) - pixelBitStride;
 
         return (elem >> shift) & bitMask;
     }
@@ -253,15 +273,15 @@
         int size = scanlineStride * height;
 
         switch (dataType) {
-        case DataBuffer.TYPE_BYTE:
-            dataBuffer = new DataBufferByte(size + (dataBitOffset + 7) / 8);
-            break;
-        case DataBuffer.TYPE_USHORT:
-            dataBuffer = new DataBufferUShort(size + (dataBitOffset + 15) / 16);
-            break;
-        case DataBuffer.TYPE_INT:
-            dataBuffer = new DataBufferInt(size + (dataBitOffset + 31) / 32);
-            break;
+            case DataBuffer.TYPE_BYTE:
+                dataBuffer = new DataBufferByte(size + (dataBitOffset + 7) / 8);
+                break;
+            case DataBuffer.TYPE_USHORT:
+                dataBuffer = new DataBufferUShort(size + (dataBitOffset + 15) / 16);
+                break;
+            case DataBuffer.TYPE_INT:
+                dataBuffer = new DataBufferInt(size + (dataBitOffset + 31) / 32);
+                break;
         }
         return dataBuffer;
     }
@@ -269,14 +289,14 @@
     /**
      * Gets the offset of the specified pixel in the data array.
      * 
-     * @param x the X coordinate of the specified pixel.
-     * @param y the Y coordinate of the specified pixel.
-     * 
+     * @param x
+     *            the X coordinate of the specified pixel.
+     * @param y
+     *            the Y coordinate of the specified pixel.
      * @return the offset of the specified pixel.
      */
     public int getOffset(int x, int y) {
-        return y * scanlineStride + (x * pixelBitStride + dataBitOffset) /
-               dataElementSize;
+        return y * scanlineStride + (x * pixelBitStride + dataBitOffset) / dataElementSize;
     }
 
     @Override
@@ -285,11 +305,11 @@
     }
 
     /**
-     * Gets the bit offset in the data element which 
-     * is stored for the specified pixel of a scanline.
+     * Gets the bit offset in the data element which is stored for the specified
+     * pixel of a scanline.
      * 
-     * @param x the pixel.
-     * 
+     * @param x
+     *            the pixel.
      * @return the bit offset of the pixel in the data element.
      */
     public int getBitOffset(int x) {
@@ -298,7 +318,9 @@
 
     @Override
     public int[] getSampleSize() {
-        int sampleSizes[] = { pixelBitStride };
+        int sampleSizes[] = {
+            pixelBitStride
+        };
         return sampleSizes;
     }
 
@@ -396,54 +418,58 @@
     }
 
     /**
-     * This method is used by other methods of this class. The behaviour of
-     * this method depends on the method which has been invoke this one. The
-     * argument methodId is used to choose valid behaviour in a particular case.
-     * If methodId is equal to 1 it means that this method has been invoked by
-     * the setDataElements() method, 2 - means setPixel(), and setSample() in
-     * any other cases.
+     * This method is used by other methods of this class. The behavior of this
+     * method depends on the method which has been invoke this one. The argument
+     * methodId is used to choose valid behavior in a particular case. If
+     * methodId is equal to 1 it means that this method has been invoked by the
+     * setDataElements() method, 2 - means setPixel(), and setSample() in any
+     * other cases.
      * 
-     * @param x the x
-     * @param y the y
-     * @param obj the obj
-     * @param data the data
-     * @param methodId the method id
-     * @param s the s
+     * @param x
+     *            the x.
+     * @param y
+     *            the y.
+     * @param obj
+     *            the obj.
+     * @param data
+     *            the data.
+     * @param methodId
+     *            the method id.
+     * @param s
+     *            the s.
      */
-    private void setSample(final int x, final int y, final Object obj,
-            final DataBuffer data, final int methodId, int s) {
+    private void setSample(final int x, final int y, final Object obj, final DataBuffer data,
+            final int methodId, int s) {
         if ((x < 0) || (y < 0) || (x >= this.width) || (y >= this.height)) {
             // awt.63=Coordinates are not in bounds
-            throw new ArrayIndexOutOfBoundsException(Messages
-                    .getString("awt.63")); //$NON-NLS-1$
+            throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
 
         final int bitnum = dataBitOffset + x * pixelBitStride;
         final int idx = y * scanlineStride + bitnum / dataElementSize;
-        final int shift = dataElementSize - (bitnum & (dataElementSize - 1))
-                - pixelBitStride;
+        final int shift = dataElementSize - (bitnum & (dataElementSize - 1)) - pixelBitStride;
         final int mask = ~(bitMask << shift);
         int elem = data.getElem(idx);
 
         switch (methodId) {
-        case 1: {                        // Invoked from setDataElements()
-            switch (getTransferType()) {
-            case DataBuffer.TYPE_BYTE:
-                s = ((byte[]) obj)[0] & 0xff;
-                break;
-            case DataBuffer.TYPE_USHORT:
-                s = ((short[]) obj)[0] & 0xffff;
-                break;
-            case DataBuffer.TYPE_INT:
-                s = ((int[]) obj)[0];
+            case 1: { // Invoked from setDataElements()
+                switch (getTransferType()) {
+                    case DataBuffer.TYPE_BYTE:
+                        s = ((byte[])obj)[0] & 0xff;
+                        break;
+                    case DataBuffer.TYPE_USHORT:
+                        s = ((short[])obj)[0] & 0xffff;
+                        break;
+                    case DataBuffer.TYPE_INT:
+                        s = ((int[])obj)[0];
+                        break;
+                }
                 break;
             }
-            break;
-        }
-        case 2: {                        // Invoked from setPixel()
-            s = ((int[]) obj)[0];
-            break;
-        }
+            case 2: { // Invoked from setPixel()
+                s = ((int[])obj)[0];
+                break;
+            }
         }
 
         elem &= mask;
@@ -451,4 +477,3 @@
         data.setElem(idx, elem);
     }
 }
-
diff --git a/awt/java/awt/image/PackedColorModel.java b/awt/java/awt/image/PackedColorModel.java
index 7aaefbf..4d1c2e5 100644
--- a/awt/java/awt/image/PackedColorModel.java
+++ b/awt/java/awt/image/PackedColorModel.java
@@ -18,6 +18,7 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.awt.Transparency;
@@ -27,44 +28,57 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Class PackedColorModel represents a color model where the 
- * components are just the red, green, and blue bands, plus an alpha
- * band if alpha is supported.
+ * The class PackedColorModel represents a color model where the components are
+ * just the red, green, and blue bands, plus an alpha band if alpha is
+ * supported.
+ * 
+ * @since Android 1.0
  */
 public abstract class PackedColorModel extends ColorModel {
 
-    /** The component masks. */
+    /**
+     * The component masks.
+     */
     int componentMasks[];
 
-    /** The offsets. */
+    /**
+     * The offsets.
+     */
     int offsets[];
 
-    /** The scales. */
+    /**
+     * The scales.
+     */
     float scales[];
 
     /**
      * Instantiates a new packed color model.
      * 
-     * @param space the color space
-     * @param bits the array of component masks
-     * @param colorMaskArray the array that gives the bitmask corresponding
-     * to each color band (red, green, and blue)
-     * @param alphaMask the bitmask corresponding to the alpha band
-     * @param isAlphaPremultiplied whether the alpha is premultiplied in this color model
-     * @param trans the transparency strategy, @see java.awt.Transparency
-     * @param transferType the transfer type (primitive java type 
-     * to use for the components)
-     * 
-     * @throws IllegalArgumentException if the number of bits in the combined 
-     * bitmasks for the color bands is less than one or greater than 32
+     * @param space
+     *            the color space.
+     * @param bits
+     *            the array of component masks.
+     * @param colorMaskArray
+     *            the array that gives the bitmask corresponding to each color
+     *            band (red, green, and blue).
+     * @param alphaMask
+     *            the bitmask corresponding to the alpha band.
+     * @param isAlphaPremultiplied
+     *            whether the alpha is pre-multiplied in this color model.
+     * @param trans
+     *            the transparency strategy, @see java.awt.Transparency.
+     * @param transferType
+     *            the transfer type (primitive java type to use for the
+     *            components).
+     * @throws IllegalArgumentException
+     *             if the number of bits in the combined bitmasks for the color
+     *             bands is less than one or greater than 32.
      */
-    public PackedColorModel(ColorSpace space, int bits, int colorMaskArray[],
-            int alphaMask, boolean isAlphaPremultiplied, int trans,
-            int transferType) {
+    public PackedColorModel(ColorSpace space, int bits, int colorMaskArray[], int alphaMask,
+            boolean isAlphaPremultiplied, int trans, int transferType) {
 
-        super(bits, createBits(colorMaskArray, alphaMask), space,
-                (alphaMask == 0 ? false : true), isAlphaPremultiplied, trans,
-                validateTransferType(transferType));
+        super(bits, createBits(colorMaskArray, alphaMask), space, (alphaMask == 0 ? false : true),
+                isAlphaPremultiplied, trans, validateTransferType(transferType));
 
         if (pixel_bits < 1 || pixel_bits > 32) {
             // awt.236=The bits is less than 1 or greater than 32
@@ -89,27 +103,34 @@
     /**
      * Instantiates a new packed color model.
      * 
-     * @param space the color space
-     * @param bits the array of component masks
-     * @param rmask the bitmask corresponding to the red band
-     * @param gmask the bitmask corresponding to the green band
-     * @param bmask the bitmask corresponding to the blue band
-     * @param amask the bitmask corresponding to the alpha band
-     * @param isAlphaPremultiplied whether the alpha is premultiplied in this color model
-     * @param trans the transparency strategy, @see java.awt.Transparency
-     * @param transferType the transfer type (primitive java type 
-     * to use for the components)
-     * 
-     * @throws IllegalArgumentException if the number of bits in the combined 
-     * bitmasks for the color bands is less than one or greater than 32
+     * @param space
+     *            the color space.
+     * @param bits
+     *            the array of component masks.
+     * @param rmask
+     *            the bitmask corresponding to the red band.
+     * @param gmask
+     *            the bitmask corresponding to the green band.
+     * @param bmask
+     *            the bitmask corresponding to the blue band.
+     * @param amask
+     *            the bitmask corresponding to the alpha band.
+     * @param isAlphaPremultiplied
+     *            whether the alpha is pre-multiplied in this color model.
+     * @param trans
+     *            the transparency strategy, @see java.awt.Transparency.
+     * @param transferType
+     *            the transfer type (primitive java type to use for the
+     *            components).
+     * @throws IllegalArgumentException
+     *             if the number of bits in the combined bitmasks for the color
+     *             bands is less than one or greater than 32.
      */
-    public PackedColorModel(ColorSpace space, int bits, int rmask, int gmask,
-            int bmask, int amask, boolean isAlphaPremultiplied, int trans,
-            int transferType) {
+    public PackedColorModel(ColorSpace space, int bits, int rmask, int gmask, int bmask, int amask,
+            boolean isAlphaPremultiplied, int trans, int transferType) {
 
-        super(bits, createBits(rmask, gmask, bmask, amask), space,
-                (amask == 0 ? false : true), isAlphaPremultiplied, trans,
-                validateTransferType(transferType));
+        super(bits, createBits(rmask, gmask, bmask, amask), space, (amask == 0 ? false : true),
+                isAlphaPremultiplied, trans, validateTransferType(transferType));
 
         if (pixel_bits < 1 || pixel_bits > 32) {
             // awt.236=The bits is less than 1 or greater than 32
@@ -123,7 +144,8 @@
 
         for (int i = 0; i < numColorComponents; i++) {
             if (cs.getMinValue(i) != 0.0f || cs.getMaxValue(i) != 1.0f) {
-                // awt.23A=The min/max normalized component values are not 0.0/1.0
+                // awt.23A=The min/max normalized component values are not
+                // 0.0/1.0
                 throw new IllegalArgumentException(Messages.getString("awt.23A")); //$NON-NLS-1$
             }
         }
@@ -144,7 +166,7 @@
 
     @Override
     public WritableRaster getAlphaRaster(WritableRaster raster) {
-        if(!hasAlpha) {
+        if (!hasAlpha) {
             return null;
         }
 
@@ -165,18 +187,16 @@
         if (!(obj instanceof PackedColorModel)) {
             return false;
         }
-        PackedColorModel cm = (PackedColorModel) obj;
+        PackedColorModel cm = (PackedColorModel)obj;
 
-        return (pixel_bits == cm.getPixelSize() &&
-                transferType == cm.getTransferType() &&
-                cs.getType() == cm.getColorSpace().getType() &&
-                hasAlpha == cm.hasAlpha() &&
-                isAlphaPremultiplied == cm.isAlphaPremultiplied() &&
-                transparency == cm.getTransparency() &&
-                numColorComponents == cm.getNumColorComponents()&&
-                numComponents == cm.getNumComponents() &&
-                Arrays.equals(bits, cm.getComponentSize()) &&
-                Arrays.equals(componentMasks, cm.getMasks()));
+        return (pixel_bits == cm.getPixelSize() && transferType == cm.getTransferType()
+                && cs.getType() == cm.getColorSpace().getType() && hasAlpha == cm.hasAlpha()
+                && isAlphaPremultiplied == cm.isAlphaPremultiplied()
+                && transparency == cm.getTransparency()
+                && numColorComponents == cm.getNumColorComponents()
+                && numComponents == cm.getNumComponents()
+                && Arrays.equals(bits, cm.getComponentSize()) && Arrays.equals(componentMasks, cm
+                .getMasks()));
     }
 
     @Override
@@ -187,25 +207,23 @@
         if (!(sm instanceof SinglePixelPackedSampleModel)) {
             return false;
         }
-        SinglePixelPackedSampleModel esm = (SinglePixelPackedSampleModel) sm;
+        SinglePixelPackedSampleModel esm = (SinglePixelPackedSampleModel)sm;
 
-        return ((esm.getNumBands() == numComponents) &&
-                (esm.getTransferType() == transferType) &&
-                Arrays.equals(esm.getBitMasks(), componentMasks));
+        return ((esm.getNumBands() == numComponents) && (esm.getTransferType() == transferType) && Arrays
+                .equals(esm.getBitMasks(), componentMasks));
     }
 
     @Override
     public SampleModel createCompatibleSampleModel(int w, int h) {
-        return new SinglePixelPackedSampleModel(transferType, w, h,
-                componentMasks);
+        return new SinglePixelPackedSampleModel(transferType, w, h, componentMasks);
     }
 
     /**
      * Gets the bitmask corresponding to the specified color component.
      * 
-     * @param index the index of the desired color
-     * 
-     * @return the mask
+     * @param index
+     *            the index of the desired color.
+     * @return the mask.
      */
     public final int getMask(int index) {
         return componentMasks[index];
@@ -214,7 +232,7 @@
     /**
      * Gets the bitmasks of the components.
      * 
-     * @return the masks
+     * @return the masks.
      */
     public final int[] getMasks() {
         return (componentMasks.clone());
@@ -223,10 +241,11 @@
     /**
      * Creates the bits.
      * 
-     * @param colorMaskArray the color mask array
-     * @param alphaMask the alpha mask
-     * 
-     * @return the int[]
+     * @param colorMaskArray
+     *            the color mask array.
+     * @param alphaMask
+     *            the alpha mask.
+     * @return the int[].
      */
     private static int[] createBits(int colorMaskArray[], int alphaMask) {
         int bits[];
@@ -262,15 +281,17 @@
     /**
      * Creates the bits.
      * 
-     * @param rmask the rmask
-     * @param gmask the gmask
-     * @param bmask the bmask
-     * @param amask the amask
-     * 
-     * @return the int[]
+     * @param rmask
+     *            the rmask.
+     * @param gmask
+     *            the gmask.
+     * @param bmask
+     *            the bmask.
+     * @param amask
+     *            the amask.
+     * @return the int[].
      */
-    private static int[] createBits(int rmask, int gmask, int bmask,
-            int amask) {
+    private static int[] createBits(int rmask, int gmask, int bmask, int amask) {
 
         int numComp;
         if (amask == 0) {
@@ -312,9 +333,9 @@
     /**
      * Count comp bits.
      * 
-     * @param compMask the comp mask
-     * 
-     * @return the int
+     * @param compMask
+     *            the comp mask.
+     * @return the int.
      */
     private static int countCompBits(int compMask) {
         int bits = 0;
@@ -340,20 +361,19 @@
     /**
      * Validate transfer type.
      * 
-     * @param transferType the transfer type
-     * 
-     * @return the int
+     * @param transferType
+     *            the transfer type.
+     * @return the int.
      */
     private static int validateTransferType(int transferType) {
-        if (transferType != DataBuffer.TYPE_BYTE &&
-                transferType != DataBuffer.TYPE_USHORT &&
-                transferType != DataBuffer.TYPE_INT) {
+        if (transferType != DataBuffer.TYPE_BYTE && transferType != DataBuffer.TYPE_USHORT
+                && transferType != DataBuffer.TYPE_INT) {
             // awt.240=The transferType not is one of DataBuffer.TYPE_BYTE,
-            //          DataBuffer.TYPE_USHORT or DataBuffer.TYPE_INT
+            // DataBuffer.TYPE_USHORT or DataBuffer.TYPE_INT
             throw new IllegalArgumentException(Messages.getString("awt.240")); //$NON-NLS-1$
         }
         return transferType;
-}
+    }
 
     /**
      * Parses the components.
@@ -380,4 +400,3 @@
     }
 
 }
-
diff --git a/awt/java/awt/image/PixelInterleavedSampleModel.java b/awt/java/awt/image/PixelInterleavedSampleModel.java
index e41473e..8e646f8 100644
--- a/awt/java/awt/image/PixelInterleavedSampleModel.java
+++ b/awt/java/awt/image/PixelInterleavedSampleModel.java
@@ -18,30 +18,39 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The PixelInterleavedSampleModel class represents image data 
- * as represented as interleaved pixels and for which each sample of 
- * a pixel takes one data element of the DataBuffer.
+ * The PixelInterleavedSampleModel class represents image data as represented as
+ * interleaved pixels and for which each sample of a pixel takes one data
+ * element of the DataBuffer.
+ * 
+ * @since Android 1.0
  */
 public class PixelInterleavedSampleModel extends ComponentSampleModel {
 
     /**
-     * Instantiates a new PixelInterleavedSampleModel with the 
-     * specified parameters.
+     * Instantiates a new PixelInterleavedSampleModel with the specified
+     * parameters.
      * 
-     * @param dataType the data type of the samples.
-     * @param w the width of the image data.
-     * @param h the height of the image data.
-     * @param pixelStride the pixel stride of the image data.
-     * @param scanlineStride the scanline stride of the of the image data.
-     * @param bandOffsets the array of the band offsets.
+     * @param dataType
+     *            the data type of the samples.
+     * @param w
+     *            the width of the image data.
+     * @param h
+     *            the height of the image data.
+     * @param pixelStride
+     *            the pixel stride of the image data.
+     * @param scanlineStride
+     *            the scanline stride of the of the image data.
+     * @param bandOffsets
+     *            the array of the band offsets.
      */
-    public PixelInterleavedSampleModel(int dataType, int w, int h,
-            int pixelStride, int scanlineStride, int bandOffsets[]) {
+    public PixelInterleavedSampleModel(int dataType, int w, int h, int pixelStride,
+            int scanlineStride, int bandOffsets[]) {
 
         super(dataType, w, h, pixelStride, scanlineStride, bandOffsets);
 
@@ -59,7 +68,8 @@
         maxOffset -= minOffset;
 
         if (maxOffset > scanlineStride) {
-            // awt.241=Any offset between bands is greater than the Scanline stride
+            // awt.241=Any offset between bands is greater than the Scanline
+            // stride
             throw new IllegalArgumentException(Messages.getString("awt.241")); //$NON-NLS-1$
         }
 
@@ -69,7 +79,8 @@
         }
 
         if (pixelStride * w > scanlineStride) {
-            // awt.243=Product of Pixel stride and w is greater than Scanline stride
+            // awt.243=Product of Pixel stride and w is greater than Scanline
+            // stride
             throw new IllegalArgumentException(Messages.getString("awt.243")); //$NON-NLS-1$
         }
 
@@ -82,8 +93,8 @@
             newOffsets[i] = bandOffsets[bands[i]];
         }
 
-        return new PixelInterleavedSampleModel(dataType, width, height,
-                pixelStride, scanlineStride, newOffsets);
+        return new PixelInterleavedSampleModel(dataType, width, height, pixelStride,
+                scanlineStride, newOffsets);
     }
 
     @Override
@@ -106,8 +117,8 @@
             newOffsets = bandOffsets;
         }
 
-        return new PixelInterleavedSampleModel(dataType, w, h, pixelStride,
-                pixelStride * w, newOffsets);
+        return new PixelInterleavedSampleModel(dataType, w, h, pixelStride, pixelStride * w,
+                newOffsets);
     }
 
     @Override
@@ -121,4 +132,3 @@
     }
 
 }
-
diff --git a/awt/java/awt/image/RGBImageFilter.java b/awt/java/awt/image/RGBImageFilter.java
index 9a76997..f5fe5d9 100644
--- a/awt/java/awt/image/RGBImageFilter.java
+++ b/awt/java/awt/image/RGBImageFilter.java
@@ -18,46 +18,48 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
-
 /**
- * The RGBImageFilter class represents a filter which modifies
- * pixels of an image in the default RGB ColorModel. 
+ * The RGBImageFilter class represents a filter which modifies pixels of an
+ * image in the default RGB ColorModel.
+ * 
+ * @since Android 1.0
  */
 public abstract class RGBImageFilter extends ImageFilter {
 
-    /** 
-     * The origmodel is the ColorModel to be replaced by newmodel 
-     * when substituteColorModel is called.
+    /**
+     * The original model is the ColorModel to be replaced by the new model when
+     * substituteColorModel is called.
      */
     protected ColorModel origmodel;
 
-    /** 
-     * The newmodel is the ColorModel with which to replace origmodel 
-     * when substituteColorModel is called. 
+    /**
+     * The new model is the ColorModel with which to replace the original model
+     * when substituteColorModel is called.
      */
     protected ColorModel newmodel;
 
-    /** 
-     * The canFilterIndexColorModel indicates if it is 
-     * acceptable to apply the color filtering of the filterRGB 
-     * method to the color table entries of an IndexColorModel 
-     * object.
-     * */
+    /**
+     * The canFilterIndexColorModel indicates if it is acceptable to apply the
+     * color filtering of the filterRGB method to the color table entries of an
+     * IndexColorModel object.
+     */
     protected boolean canFilterIndexColorModel;
 
     /**
      * Instantiates a new RGBImageFilter.
      */
-    public RGBImageFilter() {}
+    public RGBImageFilter() {
+    }
 
     /**
-     * Filters an IndexColorModel object by calling filterRGB function for
-     * each entry of IndexColorModel.
+     * Filters an IndexColorModel object by calling filterRGB function for each
+     * entry of IndexColorModel.
      * 
-     * @param icm the IndexColorModel to be filtered.
-     * 
+     * @param icm
+     *            the IndexColorModel to be filtered.
      * @return the IndexColorModel.
      */
     public IndexColorModel filterIndexColorModel(IndexColorModel icm) {
@@ -69,28 +71,30 @@
         icm.getRGBs(colorMap);
         int trans = -1;
         boolean hasAlpha = false;
-        for(int i = 0; i < mapSize; i++){
+        for (int i = 0; i < mapSize; i++) {
             filteredColorMap[i] = filterRGB(-1, -1, colorMap[i]);
             int alpha = filteredColorMap[i] >>> 24;
-            if(alpha != 0xff){
-                if(!hasAlpha) {
+            if (alpha != 0xff) {
+                if (!hasAlpha) {
                     hasAlpha = true;
                 }
-                if(alpha == 0 && trans < 0) {
+                if (alpha == 0 && trans < 0) {
                     trans = i;
                 }
             }
         }
 
-        return new IndexColorModel(bits, mapSize, filteredColorMap, 0,
-                hasAlpha, trans, transferType);
+        return new IndexColorModel(bits, mapSize, filteredColorMap, 0, hasAlpha, trans,
+                transferType);
     }
 
     /**
      * Replaces the original color model and the new one.
      * 
-     * @param oldcm the old ColorModel.
-     * @param newcm the new ColorModel.
+     * @param oldcm
+     *            the old ColorModel.
+     * @param newcm
+     *            the new ColorModel.
      */
     public void substituteColorModel(ColorModel oldcm, ColorModel newcm) {
         origmodel = oldcm;
@@ -99,29 +103,27 @@
 
     @Override
     public void setColorModel(ColorModel model) {
-        if(model instanceof IndexColorModel &&
-                canFilterIndexColorModel){
-            IndexColorModel icm = (IndexColorModel) model;
+        if (model instanceof IndexColorModel && canFilterIndexColorModel) {
+            IndexColorModel icm = (IndexColorModel)model;
             ColorModel filteredModel = filterIndexColorModel(icm);
             substituteColorModel(model, filteredModel);
             consumer.setColorModel(filteredModel);
-        }else{
+        } else {
             consumer.setColorModel(ColorModel.getRGBdefault());
         }
     }
 
     @Override
-    public void setPixels(int x, int y, int w, int h, ColorModel model, 
-            int[] pixels, int off, int scansize) {
-        
-        if(model == null || model == origmodel){
+    public void setPixels(int x, int y, int w, int h, ColorModel model, int[] pixels, int off,
+            int scansize) {
+
+        if (model == null || model == origmodel) {
             consumer.setPixels(x, y, w, h, newmodel, pixels, off, scansize);
-        }else{
+        } else {
             int rgbPixels[] = new int[w];
-            for(int sy = y, pixelsOff = off; sy < y + h; 
-                sy++, pixelsOff += scansize){
-                
-                for(int sx = x, idx = 0; sx < x + w; sx++, idx++){
+            for (int sy = y, pixelsOff = off; sy < y + h; sy++, pixelsOff += scansize) {
+
+                for (int sx = x, idx = 0; sx < x + w; sx++, idx++) {
                     rgbPixels[idx] = model.getRGB(pixels[pixelsOff + idx]);
                 }
                 filterRGBPixels(x, sy, w, 1, rgbPixels, 0, w);
@@ -130,19 +132,17 @@
     }
 
     @Override
-    public void setPixels(int x, int y, int w, int h, ColorModel model, 
-            byte[] pixels, int off, int scansize) {
-        
-        if(model == null || model == origmodel){
+    public void setPixels(int x, int y, int w, int h, ColorModel model, byte[] pixels, int off,
+            int scansize) {
+
+        if (model == null || model == origmodel) {
             consumer.setPixels(x, y, w, h, newmodel, pixels, off, scansize);
-        }else{
+        } else {
             int rgbPixels[] = new int[w];
-            for(int sy = y, pixelsOff = off; sy < y + h; 
-                sy++, pixelsOff += scansize){
-                
-                for(int sx = x, idx = 0; sx < x + w; sx++, idx++){
-                    rgbPixels[idx] = 
-                        model.getRGB(pixels[pixelsOff + idx] & 0xff);
+            for (int sy = y, pixelsOff = off; sy < y + h; sy++, pixelsOff += scansize) {
+
+                for (int sx = x, idx = 0; sx < x + w; sx++, idx++) {
+                    rgbPixels[idx] = model.getRGB(pixels[pixelsOff + idx] & 0xff);
                 }
                 filterRGBPixels(x, sy, w, 1, rgbPixels, 0, w);
             }
@@ -150,41 +150,46 @@
     }
 
     /**
-     * Filters a region of pixels in the default RGB ColorModel 
-     * by calling the filterRGB method for them.
+     * Filters a region of pixels in the default RGB ColorModel by calling the
+     * filterRGB method for them.
      * 
-     * @param x the X coordinate of region.
-     * @param y the Y coordinate of region.
-     * @param w the width ofregion.
-     * @param h the height of region.
-     * @param pixels the pixels array.
-     * @param off the offset of array.
-     * @param scansize the distance between rows of pixels in the array.
+     * @param x
+     *            the X coordinate of region.
+     * @param y
+     *            the Y coordinate of region.
+     * @param w
+     *            the width of region.
+     * @param h
+     *            the height of region.
+     * @param pixels
+     *            the pixels array.
+     * @param off
+     *            the offset of array.
+     * @param scansize
+     *            the distance between rows of pixels in the array.
      */
-    public void filterRGBPixels(int x, int y, int w, int h, 
-            int[] pixels, int off, int scansize) {
-        
-        for(int sy = y, lineOff = off; sy < y + h; sy++, lineOff += scansize){
-            for(int sx = x, idx = 0; sx < x + w; sx++, idx++){
-                pixels[lineOff + idx] = 
-                    filterRGB(sx, sy, pixels[lineOff + idx]);
+    public void filterRGBPixels(int x, int y, int w, int h, int[] pixels, int off, int scansize) {
+
+        for (int sy = y, lineOff = off; sy < y + h; sy++, lineOff += scansize) {
+            for (int sx = x, idx = 0; sx < x + w; sx++, idx++) {
+                pixels[lineOff + idx] = filterRGB(sx, sy, pixels[lineOff + idx]);
             }
         }
-        consumer.setPixels(x, y, w, h, ColorModel.getRGBdefault(), 
-                pixels, off, scansize);
+        consumer.setPixels(x, y, w, h, ColorModel.getRGBdefault(), pixels, off, scansize);
     }
 
     /**
-     * Coverts a single input pixel in the default RGB ColorModel 
-     * to a single output pixel.
+     * Converts a single input pixel in the default RGB ColorModel to a single
+     * output pixel.
      * 
-     * @param x the X pixel's coordinate.
-     * @param y the Y pixel's coordinate.
-     * @param rgb a pixel in the default RGB color model.
-     * 
+     * @param x
+     *            the X pixel's coordinate.
+     * @param y
+     *            the Y pixel's coordinate.
+     * @param rgb
+     *            a pixel in the default RGB color model.
      * @return a filtered pixel in the default RGB color model.
      */
     public abstract int filterRGB(int x, int y, int rgb);
 
 }
-
diff --git a/awt/java/awt/image/Raster.java b/awt/java/awt/image/Raster.java
index 4b2426e..6749fde 100644
--- a/awt/java/awt/image/Raster.java
+++ b/awt/java/awt/image/Raster.java
@@ -18,6 +18,7 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.awt.Point;
@@ -27,70 +28,95 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Raster class represents a rectangular area of pixels.
- * This class is defined by DataBuffer and SampleModel objects. 
- * The DataBuffer object stores sample values and DSampleModel defines 
- * the location of sample in this DataBuffer. 
+ * The Raster class represents a rectangular area of pixels. This class is
+ * defined by DataBuffer and SampleModel objects. The DataBuffer object stores
+ * sample values and DSampleModel defines the location of sample in this
+ * DataBuffer.
+ * 
+ * @since Android 1.0
  */
 public class Raster {
 
-    /** The DataBuffer of this Raster. */
+    /**
+     * The DataBuffer of this Raster.
+     */
     protected DataBuffer dataBuffer;
 
-    /** The height of this Raster. */
+    /**
+     * The height of this Raster.
+     */
     protected int height;
 
-    /** The X coordinate of the upper left pixel in this Raster. */
+    /**
+     * The X coordinate of the upper left pixel in this Raster.
+     */
     protected int minX;
 
-    /** The Y coordinate of the upper left pixel in this Raster. */
+    /**
+     * The Y coordinate of the upper left pixel in this Raster.
+     */
     protected int minY;
 
-    /** The number of bands in this Raster. */
+    /**
+     * The number of bands in this Raster.
+     */
     protected int numBands;
 
-    /** The number of data elements. */
+    /**
+     * The number of data elements.
+     */
     protected int numDataElements;
 
-    /** The parent of this Raster. */
+    /**
+     * The parent of this Raster.
+     */
     protected Raster parent;
 
-    /** The SampleModel of this Raster. */
+    /**
+     * The SampleModel of this Raster.
+     */
     protected SampleModel sampleModel;
 
-    /** 
-     * The X translation from the coordinate space of the 
-     * SampleModel of this Raster.
+    /**
+     * The X translation from the coordinate space of the SampleModel of this
+     * Raster.
      */
     protected int sampleModelTranslateX;
 
-    /** 
-     * The Y translation from the coordinate space of the 
-     * SampleModel of this Raster.
+    /**
+     * The Y translation from the coordinate space of the SampleModel of this
+     * Raster.
      */
     protected int sampleModelTranslateY;
 
-    /** The width of this Raster. */
+    /**
+     * The width of this Raster.
+     */
     protected int width;
 
     /**
-     * Creates a Raster object with a BandedSampleModel and the specified 
+     * Creates a Raster object with a BandedSampleModel and the specified
      * DataBuffer. The number of bands is defined by the length of bandOffsets
      * or bankIndices arrays.
      * 
-     * @param dataBuffer the specified DataBuffer.
-     * @param w the width of the image data.
-     * @param h the height of the image data. 
-     * @param bankIndices the bank indices of bands.
-     * @param bandOffsets the band offsets of bands.
-     * @param location the location which defines the upper left corner 
-     * of Raster.
-     * 
+     * @param dataBuffer
+     *            the specified DataBuffer.
+     * @param w
+     *            the width of the image data.
+     * @param h
+     *            the height of the image data.
+     * @param scanlineStride
+     *            the scanline stride of the image data.
+     * @param bankIndices
+     *            the bank indices of bands.
+     * @param bandOffsets
+     *            the band offsets of bands.
+     * @param location
+     *            the location which defines the upper left corner of Raster.
      * @return the WritableRaster object.
      */
-    public static WritableRaster createBandedRaster(DataBuffer dataBuffer,
-            int w, int h, int scanlineStride, int bankIndices[],
-            int bandOffsets[], Point location) {
+    public static WritableRaster createBandedRaster(DataBuffer dataBuffer, int w, int h,
+            int scanlineStride, int bankIndices[], int bandOffsets[], Point location) {
 
         if (w <= 0 || h <= 0) {
             // awt.22E=w or h is less than or equal to zero
@@ -101,9 +127,9 @@
             location = new Point(0, 0);
         }
 
-        if ((long) location.x + w > Integer.MAX_VALUE
-                || (long) location.y + h > Integer.MAX_VALUE) {
-            // awt.276=location.x + w or location.y + h results in integer overflow
+        if ((long)location.x + w > Integer.MAX_VALUE || (long)location.y + h > Integer.MAX_VALUE) {
+            // awt.276=location.x + w or location.y + h results in integer
+            // overflow
             throw new RasterFormatException(Messages.getString("awt.276")); //$NON-NLS-1$
         }
 
@@ -119,39 +145,43 @@
 
         int dataType = dataBuffer.getDataType();
 
-        if (dataType != DataBuffer.TYPE_BYTE
-                && dataType != DataBuffer.TYPE_USHORT
+        if (dataType != DataBuffer.TYPE_BYTE && dataType != DataBuffer.TYPE_USHORT
                 && dataType != DataBuffer.TYPE_INT) {
             // awt.230=dataType is not one of the supported data types
             throw new IllegalArgumentException(Messages.getString("awt.230")); //$NON-NLS-1$
         }
 
-        BandedSampleModel sampleModel = new BandedSampleModel(dataType, w, h,
-                scanlineStride, bankIndices, bandOffsets);
+        BandedSampleModel sampleModel = new BandedSampleModel(dataType, w, h, scanlineStride,
+                bankIndices, bandOffsets);
 
         return new OrdinaryWritableRaster(sampleModel, dataBuffer, location);
     }
 
     /**
-     * Creates a Raster object with a BandedSampleModel and the specified
-     * data type. The Data type can be one of the following values:
-     * TYPE_BYTE, TYPE_USHORT, or TYPE_INT. 
+     * Creates a Raster object with a BandedSampleModel and the specified data
+     * type. The Data type can be one of the following values: TYPE_BYTE,
+     * TYPE_USHORT, or TYPE_INT.
      * 
-     * @param dataType the data type of the samples:
-     * TYPE_BYTE, TYPE_USHORT, or TYPE_INT. 
-     * @param w the width of the image data.
-     * @param h the height of the image data. 
-     * @param scanlineStride the scanline stride of the image data.
-     * @param bankIndices the bank indices of bands.
-     * @param bandOffsets the band offsets of bands.
-     * @param location the location which defines the upper left corner 
-     * of the Raster.
-     * 
+     * @param dataType
+     *            the data type of the samples: TYPE_BYTE, TYPE_USHORT, or
+     *            TYPE_INT.
+     * @param w
+     *            the width of the image data.
+     * @param h
+     *            the height of the image data.
+     * @param scanlineStride
+     *            the scanline stride of the image data.
+     * @param bankIndices
+     *            the bank indices of bands.
+     * @param bandOffsets
+     *            the band offsets of bands.
+     * @param location
+     *            the location which defines the upper left corner of the
+     *            Raster.
      * @return the WritableRaster object.
      */
-    public static WritableRaster createBandedRaster(int dataType, int w, int h,
-            int scanlineStride, int bankIndices[], int bandOffsets[],
-            Point location) {
+    public static WritableRaster createBandedRaster(int dataType, int w, int h, int scanlineStride,
+            int bankIndices[], int bandOffsets[], Point location) {
 
         if (w <= 0 || h <= 0) {
             // awt.22E=w or h is less than or equal to zero
@@ -162,9 +192,9 @@
             location = new Point(0, 0);
         }
 
-        if ((long) location.x + w > Integer.MAX_VALUE
-                || (long) location.y + h > Integer.MAX_VALUE) {
-            // awt.276=location.x + w or location.y + h results in integer overflow
+        if ((long)location.x + w > Integer.MAX_VALUE || (long)location.y + h > Integer.MAX_VALUE) {
+            // awt.276=location.x + w or location.y + h results in integer
+            // overflow
             throw new RasterFormatException(Messages.getString("awt.276")); //$NON-NLS-1$
         }
 
@@ -173,8 +203,7 @@
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.277")); //$NON-NLS-1$
         }
 
-        if (dataType != DataBuffer.TYPE_BYTE
-                && dataType != DataBuffer.TYPE_USHORT
+        if (dataType != DataBuffer.TYPE_BYTE && dataType != DataBuffer.TYPE_USHORT
                 && dataType != DataBuffer.TYPE_INT) {
             // awt.230=dataType is not one of the supported data types
             throw new IllegalArgumentException(Messages.getString("awt.230")); //$NON-NLS-1$
@@ -198,37 +227,40 @@
         DataBuffer data = null;
 
         switch (dataType) {
-        case DataBuffer.TYPE_BYTE:
-            data = new DataBufferByte(dataSize, numBanks);
-            break;
-        case DataBuffer.TYPE_USHORT:
-            data = new DataBufferUShort(dataSize, numBanks);
-            break;
-        case DataBuffer.TYPE_INT:
-            data = new DataBufferInt(dataSize, numBanks);
-            break;
+            case DataBuffer.TYPE_BYTE:
+                data = new DataBufferByte(dataSize, numBanks);
+                break;
+            case DataBuffer.TYPE_USHORT:
+                data = new DataBufferUShort(dataSize, numBanks);
+                break;
+            case DataBuffer.TYPE_INT:
+                data = new DataBufferInt(dataSize, numBanks);
+                break;
         }
-        return createBandedRaster(data, w, h, scanlineStride, bankIndices,
-                bandOffsets, location);
+        return createBandedRaster(data, w, h, scanlineStride, bankIndices, bandOffsets, location);
     }
 
     /**
-     * Creates a Raster object with a BandedSampleModel and the specified
-     * data type. The Data type can be one of the following values:
-     * TYPE_BYTE, TYPE_USHORT, or TYPE_INT. 
+     * Creates a Raster object with a BandedSampleModel and the specified data
+     * type. The Data type can be one of the following values: TYPE_BYTE,
+     * TYPE_USHORT, or TYPE_INT.
      * 
-     * @param dataType the data type of the samples:
-     * TYPE_BYTE, TYPE_USHORT, or TYPE_INT. 
-     * @param w the width of the image data.
-     * @param h the height of the image data. 
-     * @param bands the number of bands.
-     * @param location the location which defines the upper left corner 
-     * of the Raster.
-     * 
+     * @param dataType
+     *            the data type of the samples: TYPE_BYTE, TYPE_USHORT, or
+     *            TYPE_INT.
+     * @param w
+     *            the width of the image data.
+     * @param h
+     *            the height of the image data.
+     * @param bands
+     *            the number of bands.
+     * @param location
+     *            the location which defines the upper left corner of the
+     *            Raster.
      * @return the WritableRaster object.
      */
-    public static WritableRaster createBandedRaster(int dataType, int w, int h,
-            int bands, Point location) {
+    public static WritableRaster createBandedRaster(int dataType, int w, int h, int bands,
+            Point location) {
 
         if (w <= 0 || h <= 0) {
             // awt.22E=w or h is less than or equal to zero
@@ -239,9 +271,9 @@
             location = new Point(0, 0);
         }
 
-        if ((long) location.x + w > Integer.MAX_VALUE
-                || (long) location.y + h > Integer.MAX_VALUE) {
-            // awt.276=location.x + w or location.y + h results in integer overflow
+        if ((long)location.x + w > Integer.MAX_VALUE || (long)location.y + h > Integer.MAX_VALUE) {
+            // awt.276=location.x + w or location.y + h results in integer
+            // overflow
             throw new RasterFormatException(Messages.getString("awt.276")); //$NON-NLS-1$
         }
 
@@ -257,28 +289,32 @@
             bandOffsets[i] = 0;
             bankIndices[i] = i;
         }
-        return createBandedRaster(dataType, w, h, w, bankIndices, bandOffsets,
-                location);
+        return createBandedRaster(dataType, w, h, w, bankIndices, bandOffsets, location);
     }
 
     /**
-     * Creates a Raster object with a PixelInterleavedSampleModel 
-     * and the specified DataBuffer. 
+     * Creates a Raster object with a PixelInterleavedSampleModel and the
+     * specified DataBuffer.
      * 
-     * @param dataBuffer the DataBuffer.
-     * @param w the width of image data.
-     * @param h the height of image data.
-     * @param scanlineStride the scanline stride of the image data.
-     * @param pixelStride the pixel stride of image data.
-     * @param bandOffsets the band offsets of bands.
-     * @param location the location which defines the upper left corner 
-     * of the Raster.
-     * 
+     * @param dataBuffer
+     *            the DataBuffer.
+     * @param w
+     *            the width of image data.
+     * @param h
+     *            the height of image data.
+     * @param scanlineStride
+     *            the scanline stride of the image data.
+     * @param pixelStride
+     *            the pixel stride of image data.
+     * @param bandOffsets
+     *            the band offsets of bands.
+     * @param location
+     *            the location which defines the upper left corner of the
+     *            Raster.
      * @return the WritableRaster object.
      */
-    public static WritableRaster createInterleavedRaster(DataBuffer dataBuffer,
-            int w, int h, int scanlineStride, int pixelStride,
-            int bandOffsets[], Point location) {
+    public static WritableRaster createInterleavedRaster(DataBuffer dataBuffer, int w, int h,
+            int scanlineStride, int pixelStride, int bandOffsets[], Point location) {
 
         if (w <= 0 || h <= 0) {
             // awt.22E=w or h is less than or equal to zero
@@ -289,9 +325,9 @@
             location = new Point(0, 0);
         }
 
-        if ((long) location.x + w > Integer.MAX_VALUE
-                || (long) location.y + h > Integer.MAX_VALUE) {
-            // awt.276=location.x + w or location.y + h results in integer overflow
+        if ((long)location.x + w > Integer.MAX_VALUE || (long)location.y + h > Integer.MAX_VALUE) {
+            // awt.276=location.x + w or location.y + h results in integer
+            // overflow
             throw new RasterFormatException(Messages.getString("awt.276")); //$NON-NLS-1$
         }
 
@@ -301,8 +337,7 @@
         }
 
         int dataType = dataBuffer.getDataType();
-        if (dataType != DataBuffer.TYPE_BYTE
-                && dataType != DataBuffer.TYPE_USHORT) {
+        if (dataType != DataBuffer.TYPE_BYTE && dataType != DataBuffer.TYPE_USHORT) {
             // awt.230=dataType is not one of the supported data types
             throw new IllegalArgumentException(Messages.getString("awt.230")); //$NON-NLS-1$
         }
@@ -317,35 +352,38 @@
             throw new NullPointerException(Messages.getString("awt.27B")); //$NON-NLS-1$
         }
 
-        PixelInterleavedSampleModel sampleModel = 
-            new PixelInterleavedSampleModel(dataType, w, h, 
-                    pixelStride, scanlineStride, bandOffsets);
+        PixelInterleavedSampleModel sampleModel = new PixelInterleavedSampleModel(dataType, w, h,
+                pixelStride, scanlineStride, bandOffsets);
 
         return new OrdinaryWritableRaster(sampleModel, dataBuffer, location);
 
     }
 
     /**
-     * Creates a Raster object with a PixelInterleavedSampleModel 
-     * and the specified data type. The Data type can be one of the 
-     * following values:
-     * TYPE_BYTE, TYPE_USHORT, or TYPE_INT. 
+     * Creates a Raster object with a PixelInterleavedSampleModel and the
+     * specified data type. The Data type can be one of the following values:
+     * TYPE_BYTE, TYPE_USHORT, or TYPE_INT.
      * 
-     * @param dataType the data type of the samples:
-     * TYPE_BYTE, TYPE_USHORT, or TYPE_INT. 
-     * @param w the width of image data.
-     * @param h the height of image data.
-     * @param scanlineStride the scanline stride of the image data.
-     * @param pixelStride the pixel stride of image data.
-     * @param bandOffsets the band offsets of bands.
-     * @param location the location which defines the upper left corner 
-     * of the Raster.
-     * 
+     * @param dataType
+     *            the data type of the samples: TYPE_BYTE, TYPE_USHORT, or
+     *            TYPE_INT.
+     * @param w
+     *            the width of image data.
+     * @param h
+     *            the height of image data.
+     * @param scanlineStride
+     *            the scanline stride of the image data.
+     * @param pixelStride
+     *            the pixel stride of image data.
+     * @param bandOffsets
+     *            the band offsets of bands.
+     * @param location
+     *            the location which defines the upper left corner of the
+     *            Raster.
      * @return the WritableRaster object.
      */
-    public static WritableRaster createInterleavedRaster(int dataType, int w,
-            int h, int scanlineStride, int pixelStride, int bandOffsets[],
-            Point location) {
+    public static WritableRaster createInterleavedRaster(int dataType, int w, int h,
+            int scanlineStride, int pixelStride, int bandOffsets[], Point location) {
 
         if (w <= 0 || h <= 0) {
             // awt.22E=w or h is less than or equal to zero
@@ -356,14 +394,13 @@
             location = new Point(0, 0);
         }
 
-        if ((long) location.x + w > Integer.MAX_VALUE
-                || (long) location.y + h > Integer.MAX_VALUE) {
-            // awt.276=location.x + w or location.y + h results in integer overflow
+        if ((long)location.x + w > Integer.MAX_VALUE || (long)location.y + h > Integer.MAX_VALUE) {
+            // awt.276=location.x + w or location.y + h results in integer
+            // overflow
             throw new RasterFormatException(Messages.getString("awt.276")); //$NON-NLS-1$
         }
 
-        if (dataType != DataBuffer.TYPE_BYTE
-                && dataType != DataBuffer.TYPE_USHORT) {
+        if (dataType != DataBuffer.TYPE_BYTE && dataType != DataBuffer.TYPE_USHORT) {
             // awt.230=dataType is not one of the supported data types
             throw new IllegalArgumentException(Messages.getString("awt.230")); //$NON-NLS-1$
         }
@@ -383,36 +420,38 @@
         DataBuffer data = null;
 
         switch (dataType) {
-        case DataBuffer.TYPE_BYTE:
-            data = new DataBufferByte(size);
-            break;
-        case DataBuffer.TYPE_USHORT:
-            data = new DataBufferUShort(size);
-            break;
+            case DataBuffer.TYPE_BYTE:
+                data = new DataBufferByte(size);
+                break;
+            case DataBuffer.TYPE_USHORT:
+                data = new DataBufferUShort(size);
+                break;
         }
 
-        return createInterleavedRaster(data, w, h, scanlineStride, pixelStride,
-                bandOffsets, location);
+        return createInterleavedRaster(data, w, h, scanlineStride, pixelStride, bandOffsets,
+                location);
     }
 
     /**
-     * Creates a Raster object with a PixelInterleavedSampleModel 
-     * and the specified data type. The Data type can be one of the 
-     * following values:
-     * TYPE_BYTE, TYPE_USHORT, or TYPE_INT. 
+     * Creates a Raster object with a PixelInterleavedSampleModel and the
+     * specified data type. The Data type can be one of the following values:
+     * TYPE_BYTE, TYPE_USHORT, or TYPE_INT.
      * 
-     * @param dataType the data type of samples:
-     * TYPE_BYTE, TYPE_USHORT, or TYPE_INT. 
-     * @param w the width of image data.
-     * @param h the height of image data.
-     * @param bands the number of bands.
-     * @param location the location which defines the upper left corner 
-     * of the Raster.
-     * 
+     * @param dataType
+     *            the data type of samples: TYPE_BYTE, TYPE_USHORT, or TYPE_INT.
+     * @param w
+     *            the width of image data.
+     * @param h
+     *            the height of image data.
+     * @param bands
+     *            the number of bands.
+     * @param location
+     *            the location which defines the upper left corner of the
+     *            Raster.
      * @return the WritableRaster.
      */
-    public static WritableRaster createInterleavedRaster(int dataType, int w,
-            int h, int bands, Point location) {
+    public static WritableRaster createInterleavedRaster(int dataType, int w, int h, int bands,
+            Point location) {
 
         if (w <= 0 || h <= 0) {
             // awt.22E=w or h is less than or equal to zero
@@ -423,14 +462,13 @@
             location = new Point(0, 0);
         }
 
-        if ((long) location.x + w > Integer.MAX_VALUE
-                || (long) location.y + h > Integer.MAX_VALUE) {
-            // awt.276=location.x + w or location.y + h results in integer overflow
+        if ((long)location.x + w > Integer.MAX_VALUE || (long)location.y + h > Integer.MAX_VALUE) {
+            // awt.276=location.x + w or location.y + h results in integer
+            // overflow
             throw new RasterFormatException(Messages.getString("awt.276")); //$NON-NLS-1$
         }
 
-        if (dataType != DataBuffer.TYPE_BYTE
-                && dataType != DataBuffer.TYPE_USHORT) {
+        if (dataType != DataBuffer.TYPE_BYTE && dataType != DataBuffer.TYPE_USHORT) {
             // awt.230=dataType is not one of the supported data types
             throw new IllegalArgumentException(Messages.getString("awt.230")); //$NON-NLS-1$
         }
@@ -440,26 +478,30 @@
             bandOffsets[i] = i;
         }
 
-        return createInterleavedRaster(dataType, w, h, w * bands, bands,
-                bandOffsets, location);
+        return createInterleavedRaster(dataType, w, h, w * bands, bands, bandOffsets, location);
     }
 
     /**
-     * Creates a Raster object with a SinglePixelPackedSampleModel  
-     * and the specified DataBuffer. 
+     * Creates a Raster object with a SinglePixelPackedSampleModel and the
+     * specified DataBuffer.
      * 
-     * @param dataBuffer the DataBuffer.
-     * @param w the width of the image data.
-     * @param h the height of the image data.
-     * @param scanlineStride the scanline stride of the image data.
-     * @param bandMasks the band masks.
-     * @param location the location which defines the upper left corner 
-     * of the Raster.
-     * 
+     * @param dataBuffer
+     *            the DataBuffer.
+     * @param w
+     *            the width of the image data.
+     * @param h
+     *            the height of the image data.
+     * @param scanlineStride
+     *            the scanline stride of the image data.
+     * @param bandMasks
+     *            the band masks.
+     * @param location
+     *            the location which defines the upper left corner of the
+     *            Raster.
      * @return the WritableRaster.
      */
-    public static WritableRaster createPackedRaster(DataBuffer dataBuffer,
-            int w, int h, int scanlineStride, int bandMasks[], Point location) {
+    public static WritableRaster createPackedRaster(DataBuffer dataBuffer, int w, int h,
+            int scanlineStride, int bandMasks[], Point location) {
         if (dataBuffer == null) {
             // awt.278=dataBuffer is null
             throw new NullPointerException(Messages.getString("awt.278")); //$NON-NLS-1$
@@ -474,9 +516,9 @@
             location = new Point(0, 0);
         }
 
-        if ((long) location.x + w > Integer.MAX_VALUE
-                || (long) location.y + h > Integer.MAX_VALUE) {
-            // awt.276=location.x + w or location.y + h results in integer overflow
+        if ((long)location.x + w > Integer.MAX_VALUE || (long)location.y + h > Integer.MAX_VALUE) {
+            // awt.276=location.x + w or location.y + h results in integer
+            // overflow
             throw new RasterFormatException(Messages.getString("awt.276")); //$NON-NLS-1$
         }
 
@@ -491,35 +533,37 @@
         }
 
         int dataType = dataBuffer.getDataType();
-        if (dataType != DataBuffer.TYPE_BYTE
-                && dataType != DataBuffer.TYPE_USHORT
+        if (dataType != DataBuffer.TYPE_BYTE && dataType != DataBuffer.TYPE_USHORT
                 && dataType != DataBuffer.TYPE_INT) {
             // awt.230=dataType is not one of the supported data types
             throw new IllegalArgumentException(Messages.getString("awt.230")); //$NON-NLS-1$
         }
 
-        SinglePixelPackedSampleModel sampleModel = 
-            new SinglePixelPackedSampleModel(dataType, w, h, 
-                    scanlineStride, bandMasks);
+        SinglePixelPackedSampleModel sampleModel = new SinglePixelPackedSampleModel(dataType, w, h,
+                scanlineStride, bandMasks);
 
         return new OrdinaryWritableRaster(sampleModel, dataBuffer, location);
     }
 
     /**
-     * Creates a Raster object with a MultiPixelPackedSampleModel   
-     * and the specified DataBuffer.
+     * Creates a Raster object with a MultiPixelPackedSampleModel and the
+     * specified DataBuffer.
      * 
-     * @param dataBuffer the DataBuffer.
-     * @param w the width of the image data.
-     * @param h the height of the image data.
-     * @param bitsPerPixel the number of bits per pixel.
-     * @param location the location which defines the upper left corner 
-     * of the Raster.
-     * 
+     * @param dataBuffer
+     *            the DataBuffer.
+     * @param w
+     *            the width of the image data.
+     * @param h
+     *            the height of the image data.
+     * @param bitsPerPixel
+     *            the number of bits per pixel.
+     * @param location
+     *            the location which defines the upper left corner of the
+     *            Raster.
      * @return the WritableRaster.
      */
-    public static WritableRaster createPackedRaster(DataBuffer dataBuffer,
-            int w, int h, int bitsPerPixel, Point location) {
+    public static WritableRaster createPackedRaster(DataBuffer dataBuffer, int w, int h,
+            int bitsPerPixel, Point location) {
 
         if (w <= 0 || h <= 0) {
             // awt.22E=w or h is less than or equal to zero
@@ -530,9 +574,9 @@
             location = new Point(0, 0);
         }
 
-        if ((long) location.x + w > Integer.MAX_VALUE
-                || (long) location.y + h > Integer.MAX_VALUE) {
-            // awt.276=location.x + w or location.y + h results in integer overflow
+        if ((long)location.x + w > Integer.MAX_VALUE || (long)location.y + h > Integer.MAX_VALUE) {
+            // awt.276=location.x + w or location.y + h results in integer
+            // overflow
             throw new RasterFormatException(Messages.getString("awt.276")); //$NON-NLS-1$
         }
 
@@ -547,37 +591,40 @@
         }
 
         int dataType = dataBuffer.getDataType();
-        if (dataType != DataBuffer.TYPE_BYTE
-                && dataType != DataBuffer.TYPE_USHORT
+        if (dataType != DataBuffer.TYPE_BYTE && dataType != DataBuffer.TYPE_USHORT
                 && dataType != DataBuffer.TYPE_INT) {
             // awt.230=dataType is not one of the supported data types
             throw new IllegalArgumentException(Messages.getString("awt.230")); //$NON-NLS-1$
         }
 
-        MultiPixelPackedSampleModel sampleModel = 
-            new MultiPixelPackedSampleModel(dataType, w, h, bitsPerPixel);
+        MultiPixelPackedSampleModel sampleModel = new MultiPixelPackedSampleModel(dataType, w, h,
+                bitsPerPixel);
 
         return new OrdinaryWritableRaster(sampleModel, dataBuffer, location);
 
     }
 
     /**
-     * Creates a Raster object with a MultiPixelPackedSampleModel   
-     * and the specified DataBuffer.
+     * Creates a Raster object with a MultiPixelPackedSampleModel and the
+     * specified DataBuffer.
      * 
-     * @param dataType the data type of samples:
-     * TYPE_BYTE, TYPE_USHORT, or TYPE_INT. 
-     * @param w the width of the image data.
-     * @param h the height of the image data.
-     * @param bands the number of bands.
-     * @param bitsPerBand the number of bits per band.
-     * @param location the location which defines the upper left corner 
-     * of the Raster.
-     * 
+     * @param dataType
+     *            the data type of samples: TYPE_BYTE, TYPE_USHORT, or TYPE_INT.
+     * @param w
+     *            the width of the image data.
+     * @param h
+     *            the height of the image data.
+     * @param bands
+     *            the number of bands.
+     * @param bitsPerBand
+     *            the number of bits per band.
+     * @param location
+     *            the location which defines the upper left corner of the
+     *            Raster.
      * @return the WritableRaster.
      */
-    public static WritableRaster createPackedRaster(int dataType, int w, int h,
-            int bands, int bitsPerBand, Point location) {
+    public static WritableRaster createPackedRaster(int dataType, int w, int h, int bands,
+            int bitsPerBand, Point location) {
 
         if (w <= 0 || h <= 0) {
             // awt.22E=w or h is less than or equal to zero
@@ -588,9 +635,9 @@
             location = new Point(0, 0);
         }
 
-        if ((long) location.x + w > Integer.MAX_VALUE
-                || (long) location.y + h > Integer.MAX_VALUE) {
-            // awt.276=location.x + w or location.y + h results in integer overflow
+        if ((long)location.x + w > Integer.MAX_VALUE || (long)location.y + h > Integer.MAX_VALUE) {
+            // awt.276=location.x + w or location.y + h results in integer
+            // overflow
             throw new RasterFormatException(Messages.getString("awt.276")); //$NON-NLS-1$
         }
 
@@ -599,15 +646,15 @@
             throw new IllegalArgumentException(Messages.getString("awt.27D")); //$NON-NLS-1$
         }
 
-        if (dataType != DataBuffer.TYPE_BYTE
-                && dataType != DataBuffer.TYPE_USHORT
+        if (dataType != DataBuffer.TYPE_BYTE && dataType != DataBuffer.TYPE_USHORT
                 && dataType != DataBuffer.TYPE_INT) {
             // awt.230=dataType is not one of the supported data types
             throw new IllegalArgumentException(Messages.getString("awt.230")); //$NON-NLS-1$
         }
 
         if (bitsPerBand * bands > DataBuffer.getDataTypeSize(dataType)) {
-            // awt.27E=The product of bitsPerBand and bands is greater than the number of bits held by dataType
+            // awt.27E=The product of bitsPerBand and bands is greater than the
+            // number of bits held by dataType
             throw new IllegalArgumentException(Messages.getString("awt.27E")); //$NON-NLS-1$
         }
 
@@ -623,43 +670,45 @@
             return createPackedRaster(dataType, w, h, bandMasks, location);
         }
         DataBuffer data = null;
-        int size = ((bitsPerBand * w + 
-                DataBuffer.getDataTypeSize(dataType) - 1) / 
-                DataBuffer.getDataTypeSize(dataType)) * h;
+        int size = ((bitsPerBand * w + DataBuffer.getDataTypeSize(dataType) - 1) / DataBuffer
+                .getDataTypeSize(dataType))
+                * h;
 
         switch (dataType) {
-        case DataBuffer.TYPE_BYTE:
-            data = new DataBufferByte(size);
-            break;
-        case DataBuffer.TYPE_USHORT:
-            data = new DataBufferUShort(size);
-            break;
-        case DataBuffer.TYPE_INT:
-            data = new DataBufferInt(size);
-            break;
+            case DataBuffer.TYPE_BYTE:
+                data = new DataBufferByte(size);
+                break;
+            case DataBuffer.TYPE_USHORT:
+                data = new DataBufferUShort(size);
+                break;
+            case DataBuffer.TYPE_INT:
+                data = new DataBufferInt(size);
+                break;
         }
         return createPackedRaster(data, w, h, bitsPerBand, location);
     }
 
     /**
-     * Creates a Raster object with a SinglePixelPackedSampleModel    
-     * and the specified DataBuffer.
+     * Creates a Raster object with a SinglePixelPackedSampleModel and the
+     * specified DataBuffer.
      * 
-     * @param dataType the data type of samples:
-     * TYPE_BYTE, TYPE_USHORT, or TYPE_INT. 
-     * @param w the width of the image data.
-     * @param h the height of the image data.
-     * @param bandMasks the band masks.
-     * @param location the location which defines the upper left corner 
-     * of the Raster.
-     * 
+     * @param dataType
+     *            the data type of samples: TYPE_BYTE, TYPE_USHORT, or TYPE_INT.
+     * @param w
+     *            the width of the image data.
+     * @param h
+     *            the height of the image data.
+     * @param bandMasks
+     *            the band masks.
+     * @param location
+     *            the location which defines the upper left corner of the
+     *            Raster.
      * @return the WritableRaster.
      */
-    public static WritableRaster createPackedRaster(int dataType, int w, int h,
-            int bandMasks[], Point location) {
-        
-        if (dataType != DataBuffer.TYPE_BYTE
-                && dataType != DataBuffer.TYPE_USHORT
+    public static WritableRaster createPackedRaster(int dataType, int w, int h, int bandMasks[],
+            Point location) {
+
+        if (dataType != DataBuffer.TYPE_BYTE && dataType != DataBuffer.TYPE_USHORT
                 && dataType != DataBuffer.TYPE_INT) {
             // awt.230=dataType is not one of the supported data types
             throw new IllegalArgumentException(Messages.getString("awt.230")); //$NON-NLS-1$
@@ -674,9 +723,9 @@
             location = new Point(0, 0);
         }
 
-        if ((long) location.x + w > Integer.MAX_VALUE
-                || (long) location.y + h > Integer.MAX_VALUE) {
-            // awt.276=location.x + w or location.y + h results in integer overflow
+        if ((long)location.x + w > Integer.MAX_VALUE || (long)location.y + h > Integer.MAX_VALUE) {
+            // awt.276=location.x + w or location.y + h results in integer
+            // overflow
             throw new RasterFormatException(Messages.getString("awt.276")); //$NON-NLS-1$
         }
 
@@ -688,15 +737,15 @@
         DataBuffer data = null;
 
         switch (dataType) {
-        case DataBuffer.TYPE_BYTE:
-            data = new DataBufferByte(w * h);
-            break;
-        case DataBuffer.TYPE_USHORT:
-            data = new DataBufferUShort(w * h);
-            break;
-        case DataBuffer.TYPE_INT:
-            data = new DataBufferInt(w * h);
-            break;
+            case DataBuffer.TYPE_BYTE:
+                data = new DataBufferByte(w * h);
+                break;
+            case DataBuffer.TYPE_USHORT:
+                data = new DataBufferUShort(w * h);
+                break;
+            case DataBuffer.TYPE_INT:
+                data = new DataBufferInt(w * h);
+                break;
         }
 
         return createPackedRaster(data, w, h, w, bandMasks, location);
@@ -705,15 +754,16 @@
     /**
      * Creates a Raster object with the specified DataBuffer and SampleModel.
      * 
-     * @param sm the specified SampleModel.
-     * @param db the specified DataBuffer.
-     * @param location the location which defines the upper left corner 
-     * of the Raster.
-     * 
+     * @param sm
+     *            the specified SampleModel.
+     * @param db
+     *            the specified DataBuffer.
+     * @param location
+     *            the location which defines the upper left corner of the
+     *            Raster.
      * @return the Raster.
      */
-    public static Raster createRaster(SampleModel sm, DataBuffer db,
-            Point location) {
+    public static Raster createRaster(SampleModel sm, DataBuffer db, Point location) {
 
         if (sm == null || db == null) {
             // awt.27F=SampleModel or DataBuffer is null
@@ -730,15 +780,16 @@
     /**
      * Creates a WritableRaster with the specified SampleModel and DataBuffer.
      * 
-     * @param sm the specified SampleModel.
-     * @param db the specified DataBuffer.
-     * @param location the location which defines the upper left corner 
-     * of the Raster.
-     * 
+     * @param sm
+     *            the specified SampleModel.
+     * @param db
+     *            the specified DataBuffer.
+     * @param location
+     *            the location which defines the upper left corner of the
+     *            Raster.
      * @return the WritableRaster.
      */
-    public static WritableRaster createWritableRaster(SampleModel sm,
-            DataBuffer db, Point location) {
+    public static WritableRaster createWritableRaster(SampleModel sm, DataBuffer db, Point location) {
 
         if (sm == null || db == null) {
             // awt.27F=SampleModel or DataBuffer is null
@@ -755,14 +806,14 @@
     /**
      * Creates a WritableRaster with the specified SampleModel.
      * 
-     * @param sm the specified SampleModel.
-     * @param location the location which defines the upper left corner 
-     * of the Raster.
-     * 
+     * @param sm
+     *            the specified SampleModel.
+     * @param location
+     *            the location which defines the upper left corner of the
+     *            Raster.
      * @return the WritableRaster.
      */
-    public static WritableRaster createWritableRaster(SampleModel sm,
-            Point location) {
+    public static WritableRaster createWritableRaster(SampleModel sm, Point location) {
 
         if (sm == null) {
             // awt.280=SampleModel is null
@@ -780,34 +831,42 @@
      * Instantiates a new Raster object with the specified SampleModel and
      * DataBuffer.
      * 
-     * @param sampleModel the specified SampleModel.
-     * @param dataBuffer the specified  DataBuffer.
-     * @param origin the specified origin.
+     * @param sampleModel
+     *            the specified SampleModel.
+     * @param dataBuffer
+     *            the specified DataBuffer.
+     * @param origin
+     *            the specified origin.
      */
-    protected Raster(SampleModel sampleModel, DataBuffer dataBuffer,
-            Point origin) {
+    protected Raster(SampleModel sampleModel, DataBuffer dataBuffer, Point origin) {
 
-        this(sampleModel, dataBuffer, new Rectangle(origin.x, origin.y,
-                sampleModel.getWidth(), sampleModel.getHeight()), origin, null);
+        this(sampleModel, dataBuffer, new Rectangle(origin.x, origin.y, sampleModel.getWidth(),
+                sampleModel.getHeight()), origin, null);
     }
 
     /**
      * Instantiates a new Raster object with the specified SampleModel,
-     * DataBuffer, rectangular region and parent Raster. 
+     * DataBuffer, rectangular region and parent Raster.
      * 
-     * @param sampleModel the specified SampleModel.
-     * @param dataBuffer the specified DataBuffer.
-     * @param aRegion the a rectangular region which defines the new image bounds. 
-     * @param sampleModelTranslate this point defines the translation point
-     * from the SampleModel coordinates to the new Raster coordinates.
-     * @param parent the parent of this Raster.
+     * @param sampleModel
+     *            the specified SampleModel.
+     * @param dataBuffer
+     *            the specified DataBuffer.
+     * @param aRegion
+     *            the a rectangular region which defines the new image bounds.
+     * @param sampleModelTranslate
+     *            this point defines the translation point from the SampleModel
+     *            coordinates to the new Raster coordinates.
+     * @param parent
+     *            the parent of this Raster.
      */
-    protected Raster(SampleModel sampleModel, DataBuffer dataBuffer,
-            Rectangle aRegion, Point sampleModelTranslate, Raster parent) {
+    protected Raster(SampleModel sampleModel, DataBuffer dataBuffer, Rectangle aRegion,
+            Point sampleModelTranslate, Raster parent) {
 
         if (sampleModel == null || dataBuffer == null || aRegion == null
                 || sampleModelTranslate == null) {
-            // awt.281=sampleModel, dataBuffer, aRegion or sampleModelTranslate is null
+            // awt.281=sampleModel, dataBuffer, aRegion or sampleModelTranslate
+            // is null
             throw new NullPointerException(Messages.getString("awt.281")); //$NON-NLS-1$
         }
 
@@ -816,27 +875,25 @@
             throw new RasterFormatException(Messages.getString("awt.282")); //$NON-NLS-1$
         }
 
-        if ((long) aRegion.x + (long) aRegion.width > Integer.MAX_VALUE) {
+        if ((long)aRegion.x + (long)aRegion.width > Integer.MAX_VALUE) {
             // awt.283=Overflow X coordinate of Raster
             throw new RasterFormatException(Messages.getString("awt.283")); //$NON-NLS-1$
         }
 
-        if ((long) aRegion.y + (long) aRegion.height > Integer.MAX_VALUE) {
+        if ((long)aRegion.y + (long)aRegion.height > Integer.MAX_VALUE) {
             // awt.284=Overflow Y coordinate of Raster
             throw new RasterFormatException(Messages.getString("awt.284")); //$NON-NLS-1$
         }
-        
+
         if (sampleModel instanceof ComponentSampleModel) {
             validateDataBuffer(dataBuffer, aRegion.width, aRegion.height,
-                    ((ComponentSampleModel) sampleModel).getScanlineStride());
+                    ((ComponentSampleModel)sampleModel).getScanlineStride());
         } else if (sampleModel instanceof MultiPixelPackedSampleModel) {
             validateDataBuffer(dataBuffer, aRegion.width, aRegion.height,
-                    ((MultiPixelPackedSampleModel) sampleModel)
-                            .getScanlineStride());
+                    ((MultiPixelPackedSampleModel)sampleModel).getScanlineStride());
         } else if (sampleModel instanceof SinglePixelPackedSampleModel) {
             validateDataBuffer(dataBuffer, aRegion.width, aRegion.height,
-                    ((SinglePixelPackedSampleModel) sampleModel)
-                            .getScanlineStride());
+                    ((SinglePixelPackedSampleModel)sampleModel).getScanlineStride());
         }
 
         this.sampleModel = sampleModel;
@@ -856,36 +913,44 @@
     /**
      * Instantiates a new Raster with the specified SampleModel.
      * 
-     * @param sampleModel the specified SampleModel.
-     * @param origin the origin.
+     * @param sampleModel
+     *            the specified SampleModel.
+     * @param origin
+     *            the origin.
      */
     protected Raster(SampleModel sampleModel, Point origin) {
-        this(sampleModel, sampleModel.createDataBuffer(), new Rectangle(
-                origin.x, origin.y, sampleModel.getWidth(), sampleModel
-                        .getHeight()), origin, null);
+        this(sampleModel, sampleModel.createDataBuffer(), new Rectangle(origin.x, origin.y,
+                sampleModel.getWidth(), sampleModel.getHeight()), origin, null);
     }
 
     /**
      * Creates the child of this Raster by sharing the specified rectangular
-     * area in this Raste. The parentX, parentY, width 
-     * and height parameters specify the rectangular area to be shared.
+     * area in this raster. The parentX, parentY, width and height parameters
+     * specify the rectangular area to be shared.
      * 
-     * @param parentX the X coordinate of the upper left corner of this Raster. 
-     * @param parentY the Y coordinate of the upper left corner of this Raster.
-     * @param width the width of the child area.
-     * @param height the height of the child area.
-     * @param childMinX the X coordinate of child area mapped to the parentX
-     * coordinate.
-     * @param childMinY the Y coordinate of child area mapped to the parentY
-     * coordinate.
-     * @param bandList the array of band indicies.
-     * 
+     * @param parentX
+     *            the X coordinate of the upper left corner of this Raster.
+     * @param parentY
+     *            the Y coordinate of the upper left corner of this Raster.
+     * @param width
+     *            the width of the child area.
+     * @param height
+     *            the height of the child area.
+     * @param childMinX
+     *            the X coordinate of child area mapped to the parentX
+     *            coordinate.
+     * @param childMinY
+     *            the Y coordinate of child area mapped to the parentY
+     *            coordinate.
+     * @param bandList
+     *            the array of band indices.
      * @return the Raster.
      */
-    public Raster createChild(int parentX, int parentY, int width, int height,
-            int childMinX, int childMinY, int bandList[]) {
+    public Raster createChild(int parentX, int parentY, int width, int height, int childMinX,
+            int childMinY, int bandList[]) {
         if (width <= 0 || height <= 0) {
-            // awt.285=Width or Height of child Raster is less than or equal to zero
+            // awt.285=Width or Height of child Raster is less than or equal to
+            // zero
             throw new RasterFormatException(Messages.getString("awt.285")); //$NON-NLS-1$
         }
 
@@ -899,22 +964,22 @@
             throw new RasterFormatException(Messages.getString("awt.287")); //$NON-NLS-1$
         }
 
-        if ((long) parentX + width > Integer.MAX_VALUE) {
+        if ((long)parentX + width > Integer.MAX_VALUE) {
             // awt.288=parentX + width results in integer overflow
             throw new RasterFormatException(Messages.getString("awt.288")); //$NON-NLS-1$
         }
 
-        if ((long) parentY + height > Integer.MAX_VALUE) {
+        if ((long)parentY + height > Integer.MAX_VALUE) {
             // awt.289=parentY + height results in integer overflow
             throw new RasterFormatException(Messages.getString("awt.289")); //$NON-NLS-1$
         }
 
-        if ((long) childMinX + width > Integer.MAX_VALUE) {
+        if ((long)childMinX + width > Integer.MAX_VALUE) {
             // awt.28A=childMinX + width results in integer overflow
             throw new RasterFormatException(Messages.getString("awt.28A")); //$NON-NLS-1$
         }
 
-        if ((long) childMinY + height > Integer.MAX_VALUE) {
+        if ((long)childMinY + height > Integer.MAX_VALUE) {
             // awt.28B=childMinY + height results in integer overflow
             throw new RasterFormatException(Messages.getString("awt.28B")); //$NON-NLS-1$
         }
@@ -930,15 +995,14 @@
         int childTranslateX = childMinX - parentX;
         int childTranslateY = childMinY - parentY;
 
-        return new Raster(childModel, dataBuffer, new Rectangle(childMinX,
-                childMinY, width, height), new Point(childTranslateX
-                + sampleModelTranslateX, childTranslateY
-                + sampleModelTranslateY), this);
+        return new Raster(childModel, dataBuffer,
+                new Rectangle(childMinX, childMinY, width, height), new Point(childTranslateX
+                        + sampleModelTranslateX, childTranslateY + sampleModelTranslateY), this);
     }
 
     /**
-     * Create a compatible WritableRaster with the same parameters 
-     * as this Raster.
+     * Create a compatible WritableRaster with the same parameters as this
+     * Raster.
      * 
      * @return the WritableRaster.
      */
@@ -947,12 +1011,13 @@
     }
 
     /**
-     * Create a compatible WritableRaster with the same parameters 
-     * as this Raster and the specified size.
+     * Create a compatible WritableRaster with the same parameters as this
+     * Raster and the specified size.
      * 
-     * @param w the width of the new WritableRaster.
-     * @param h the height of the new WritableRaster.
-     * 
+     * @param w
+     *            the width of the new WritableRaster.
+     * @param h
+     *            the height of the new WritableRaster.
      * @return the WritableRaster.
      */
     public WritableRaster createCompatibleWritableRaster(int w, int h) {
@@ -967,18 +1032,20 @@
     }
 
     /**
-     * Create a compatible WritableRaster with the same parameters 
-     * as this Raster and the specified size and location.
+     * Create a compatible WritableRaster with the same parameters as this
+     * Raster and the specified size and location.
      * 
-     * @param x the X coordinate of the new WritableRaster.
-     * @param y the Y coordinate of the new WritableRaster.
-     * @param w the width of the new WritableRaster.
-     * @param h the height of the new WritableRaster.
-     * 
+     * @param x
+     *            the X coordinate of the new WritableRaster.
+     * @param y
+     *            the Y coordinate of the new WritableRaster.
+     * @param w
+     *            the width of the new WritableRaster.
+     * @param h
+     *            the height of the new WritableRaster.
      * @return the WritableRaster.
      */
-    public WritableRaster createCompatibleWritableRaster(int x, int y, int w,
-            int h) {
+    public WritableRaster createCompatibleWritableRaster(int x, int y, int w, int h) {
 
         WritableRaster raster = createCompatibleWritableRaster(w, h);
 
@@ -986,12 +1053,12 @@
     }
 
     /**
-     * Create a compatible WritableRaster with the same parameters 
-     * as this Raster and the specified rectangle which determines
-     * new WritableRaster's location and size.
+     * Create a compatible WritableRaster with the same parameters as this
+     * Raster and the specified rectangle which determines new WritableRaster's
+     * location and size.
      * 
-     * @param rect the specified Rectangle.
-     * 
+     * @param rect
+     *            the specified Rectangle.
      * @return the WritableRaster.
      */
     public WritableRaster createCompatibleWritableRaster(Rectangle rect) {
@@ -1000,23 +1067,21 @@
             throw new NullPointerException(Messages.getString("awt.28C")); //$NON-NLS-1$
         }
 
-        return createCompatibleWritableRaster(rect.x, rect.y, rect.width,
-                rect.height);
+        return createCompatibleWritableRaster(rect.x, rect.y, rect.width, rect.height);
     }
 
     /**
-     * Creates the translated child of this Raster. The New Raster
-     * object is a reference to the this Raster with a 
-     * different location. 
-     *  
-     * @param childMinX the X coordinate of the new Raster.
-     * @param childMinY the Y coordinate of the new Raster.
+     * Creates the translated child of this Raster. The New Raster object is a
+     * reference to the this Raster with a different location.
      * 
+     * @param childMinX
+     *            the X coordinate of the new Raster.
+     * @param childMinY
+     *            the Y coordinate of the new Raster.
      * @return the Raster.
      */
     public Raster createTranslatedChild(int childMinX, int childMinY) {
-        return createChild(minX, minY, width, height, childMinX, childMinY,
-                null);
+        return createChild(minX, minY, width, height, childMinX, childMinY, null);
     }
 
     /**
@@ -1038,41 +1103,46 @@
     }
 
     /**
-     * Gets the data elements which represent the pixel data of the specified 
-     * rectangle area as a primitive array. The following image data types
-     * are supported: DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, 
-     * DataBuffer.TYPE_INT, DataBuffer.TYPE_SHORT, DataBuffer.TYPE_FLOAT, 
-     * or DataBuffer.TYPE_DOUBLE.
+     * Gets the data elements which represent the pixel data of the specified
+     * rectangle area as a primitive array. The following image data types are
+     * supported: DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT,
+     * DataBuffer.TYPE_INT, DataBuffer.TYPE_SHORT, DataBuffer.TYPE_FLOAT, or
+     * DataBuffer.TYPE_DOUBLE.
      * 
-     * @param x the X coordinate of the area of pixels.
-     * @param y the Y coordinate of the area of pixels.
-     * @param w the width of the area of pixels.
-     * @param h the height of the area of pixels.
-     * @param outData the resulting array.
-     * 
+     * @param x
+     *            the X coordinate of the area of pixels.
+     * @param y
+     *            the Y coordinate of the area of pixels.
+     * @param w
+     *            the width of the area of pixels.
+     * @param h
+     *            the height of the area of pixels.
+     * @param outData
+     *            the resulting array.
      * @return the data elements of the specified area of this Raster.
      */
     public Object getDataElements(int x, int y, int w, int h, Object outData) {
-        return sampleModel.getDataElements(x - sampleModelTranslateX, y
-                - sampleModelTranslateY, w, h, outData, dataBuffer);
+        return sampleModel.getDataElements(x - sampleModelTranslateX, y - sampleModelTranslateY, w,
+                h, outData, dataBuffer);
     }
 
     /**
-     * Gets the data elements which represent the specified pixel of 
-     * this Raster as a primitive array. The following image data types
-     * are supported: DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, 
-     * DataBuffer.TYPE_INT, DataBuffer.TYPE_SHORT, DataBuffer.TYPE_FLOAT, 
-     * or DataBuffer.TYPE_DOUBLE.
+     * Gets the data elements which represent the specified pixel of this Raster
+     * as a primitive array. The following image data types are supported:
+     * DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, DataBuffer.TYPE_INT,
+     * DataBuffer.TYPE_SHORT, DataBuffer.TYPE_FLOAT, or DataBuffer.TYPE_DOUBLE.
      * 
-     * @param x the X coordinate of the pixel.
-     * @param y the Y coordinate of the pixel.
-     * @param outData the resulting data.
-     * 
+     * @param x
+     *            the X coordinate of the pixel.
+     * @param y
+     *            the Y coordinate of the pixel.
+     * @param outData
+     *            the resulting data.
      * @return the data elements of the specified pixel of this Raster.
      */
     public Object getDataElements(int x, int y, Object outData) {
-        return sampleModel.getDataElements(x - sampleModelTranslateX, y
-                - sampleModelTranslateY, outData, dataBuffer);
+        return sampleModel.getDataElements(x - sampleModelTranslateX, y - sampleModelTranslateY,
+                outData, dataBuffer);
     }
 
     /**
@@ -1121,7 +1191,7 @@
     }
 
     /**
-     * Gets the parent Raster for this Raster object. 
+     * Gets the parent Raster for this Raster object.
      * 
      * @return the parent Raster for this Raster object.
      */
@@ -1130,150 +1200,173 @@
     }
 
     /**
-     * Gets a double array of samples for the specified pixel in this Raster. 
+     * Gets a double array of samples for the specified pixel in this Raster.
      * 
-     * @param x the pixel's X coordinate.
-     * @param y the pixel's Y coordinate.
-     * @param dArray the double array where result array will be stored.
-     * 
-     * @return the double array of samples for the specified pixel in 
-     * this Raster.
+     * @param x
+     *            the pixel's X coordinate.
+     * @param y
+     *            the pixel's Y coordinate.
+     * @param dArray
+     *            the double array where result array will be stored.
+     * @return the double array of samples for the specified pixel in this
+     *         Raster.
      */
     public double[] getPixel(int x, int y, double dArray[]) {
-        return sampleModel.getPixel(x - sampleModelTranslateX, y
-                - sampleModelTranslateY, dArray, dataBuffer);
+        return sampleModel.getPixel(x - sampleModelTranslateX, y - sampleModelTranslateY, dArray,
+                dataBuffer);
     }
 
     /**
-     * Gets a float array of samples for the specified pixel in this Raster. 
+     * Gets a float array of samples for the specified pixel in this Raster.
      * 
-     * @param x the pixel's X coordinate.
-     * @param y the pixel's Y coordinate.
-     * @param fArray the float array where the result array will be stored.
-     * 
-     * @return the float array of samples for the specified pixel in 
-     * this Raster.
+     * @param x
+     *            the pixel's X coordinate.
+     * @param y
+     *            the pixel's Y coordinate.
+     * @param fArray
+     *            the float array where the result array will be stored.
+     * @return the float array of samples for the specified pixel in this
+     *         Raster.
      */
     public float[] getPixel(int x, int y, float fArray[]) {
-        return sampleModel.getPixel(x - sampleModelTranslateX, y
-                - sampleModelTranslateY, fArray, dataBuffer);
+        return sampleModel.getPixel(x - sampleModelTranslateX, y - sampleModelTranslateY, fArray,
+                dataBuffer);
     }
 
     /**
-     * Gets an int array of samples for the specified pixel in this Raster. 
+     * Gets an integer array of samples for the specified pixel in this Raster.
      * 
-     * @param x the pixel's X coordinate.
-     * @param y the pixel's Y coordinate.
-     * @param iArray the int array where the result array will be stored.
-     * 
-     * @return the int array of samples for the specified pixel in 
-     * this Raster.
+     * @param x
+     *            the pixel's X coordinate.
+     * @param y
+     *            the pixel's Y coordinate.
+     * @param iArray
+     *            the integer array where the result array will be stored.
+     * @return the integer array of samples for the specified pixel in this
+     *         Raster.
      */
     public int[] getPixel(int x, int y, int iArray[]) {
-        return sampleModel.getPixel(x - sampleModelTranslateX, y
-                - sampleModelTranslateY, iArray, dataBuffer);
+        return sampleModel.getPixel(x - sampleModelTranslateX, y - sampleModelTranslateY, iArray,
+                dataBuffer);
     }
 
     /**
-     * Gets an double array of samples for the specified rectangular
-     * area of pixels in this Raster.
+     * Gets an double array of samples for the specified rectangular area of
+     * pixels in this Raster.
      * 
-     * @param x the X coordinate of the area of pixels.
-     * @param y the Y coordinate of the area of pixels.
-     * @param w the width of the area of pixels.
-     * @param h the height of the area of pixels.
-     * @param dArray the resulting array.
-     * 
-     * @return the double array of samples for the specified rectangular
-     * area of pixels in this Raster.
+     * @param x
+     *            the X coordinate of the area of pixels.
+     * @param y
+     *            the Y coordinate of the area of pixels.
+     * @param w
+     *            the width of the area of pixels.
+     * @param h
+     *            the height of the area of pixels.
+     * @param dArray
+     *            the resulting array.
+     * @return the double array of samples for the specified rectangular area of
+     *         pixels in this Raster.
      */
     public double[] getPixels(int x, int y, int w, int h, double dArray[]) {
-        return sampleModel.getPixels(x - sampleModelTranslateX, y
-                - sampleModelTranslateY, w, h, dArray, dataBuffer);
+        return sampleModel.getPixels(x - sampleModelTranslateX, y - sampleModelTranslateY, w, h,
+                dArray, dataBuffer);
     }
 
     /**
-     * Gets an float array of samples for the specified rectangular
-     * area of pixels in this Raster.
+     * Gets an float array of samples for the specified rectangular area of
+     * pixels in this Raster.
      * 
-     * @param x the X coordinate of the area of pixels.
-     * @param y the Y coordinate of the area of pixels.
-     * @param w the width of the area of pixels.
-     * @param h the height of the area of pixels.
-     * @param fArray the resulting array.
-     * 
-     * @return the float array of samples for the specified rectangular
-     * area of pixels in this Raster.
+     * @param x
+     *            the X coordinate of the area of pixels.
+     * @param y
+     *            the Y coordinate of the area of pixels.
+     * @param w
+     *            the width of the area of pixels.
+     * @param h
+     *            the height of the area of pixels.
+     * @param fArray
+     *            the resulting array.
+     * @return the float array of samples for the specified rectangular area of
+     *         pixels in this Raster.
      */
     public float[] getPixels(int x, int y, int w, int h, float fArray[]) {
-        return sampleModel.getPixels(x - sampleModelTranslateX, y
-                - sampleModelTranslateY, w, h, fArray, dataBuffer);
+        return sampleModel.getPixels(x - sampleModelTranslateX, y - sampleModelTranslateY, w, h,
+                fArray, dataBuffer);
     }
 
     /**
-     * Gets an int array of samples for the specified rectangular
-     * area of pixels in this Raster.
+     * Gets an integer array of samples for the specified rectangular area of
+     * pixels in this raster.
      * 
-     * @param x the X coordinate of the area of pixels.
-     * @param y the Y coordinate of the area of pixels.
-     * @param w the width of pixel's the area of pixels.
-     * @param h the height of pixel's the area of pixels.
-     * @param iArray the resulting array.
-     * 
-     * @return the int array of samples for the specified rectangular
-     * area of pixels in this Raster.
+     * @param x
+     *            the X coordinate of the area of pixels.
+     * @param y
+     *            the Y coordinate of the area of pixels.
+     * @param w
+     *            the width of pixel's the area of pixels.
+     * @param h
+     *            the height of pixel's the area of pixels.
+     * @param iArray
+     *            the resulting array.
+     * @return the integer array of samples for the specified rectangular area
+     *         of pixels in this Raster.
      */
     public int[] getPixels(int x, int y, int w, int h, int iArray[]) {
-        return sampleModel.getPixels(x - sampleModelTranslateX, y
-                - sampleModelTranslateY, w, h, iArray, dataBuffer);
+        return sampleModel.getPixels(x - sampleModelTranslateX, y - sampleModelTranslateY, w, h,
+                iArray, dataBuffer);
     }
 
     /**
-     * Gets the sample for the specified band of the specified
-     * pixel as an int.
+     * Gets the sample for the specified band of the specified pixel as an
+     * integer.
      * 
-     * @param x the X coordinate of the pixel.
-     * @param y the Y coordinate of the pixel.
-     * @param b the band.
-     * 
-     * @return the sample for the specified band of the specified
-     * pixel as an int.
+     * @param x
+     *            the X coordinate of the pixel.
+     * @param y
+     *            the Y coordinate of the pixel.
+     * @param b
+     *            the band.
+     * @return the sample for the specified band of the specified pixel as an
+     *         integer.
      */
     public int getSample(int x, int y, int b) {
-        return sampleModel.getSample(x - sampleModelTranslateX, y
-                - sampleModelTranslateY, b, dataBuffer);
+        return sampleModel.getSample(x - sampleModelTranslateX, y - sampleModelTranslateY, b,
+                dataBuffer);
     }
 
     /**
-     * Gets the sample for the specified band of the specified
-     * pixel as a double.
+     * Gets the sample for the specified band of the specified pixel as a
+     * double.
      * 
-     * @param x the X coordinate of the pixel.
-     * @param y the Y coordinate of the pixel.
-     * @param b the band.
-     * 
-     * @return the sample for the specified band of the specified
-     * pixel as a double.
+     * @param x
+     *            the X coordinate of the pixel.
+     * @param y
+     *            the Y coordinate of the pixel.
+     * @param b
+     *            the band.
+     * @return the sample for the specified band of the specified pixel as a
+     *         double.
      */
     public double getSampleDouble(int x, int y, int b) {
-        return sampleModel.getSampleDouble(x - sampleModelTranslateX, y
-                - sampleModelTranslateY, b, dataBuffer);
+        return sampleModel.getSampleDouble(x - sampleModelTranslateX, y - sampleModelTranslateY, b,
+                dataBuffer);
     }
 
     /**
-     * Gets the sample for the specified band of the specified
-     * pixel as a float.
+     * Gets the sample for the specified band of the specified pixel as a float.
      * 
-     * @param x the X coordinate of the pixel.
-     * @param y the Y coordinate of the pixel.
-     * @param b the band.
-     * 
-     * @return the sample for the specified band of the specified
-     * pixel as a float.
+     * @param x
+     *            the X coordinate of the pixel.
+     * @param y
+     *            the Y coordinate of the pixel.
+     * @param b
+     *            the band.
+     * @return the sample for the specified band of the specified pixel as a
+     *         float.
      */
     public float getSampleFloat(int x, int y, int b) {
-        return sampleModel.getSampleFloat(x - sampleModelTranslateX, y
-                - sampleModelTranslateY, b, dataBuffer);
+        return sampleModel.getSampleFloat(x - sampleModelTranslateX, y - sampleModelTranslateY, b,
+                dataBuffer);
     }
 
     /**
@@ -1286,97 +1379,105 @@
     }
 
     /**
-     * Gets the translation of the X coordinate from the SampleModel
-     * coordinate system to the Rasters's coordinate system.
+     * Gets the translation of the X coordinate from the SampleModel coordinate
+     * system to the Rasters's coordinate system.
      * 
-     * @return the value of the translation of the X coordinate from 
-     * the SampleModel coordinate system to the Rasters's 
-     * coordinate system.
+     * @return the value of the translation of the X coordinate from the
+     *         SampleModel coordinate system to the Rasters's coordinate system.
      */
     public final int getSampleModelTranslateX() {
         return sampleModelTranslateX;
     }
 
     /**
-     * Gets the translation of the Y coordinate from the SampleModel
-     * coordinate system to the Rasters's coordinate system.
+     * Gets the translation of the Y coordinate from the SampleModel coordinate
+     * system to the Rasters's coordinate system.
      * 
-     * @return the value of the translation of the Y coordinate from 
-     * the SampleModel coordinate system to the Rasters's 
-     * coordinate system.
-
+     * @return the value of the translation of the Y coordinate from the
+     *         SampleModel coordinate system to the Rasters's coordinate system.
      */
     public final int getSampleModelTranslateY() {
         return sampleModelTranslateY;
     }
 
     /**
-     * Gets the double array of samples for the specified band 
-     * of the specified rectangular area of pixels in this Raster
-     * as a double array.
+     * Gets the double array of samples for the specified band of the specified
+     * rectangular area of pixels in this Raster as a double array.
      * 
-     * @param x the X coordinate of the rectangular area of pixels. 
-     * @param y the Y coordinate of the rectangular area of pixels.
-     * @param w the width of the rectangular area of pixels.
-     * @param h the height of the rectangular area of pixels.
-     * @param b the band.
-     * @param dArray the resulting double array.
-     * 
-     * @return the double array of samples for the specified band 
-     * of the specified rectangular area of pixels.
+     * @param x
+     *            the X coordinate of the rectangular area of pixels.
+     * @param y
+     *            the Y coordinate of the rectangular area of pixels.
+     * @param w
+     *            the width of the rectangular area of pixels.
+     * @param h
+     *            the height of the rectangular area of pixels.
+     * @param b
+     *            the band.
+     * @param dArray
+     *            the resulting double array.
+     * @return the double array of samples for the specified band of the
+     *         specified rectangular area of pixels.
      */
-    public double[] getSamples(int x, int y, int w, int h, int b,
-            double dArray[]) {
+    public double[] getSamples(int x, int y, int w, int h, int b, double dArray[]) {
 
-        return sampleModel.getSamples(x - sampleModelTranslateX, y
-                - sampleModelTranslateY, w, h, b, dArray, dataBuffer);
+        return sampleModel.getSamples(x - sampleModelTranslateX, y - sampleModelTranslateY, w, h,
+                b, dArray, dataBuffer);
     }
 
     /**
-     * Gets the float array of samples for the specified band 
-     * of the specified rectangular area of pixels in this Raster
-     * as a float array.
+     * Gets the float array of samples for the specified band of the specified
+     * rectangular area of pixels in this Raster as a float array.
      * 
-     * @param x the X coordinate of the rectangular area of pixels. 
-     * @param y the Y coordinate of the rectangular area of pixels.
-     * @param w the width of the rectangular area of pixels.
-     * @param h the height of the rectangular area of pixels.
-     * @param b the band.
-     * @param fArray the resulting float array.
-     * 
-     * @return the float array of samples for the specified band 
-     * of the specified rectangular area of pixels.
+     * @param x
+     *            the X coordinate of the rectangular area of pixels.
+     * @param y
+     *            the Y coordinate of the rectangular area of pixels.
+     * @param w
+     *            the width of the rectangular area of pixels.
+     * @param h
+     *            the height of the rectangular area of pixels.
+     * @param b
+     *            the band.
+     * @param fArray
+     *            the resulting float array.
+     * @return the float array of samples for the specified band of the
+     *         specified rectangular area of pixels.
      */
     public float[] getSamples(int x, int y, int w, int h, int b, float fArray[]) {
 
-        return sampleModel.getSamples(x - sampleModelTranslateX, y
-                - sampleModelTranslateY, w, h, b, fArray, dataBuffer);
+        return sampleModel.getSamples(x - sampleModelTranslateX, y - sampleModelTranslateY, w, h,
+                b, fArray, dataBuffer);
     }
 
     /**
-     * Gets the int array of samples for the specified band 
-     * of the specified rectangular area of pixels in this Raster
-     * as a int array.
+     * Gets the integer array of samples for the specified band of the specified
+     * rectangular area of pixels in this Raster as a integer array.
      * 
-     * @param x the X coordinate of the rectangular area of pixels. 
-     * @param y the Y coordinate of the rectangular area of pixels.
-     * @param w the width of the rectangular area of pixels.
-     * @param h the height of the rectangular area of pixels.
-     * @param b the band.
-     * @param iArray the resulting int array.
-     * 
-     * @return the int array of samples for the specified band 
-     * of the specified rectangular area of pixels.
+     * @param x
+     *            the X coordinate of the rectangular area of pixels.
+     * @param y
+     *            the Y coordinate of the rectangular area of pixels.
+     * @param w
+     *            the width of the rectangular area of pixels.
+     * @param h
+     *            the height of the rectangular area of pixels.
+     * @param b
+     *            the band.
+     * @param iArray
+     *            the resulting integer array.
+     * @return the integer array of samples for the specified band of the
+     *         specified rectangular area of pixels.
      */
     public int[] getSamples(int x, int y, int w, int h, int b, int iArray[]) {
-        return sampleModel.getSamples(x - sampleModelTranslateX, y
-                - sampleModelTranslateY, w, h, b, iArray, dataBuffer);
+        return sampleModel.getSamples(x - sampleModelTranslateX, y - sampleModelTranslateY, w, h,
+                b, iArray, dataBuffer);
     }
 
     /**
      * Gets the transfer type for pixels of this Raster.
-     * @see SampleModel#getTransferType()
      * 
+     * @see SampleModel#getTransferType()
      * @return the transfer type for pixels of this Raster.
      */
     public final int getTransferType() {
@@ -1395,18 +1496,20 @@
     /**
      * Validate data buffer.
      * 
-     * @param dataBuffer the data buffer
-     * @param w the w
-     * @param h the h
-     * @param scanlineStride the scanline stride
+     * @param dataBuffer
+     *            the data buffer.
+     * @param w
+     *            the w.
+     * @param h
+     *            the h.
+     * @param scanlineStride
+     *            the scanline stride.
      */
-    private static void validateDataBuffer(final DataBuffer dataBuffer, final int w,
-            final int h, final int scanlineStride) {
+    private static void validateDataBuffer(final DataBuffer dataBuffer, final int w, final int h,
+            final int scanlineStride) {
         if (dataBuffer.getSize() < (scanlineStride * (h - 1) + w - 1)) {
             // awt.298=dataBuffer is too small
             throw new RasterFormatException(Messages.getString("awt.298")); //$NON-NLS-1$
         }
     }
 }
-
-
diff --git a/awt/java/awt/image/RasterFormatException.java b/awt/java/awt/image/RasterFormatException.java
index 8577dad..c667141 100644
--- a/awt/java/awt/image/RasterFormatException.java
+++ b/awt/java/awt/image/RasterFormatException.java
@@ -18,28 +18,31 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
-
 /**
- * The RasterFormatException class represents the exception 
- * that is thrown when there's an invalid layout
- * in the Raster.
+ * The RasterFormatException class represents the exception that is thrown when
+ * there's an invalid layout in the Raster.
+ * 
+ * @since Android 1.0
  */
 public class RasterFormatException extends RuntimeException {
 
-    /** The Constant serialVersionUID. */
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = 96598996116164315L;
 
     /**
-     * Instantiates a new RasterFormatException with the 
-     * specified detail message.
+     * Instantiates a new RasterFormatException with the specified detail
+     * message.
      * 
-     * @param s the detail message.
+     * @param s
+     *            the detail message.
      */
     public RasterFormatException(String s) {
         super(s);
     }
 
 }
-
diff --git a/awt/java/awt/image/RasterOp.java b/awt/java/awt/image/RasterOp.java
index e8933ee..19a84c9 100644
--- a/awt/java/awt/image/RasterOp.java
+++ b/awt/java/awt/image/RasterOp.java
@@ -18,6 +18,7 @@
  * @author Alexey A. Petrenko
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.awt.RenderingHints;
@@ -25,20 +26,22 @@
 import java.awt.geom.Rectangle2D;
 
 /**
- * The RasterOp interface provides methods for performing transformations
- * from source data to destination data for Raster objects. The source and 
- * destination objects should contain the appropriate number of bands for 
- * the particular classes which implement this interface.
+ * The RasterOp interface provides methods for performing transformations from
+ * source data to destination data for Raster objects. The source and
+ * destination objects should contain the appropriate number of bands for the
+ * particular classes which implement this interface.
+ * 
+ * @since Android 1.0
  */
 public interface RasterOp {
-    
+
     /**
-     * Creates a destination WritableRaster with the specified Raster;
-     * this destination image data is empty and has the correct size 
-     * and number of bands.   
+     * Creates a destination WritableRaster with the specified Raster; this
+     * destination image data is empty and has the correct size and number of
+     * bands.
      * 
-     * @param src the source Raster.
-     * 
+     * @param src
+     *            the source Raster.
      * @return the WritableRaster.
      */
     public WritableRaster createCompatibleDestRaster(Raster src);
@@ -47,9 +50,10 @@
      * Performs a filter operation on the source Raster and stores the resulting
      * image data to the destination WritableRaster.
      * 
-     * @param src the source Raster.
-     * @param dst the destination WritableRaster, where the result is stored.
-     * 
+     * @param src
+     *            the source Raster.
+     * @param dst
+     *            the destination WritableRaster, where the result is stored.
      * @return the filtered WritableRaster.
      */
     public WritableRaster filter(Raster src, WritableRaster dst);
@@ -57,19 +61,20 @@
     /**
      * Gets the bounds of the filtered Raster.
      * 
-     * @param src the source Raster to be filtered.
-     * 
+     * @param src
+     *            the source Raster to be filtered.
      * @return the rectangle bounds of the filtered Raster.
      */
     public Rectangle2D getBounds2D(Raster src);
 
     /**
-     * Gets the point of the destination image which corresponds
-     * to the specified point in the source raster.
+     * Gets the point of the destination image which corresponds to the
+     * specified point in the source raster.
      * 
-     * @param srcPoint the point of the source raster.
-     * @param dstPoint the point where the result will be stored.
-     * 
+     * @param srcPoint
+     *            the point of the source raster.
+     * @param dstPoint
+     *            the point where the result will be stored.
      * @return the destination point.
      */
     public Point2D getPoint2D(Point2D srcPoint, Point2D dstPoint);
diff --git a/awt/java/awt/image/RenderedImage.java b/awt/java/awt/image/RenderedImage.java
index db3a4c8..5eafa64 100644
--- a/awt/java/awt/image/RenderedImage.java
+++ b/awt/java/awt/image/RenderedImage.java
@@ -18,35 +18,37 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.awt.Rectangle;
 import java.util.Vector;
 
 /**
- * The RenderedImage interface should be implemented by all objects which 
- * contains image data. The image data is represented as a single tile or 
- * an array of tiles.
+ * The RenderedImage interface should be implemented by all objects which
+ * contains image data. The image data is represented as a single tile or an
+ * array of tiles.
+ * 
+ * @since Android 1.0
  */
 public interface RenderedImage {
 
     /**
-     * Gets the property with the specified name from the property set 
-     * of this RenderedImage.
+     * Gets the property with the specified name from the property set of this
+     * RenderedImage.
      * 
-     * @param name the property's name.
-     * 
+     * @param name
+     *            the property's name.
      * @return the property value corresponded to this property's name.
      */
     public Object getProperty(String name);
 
     /**
-     * Copies the region of this RenderedImage to the specified 
-     * WritableRaster. The bounds of the region are the bounds of the 
-     * WritableRaster.
+     * Copies the region of this RenderedImage to the specified WritableRaster.
+     * The bounds of the region are the bounds of the WritableRaster.
      * 
-     * @param raster the WritableRaster.
-     * 
+     * @param raster
+     *            the WritableRaster.
      * @return the created WritableRaster.
      */
     public WritableRaster copyData(WritableRaster raster);
@@ -54,19 +56,19 @@
     /**
      * Gets the image data of the image's region as one tile.
      * 
-     * @param rect the rectangular region of RenderedImage.
-     * 
+     * @param rect
+     *            the rectangular region of RenderedImage.
      * @return the image data of the image's region as one tile.
      */
     public Raster getData(Rectangle rect);
 
     /**
-     * Gets all RenderedImage objects which are the source of this
-     * RenderedImage object.
+     * Gets all RenderedImage objects which are the source of this RenderedImage
+     * object.
      * 
-     * @return a Vector of RenderedImage objects which are the source 
-     * of this RenderedImage object or null, if there is no information
-     * about them.
+     * @return a Vector of RenderedImage objects which are the source of this
+     *         RenderedImage object or null, if there is no information about
+     *         them.
      */
     public Vector<RenderedImage> getSources();
 
@@ -85,14 +87,13 @@
     public SampleModel getSampleModel();
 
     /**
-     * Gets the tile corresponded to the specified indices in the tile
-     * array.
+     * Gets the tile corresponded to the specified indices in the tile array.
      * 
-     * @param tileX the X index of the tile.  
-     * @param tileY the Y index of the tile. 
-     * 
-     * @return the tile corresponded to the specified indices in the tile
-     * array.
+     * @param tileX
+     *            the X index of the tile.
+     * @param tileY
+     *            the Y index of the tile.
+     * @return the tile corresponded to the specified indices in the tile array.
      */
     public Raster getTile(int tileX, int tileY);
 
@@ -195,4 +196,3 @@
     public int getHeight();
 
 }
-
diff --git a/awt/java/awt/image/ReplicateScaleFilter.java b/awt/java/awt/image/ReplicateScaleFilter.java
index 9298125..51c0f49 100644
--- a/awt/java/awt/image/ReplicateScaleFilter.java
+++ b/awt/java/awt/image/ReplicateScaleFilter.java
@@ -18,53 +18,69 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.util.Hashtable;
 
 import org.apache.harmony.awt.internal.nls.Messages;
 
-
 /**
- * The ReplicateScaleFilter class scales an source image 
- * by replicating rows and columns of pixels to scale up or 
- * omitting rows and columns of pixels to scale down.
+ * The ReplicateScaleFilter class scales an source image by replicating rows and
+ * columns of pixels to scale up or omitting rows and columns of pixels to scale
+ * down.
+ * 
+ * @since Android 1.0
  */
 public class ReplicateScaleFilter extends ImageFilter {
 
-    /** The width of a source image. */
+    /**
+     * The width of a source image.
+     */
     protected int srcWidth;
 
-    /** The height of a source image. */
+    /**
+     * The height of a source image.
+     */
     protected int srcHeight;
 
-    /** The width of a destination image. */
+    /**
+     * The width of a destination image.
+     */
     protected int destWidth;
 
-    /** The height of a destination image. */
+    /**
+     * The height of a destination image.
+     */
     protected int destHeight;
 
-    /** The int array of source rows. */
+    /**
+     * The integer array of source rows.
+     */
     protected int[] srcrows;
 
-    /** The int array of source columns. */
+    /**
+     * The integer array of source columns.
+     */
     protected int[] srccols;
 
-    /** 
-     * An Object (byte array with a destination width) provides 
-     * a row of pixel data to the ImageConsumer. 
+    /**
+     * An Object (byte array with a destination width) provides a row of pixel
+     * data to the ImageConsumer.
      */
     protected Object outpixbuf;
 
     /**
-     * Instantiates a new ReplicateScaleFilter that filters 
-     * the image with the specified width and height.
+     * Instantiates a new ReplicateScaleFilter that filters the image with the
+     * specified width and height.
      * 
-     * @param width the width of scaled image.
-     * @param height the height of scaled image.
+     * @param width
+     *            the width of scaled image.
+     * @param height
+     *            the height of scaled image.
      */
     public ReplicateScaleFilter(int width, int height) {
-        if(width == 0 || height == 0) {
+        if (width == 0 || height == 0) {
             // awt.234=Width or Height equals zero
             throw new IllegalArgumentException(Messages.getString("awt.234")); //$NON-NLS-1$
         }
@@ -77,40 +93,40 @@
     @Override
     public void setProperties(Hashtable<?, ?> props) {
         Hashtable<Object, Object> fprops;
-        if(props == null) {
+        if (props == null) {
             fprops = new Hashtable<Object, Object>();
         } else {
-            fprops = (Hashtable<Object, Object>) props.clone();
+            fprops = (Hashtable<Object, Object>)props.clone();
         }
         String propName = "Rescale Filters"; //$NON-NLS-1$
-        String prop = "destWidth=" + destWidth + "; " +  //$NON-NLS-1$ //$NON-NLS-2$
-        "destHeight=" + destHeight; //$NON-NLS-1$
+        String prop = "destWidth=" + destWidth + "; " + //$NON-NLS-1$ //$NON-NLS-2$
+                "destHeight=" + destHeight; //$NON-NLS-1$
         Object o = fprops.get(propName);
-        if(o != null){
-            if(o instanceof String){
+        if (o != null) {
+            if (o instanceof String) {
                 prop = (String)o + "; " + prop; //$NON-NLS-1$
-            }else{
-                prop =  o.toString() + "; " + prop; //$NON-NLS-1$
+            } else {
+                prop = o.toString() + "; " + prop; //$NON-NLS-1$
             }
         }
         fprops.put(propName, prop);
         consumer.setProperties(fprops);
-     }
+    }
 
     // setPixels methods produce pixels according to Java API Spacification
 
     @Override
-    public void setPixels(int x, int y, int w, int h, 
-            ColorModel model, int[] pixels, int off, int scansize) {
-        
-        if(srccols == null) {
+    public void setPixels(int x, int y, int w, int h, ColorModel model, int[] pixels, int off,
+            int scansize) {
+
+        if (srccols == null) {
             initArrays();
         }
         int buff[];
-        if(outpixbuf == null || !(outpixbuf instanceof int[])){
+        if (outpixbuf == null || !(outpixbuf instanceof int[])) {
             buff = new int[destWidth];
             outpixbuf = buff;
-        }else{
+        } else {
             buff = (int[])outpixbuf;
         }
 
@@ -121,32 +137,31 @@
 
         int sx, sy, dx, dy;
         dy = dstY;
-        while((dy < destHeight) && ((sy = srcrows[dy]) < y + h)){
+        while ((dy < destHeight) && ((sy = srcrows[dy]) < y + h)) {
             dx = dstX;
             int srcOff = off + (sy - y) * scansize;
-            while((dx < destWidth) && ((sx = srccols[dx]) < x + w)){
+            while ((dx < destWidth) && ((sx = srccols[dx]) < x + w)) {
                 buff[dx] = pixels[srcOff + (sx - x)];
                 dx++;
             }
 
-            consumer.setPixels(dstX, dy, dx - dstX, 1, model, buff, 
-                    dstX, destWidth);
+            consumer.setPixels(dstX, dy, dx - dstX, 1, model, buff, dstX, destWidth);
             dy++;
         }
     }
 
     @Override
-    public void setPixels(int x, int y, int w, int h, 
-            ColorModel model, byte[] pixels, int off, int scansize) {
-        
-        if(srccols == null) {
+    public void setPixels(int x, int y, int w, int h, ColorModel model, byte[] pixels, int off,
+            int scansize) {
+
+        if (srccols == null) {
             initArrays();
         }
         byte buff[];
-        if(outpixbuf == null || !(outpixbuf instanceof byte[])){
+        if (outpixbuf == null || !(outpixbuf instanceof byte[])) {
             buff = new byte[destWidth];
             outpixbuf = buff;
-        }else{
+        } else {
             buff = (byte[])outpixbuf;
         }
 
@@ -157,16 +172,15 @@
 
         int sx, sy, dx, dy;
         dy = dstY;
-        while((dy < destHeight) && ((sy = srcrows[dy]) < y + h)){
+        while ((dy < destHeight) && ((sy = srcrows[dy]) < y + h)) {
             dx = dstX;
             int srcOff = off + (sy - y) * scansize;
-            while((dx < destWidth) && ((sx = srccols[dx]) < x + w)){
+            while ((dx < destWidth) && ((sx = srccols[dx]) < x + w)) {
                 buff[dx] = pixels[srcOff + (sx - x)];
                 dx++;
             }
 
-            consumer.setPixels(dstX, dy, dx - dstX, 1, model, buff, 
-                    dstX, destWidth);
+            consumer.setPixels(dstX, dy, dx - dstX, 1, model, buff, dstX, destWidth);
             dy++;
         }
     }
@@ -176,12 +190,12 @@
         srcWidth = w;
         srcHeight = h;
 
-        if(destWidth < 0 && destHeight < 0){
+        if (destWidth < 0 && destHeight < 0) {
             destWidth = srcWidth;
             destHeight = srcHeight;
-        }else if(destWidth < 0){
+        } else if (destWidth < 0) {
             destWidth = destHeight * srcWidth / srcHeight;
-        }else if(destHeight < 0){
+        } else if (destHeight < 0) {
             destHeight = destWidth * srcHeight / srcWidth;
         }
         consumer.setDimensions(destWidth, destHeight);
@@ -190,24 +204,22 @@
     /**
      * Initialization of srccols and srcrows arrays.
      */
-    private void initArrays(){
+    private void initArrays() {
         if ((destWidth < 0) || (destHeight < 0)) {
             throw new IndexOutOfBoundsException();
         }
-        
+
         srccols = new int[destWidth];
         int ca = srcWidth >>> 1;
-        for(int i = 0; i < destWidth; i++){
+        for (int i = 0; i < destWidth; i++) {
             srccols[i] = (i * srcWidth + ca) / destWidth;
         }
 
         srcrows = new int[destHeight];
         int ra = srcHeight >>> 1;
-        for(int i = 0; i < destHeight; i++){
+        for (int i = 0; i < destHeight; i++) {
             srcrows[i] = (i * srcHeight + ra) / destHeight;
         }
     }
 
 }
-
-
diff --git a/awt/java/awt/image/RescaleOp.java b/awt/java/awt/image/RescaleOp.java
index 0e96031..d7e2bd7 100644
--- a/awt/java/awt/image/RescaleOp.java
+++ b/awt/java/awt/image/RescaleOp.java
@@ -32,33 +32,43 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Class RescaleOp performs rescaling of the source image data
- * by multiplying the pixel values with a scale factor 
- * and then adding an offset.
+ * The Class RescaleOp performs rescaling of the source image data by
+ * multiplying the pixel values with a scale factor and then adding an offset.
+ * 
+ * @since Android 1.0
  */
 public class RescaleOp implements BufferedImageOp, RasterOp {
-    
-    /** The scale factors. */
+
+    /**
+     * The scale factors.
+     */
     private float scaleFactors[];
-    
-    /** The offsets. */
+
+    /**
+     * The offsets.
+     */
     private float offsets[];
-    
-    /** The hints. */
+
+    /**
+     * The hints.
+     */
     private RenderingHints hints;
 
     static {
         // TODO
-        //System.loadLibrary("imageops");
+        // System.loadLibrary("imageops");
     }
 
     /**
-     * Instantiates a new RescaleOp object with the specified 
-     * scale factors and offsets.
+     * Instantiates a new RescaleOp object with the specified scale factors and
+     * offsets.
      * 
-     * @param scaleFactors the array of scale factor values.
-     * @param offsets the array of offset values.
-     * @param hints the RenderingHints or null.
+     * @param scaleFactors
+     *            the array of scale factor values.
+     * @param offsets
+     *            the array of offset values.
+     * @param hints
+     *            the RenderingHints or null.
      */
     public RescaleOp(float[] scaleFactors, float[] offsets, RenderingHints hints) {
         int numFactors = Math.min(scaleFactors.length, offsets.length);
@@ -73,12 +83,15 @@
     }
 
     /**
-     * Instantiates a new RescaleOp object with the specified 
-     * scale factor and offset.
+     * Instantiates a new RescaleOp object with the specified scale factor and
+     * offset.
      * 
-     * @param scaleFactor the scale factor.
-     * @param offset the offset.
-     * @param hints the RenderingHints or null.
+     * @param scaleFactor
+     *            the scale factor.
+     * @param offset
+     *            the offset.
+     * @param hints
+     *            the RenderingHints or null.
      */
     public RescaleOp(float scaleFactor, float offset, RenderingHints hints) {
         scaleFactors = new float[1];
@@ -106,9 +119,8 @@
     /**
      * Gets the scale factors of this RescaleOp.
      * 
-     * @param scaleFactors the desired scale factors array will be copied 
-     * to this array.
-     * 
+     * @param scaleFactors
+     *            the desired scale factors array will be copied to this array.
      * @return the scale factors array.
      */
     public final float[] getScaleFactors(float[] scaleFactors) {
@@ -124,8 +136,8 @@
     /**
      * Gets the offsets array of this RescaleOp.
      * 
-     * @param offsets the desired offsets array will be copied to this array.
-     * 
+     * @param offsets
+     *            the desired offsets array will be copied to this array.
      * @return the offsets array of this RescaleOp.
      */
     public final float[] getOffsets(float[] offsets) {
@@ -168,17 +180,11 @@
             dstCM = ColorModel.getRGBdefault();
         }
 
-        WritableRaster r =
-                dstCM.isCompatibleSampleModel(src.getSampleModel()) ?
-                src.getRaster().createCompatibleWritableRaster(src.getWidth(), src.getHeight()) :
-                dstCM.createCompatibleWritableRaster(src.getWidth(), src.getHeight());
+        WritableRaster r = dstCM.isCompatibleSampleModel(src.getSampleModel()) ? src.getRaster()
+                .createCompatibleWritableRaster(src.getWidth(), src.getHeight()) : dstCM
+                .createCompatibleWritableRaster(src.getWidth(), src.getHeight());
 
-        return new BufferedImage(
-                dstCM,
-                r,
-                dstCM.isAlphaPremultiplied(),
-                null
-        );
+        return new BufferedImage(dstCM, r, dstCM.isAlphaPremultiplied(), null);
     }
 
     public final WritableRaster filter(Raster src, WritableRaster dst) {
@@ -186,26 +192,25 @@
             dst = createCompatibleDestRaster(src);
         } else {
             if (src.getNumBands() != dst.getNumBands()) {
-                // awt.21D=Number of src bands ({0}) does not match number of dst bands ({1})
+                // awt.21D=Number of src bands ({0}) does not match number of
+                // dst bands ({1})
                 throw new IllegalArgumentException(Messages.getString("awt.21D", //$NON-NLS-1$
                         src.getNumBands(), dst.getNumBands()));
             }
         }
 
-        if (
-                this.scaleFactors.length != 1 &&
-                this.scaleFactors.length != src.getNumBands()
-        ) {
-            // awt.21E=Number of scaling constants is not equal to the number of bands
+        if (this.scaleFactors.length != 1 && this.scaleFactors.length != src.getNumBands()) {
+            // awt.21E=Number of scaling constants is not equal to the number of
+            // bands
             throw new IllegalArgumentException(Messages.getString("awt.21E")); //$NON-NLS-1$
         }
 
         // TODO
-        //if (ippFilter(src, dst, BufferedImage.TYPE_CUSTOM, false) != 0)
-            if (slowFilter(src, dst, false) != 0) {
-                // awt.21F=Unable to transform source
-                throw new ImagingOpException (Messages.getString("awt.21F")); //$NON-NLS-1$
-            }
+        // if (ippFilter(src, dst, BufferedImage.TYPE_CUSTOM, false) != 0)
+        if (slowFilter(src, dst, false) != 0) {
+            // awt.21F=Unable to transform source
+            throw new ImagingOpException(Messages.getString("awt.21F")); //$NON-NLS-1$
+        }
 
         return dst;
     }
@@ -213,11 +218,13 @@
     /**
      * Slow filter.
      * 
-     * @param src the src
-     * @param dst the dst
-     * @param skipAlpha the skip alpha
-     * 
-     * @return the int
+     * @param src
+     *            the src.
+     * @param dst
+     *            the dst.
+     * @param skipAlpha
+     *            the skip alpha.
+     * @return the int.
      */
     private final int slowFilter(Raster src, WritableRaster dst, boolean skipAlpha) {
         SampleModel sm = src.getSampleModel();
@@ -235,7 +242,7 @@
         int[] masks = new int[numBands];
         int[] sampleSizes = sm.getSampleSize();
 
-        for (int i=0; i < numBands; i++){
+        for (int i = 0; i < numBands; i++) {
             maxValues[i] = (1 << sampleSizes[i]) - 1;
             masks[i] = ~(maxValues[i]);
         }
@@ -247,8 +254,8 @@
         // Cycle over pixels to be calculated
         if (skipAlpha) { // Always suppose that alpha channel is the last band
             if (scaleFactors.length > 1) {
-                for (int i = 0; i < pixels.length; ){
-                    for (int bandIdx = 0; bandIdx < numBands-1; bandIdx++, i++){
+                for (int i = 0; i < pixels.length;) {
+                    for (int bandIdx = 0; bandIdx < numBands - 1; bandIdx++, i++) {
                         pixels[i] = pixels[i] * scaleFactors[bandIdx] + offsets[bandIdx];
                         // Check for overflow now
                         if (((int)pixels[i] & masks[bandIdx]) != 0) {
@@ -263,8 +270,8 @@
                     i++;
                 }
             } else {
-                for (int i = 0; i < pixels.length; ){
-                    for (int bandIdx = 0; bandIdx < numBands-1; bandIdx++, i++){
+                for (int i = 0; i < pixels.length;) {
+                    for (int bandIdx = 0; bandIdx < numBands - 1; bandIdx++, i++) {
                         pixels[i] = pixels[i] * scaleFactors[0] + offsets[0];
                         // Check for overflow now
                         if (((int)pixels[i] & masks[bandIdx]) != 0) {
@@ -281,8 +288,8 @@
             }
         } else {
             if (scaleFactors.length > 1) {
-                for (int i = 0; i < pixels.length; ){
-                    for (int bandIdx = 0; bandIdx < numBands; bandIdx++, i++){
+                for (int i = 0; i < pixels.length;) {
+                    for (int bandIdx = 0; bandIdx < numBands; bandIdx++, i++) {
                         pixels[i] = pixels[i] * scaleFactors[bandIdx] + offsets[bandIdx];
                         // Check for overflow now
                         if (((int)pixels[i] & masks[bandIdx]) != 0) {
@@ -295,8 +302,8 @@
                     }
                 }
             } else {
-                for (int i = 0; i < pixels.length; ){
-                    for (int bandIdx = 0; bandIdx < numBands; bandIdx++, i++){
+                for (int i = 0; i < pixels.length;) {
+                    for (int bandIdx = 0; bandIdx < numBands; bandIdx++, i++) {
                         pixels[i] = pixels[i] * scaleFactors[0] + offsets[0];
                         // Check for overflow now
                         if (((int)pixels[i] & masks[bandIdx]) != 0) {
@@ -328,18 +335,20 @@
         int nComponents = srcCM.getNumComponents();
         boolean skipAlpha;
         if (srcCM.hasAlpha()) {
-            if (scaleFactors.length == 1 || scaleFactors.length == nComponents-1) {
+            if (scaleFactors.length == 1 || scaleFactors.length == nComponents - 1) {
                 skipAlpha = true;
             } else if (scaleFactors.length == nComponents) {
                 skipAlpha = false;
             } else {
-                // awt.21E=Number of scaling constants is not equal to the number of bands
+                // awt.21E=Number of scaling constants is not equal to the
+                // number of bands
                 throw new IllegalArgumentException(Messages.getString("awt.21E")); //$NON-NLS-1$
             }
         } else if (scaleFactors.length == 1 || scaleFactors.length == nComponents) {
             skipAlpha = false;
         } else {
-            // awt.21E=Number of scaling constants is not equal to the number of bands
+            // awt.21E=Number of scaling constants is not equal to the number of
+            // bands
             throw new IllegalArgumentException(Messages.getString("awt.21E")); //$NON-NLS-1$
         }
 
@@ -348,24 +357,22 @@
             finalDst = dst;
             dst = createCompatibleDestImage(src, srcCM);
         } else if (!srcCM.equals(dst.getColorModel())) {
-            // Treat BufferedImage.TYPE_INT_RGB and BufferedImage.TYPE_INT_ARGB as same
-            if (
-                    !((src.getType() == BufferedImage.TYPE_INT_RGB ||
-                       src.getType() == BufferedImage.TYPE_INT_ARGB) &&
-                      (dst.getType() == BufferedImage.TYPE_INT_RGB ||
-                       dst.getType() == BufferedImage.TYPE_INT_ARGB))
-            ) {
+            // Treat BufferedImage.TYPE_INT_RGB and BufferedImage.TYPE_INT_ARGB
+            // as same
+            if (!((src.getType() == BufferedImage.TYPE_INT_RGB || src.getType() == BufferedImage.TYPE_INT_ARGB) && (dst
+                    .getType() == BufferedImage.TYPE_INT_RGB || dst.getType() == BufferedImage.TYPE_INT_ARGB))) {
                 finalDst = dst;
                 dst = createCompatibleDestImage(src, srcCM);
             }
         }
 
         // TODO
-        //if (ippFilter(src.getRaster(), dst.getRaster(), src.getType(), skipAlpha) != 0)
-            if (slowFilter(src.getRaster(), dst.getRaster(), skipAlpha) != 0) {
-                // awt.21F=Unable to transform source
-                throw new ImagingOpException (Messages.getString("awt.21F")); //$NON-NLS-1$
-            }
+        // if (ippFilter(src.getRaster(), dst.getRaster(), src.getType(),
+        // skipAlpha) != 0)
+        if (slowFilter(src.getRaster(), dst.getRaster(), skipAlpha) != 0) {
+            // awt.21F=Unable to transform source
+            throw new ImagingOpException(Messages.getString("awt.21F")); //$NON-NLS-1$
+        }
 
         if (finalDst != null) {
             Graphics2D g = finalDst.createGraphics();
@@ -378,21 +385,26 @@
         return finalDst;
     }
 
-    // Don't forget to pass allocated arrays for levels and values, size should be numBands*4
+    // Don't forget to pass allocated arrays for levels and values, size should
+    // be numBands*4
     /**
      * Creates the levels.
      * 
-     * @param sm the sm
-     * @param numBands the num bands
-     * @param skipAlpha the skip alpha
-     * @param levels the levels
-     * @param values the values
-     * @param channelsOrder the channels order
+     * @param sm
+     *            the sm.
+     * @param numBands
+     *            the num bands.
+     * @param skipAlpha
+     *            the skip alpha.
+     * @param levels
+     *            the levels.
+     * @param values
+     *            the values.
+     * @param channelsOrder
+     *            the channels order.
      */
-    private final void createLevels(
-            SampleModel sm, int numBands, boolean skipAlpha,
-            int levels[], int values[], int channelsOrder[]
-    ) {
+    private final void createLevels(SampleModel sm, int numBands, boolean skipAlpha, int levels[],
+            int values[], int channelsOrder[]) {
         // Suppose same sample size for all channels, otherwise use slow filter
         int maxValue = (1 << sm.getSampleSize(0)) - 1;
 
@@ -411,17 +423,17 @@
         }
 
         if (skipAlpha) {
-            extScaleFactors[numBands-1] = 1;
-            extOffsets[numBands-1] = 0;
+            extScaleFactors[numBands - 1] = 1;
+            extOffsets[numBands - 1] = 0;
         }
 
         // Create a levels
-        for (int i=0; i<numBands; i++) {
+        for (int i = 0; i < numBands; i++) {
             if (extScaleFactors[i] == 0) {
-                levels[i*4] = 0;
-                levels[i*4+1] = 0;
-                levels[i*4+2] = maxValue+1;
-                levels[i*4+3] = maxValue+1;
+                levels[i * 4] = 0;
+                levels[i * 4 + 1] = 0;
+                levels[i * 4 + 2] = maxValue + 1;
+                levels[i * 4 + 3] = maxValue + 1;
             }
 
             float minLevel = -extOffsets[i] / extScaleFactors[i];
@@ -429,33 +441,33 @@
 
             if (minLevel < 0) {
                 minLevel = 0;
-            } else if (minLevel > maxValue){
+            } else if (minLevel > maxValue) {
                 minLevel = maxValue;
             }
 
             if (maxLevel < 0) {
                 maxLevel = 0;
-            } else if (maxLevel > maxValue){
+            } else if (maxLevel > maxValue) {
                 maxLevel = maxValue;
             }
 
-            levels[i*4] = 0;
+            levels[i * 4] = 0;
             if (minLevel > maxLevel) {
-                levels[i*4+1] = (int) maxLevel;
-                levels[i*4+2] = (int) minLevel;
+                levels[i * 4 + 1] = (int)maxLevel;
+                levels[i * 4 + 2] = (int)minLevel;
             } else {
-                levels[i*4+1] = (int) minLevel;
-                levels[i*4+2] = (int) maxLevel;
+                levels[i * 4 + 1] = (int)minLevel;
+                levels[i * 4 + 2] = (int)maxLevel;
             }
-            levels[i*4+3] = maxValue+1;
+            levels[i * 4 + 3] = maxValue + 1;
 
             // Fill values
-            for (int k=0; k<4; k++) {
-                int idx = i*4+k;
-                values[idx] = (int) (extScaleFactors[i] * levels[idx] + extOffsets[i]);
+            for (int k = 0; k < 4; k++) {
+                int idx = i * 4 + k;
+                values[idx] = (int)(extScaleFactors[i] * levels[idx] + extOffsets[i]);
                 if (values[idx] < 0) {
                     values[idx] = 0;
-                } else if (values[idx] > maxValue){
+                } else if (values[idx] > maxValue) {
                     values[idx] = maxValue;
                 }
             }
@@ -463,14 +475,14 @@
 
         // Reorder data if channels are stored in different order
         if (channelsOrder != null) {
-            int len = numBands*4;
+            int len = numBands * 4;
             int savedLevels[] = new int[len];
             int savedValues[] = new int[len];
             System.arraycopy(levels, 0, savedLevels, 0, len);
             System.arraycopy(values, 0, savedValues, 0, len);
             for (int i = 0; i < channelsOrder.length; i++) {
-                System.arraycopy(savedLevels, i*4, levels, channelsOrder[i]*4, 4);
-                System.arraycopy(savedValues, i*4, values, channelsOrder[i]*4, 4);
+                System.arraycopy(savedLevels, i * 4, levels, channelsOrder[i] * 4, 4);
+                System.arraycopy(savedValues, i * 4, values, channelsOrder[i] * 4, 4);
             }
         }
     }
@@ -479,18 +491,18 @@
     /**
      * Ipp filter.
      * 
-     * @param src the src
-     * @param dst the dst
-     * @param imageType the image type
-     * @param skipAlpha the skip alpha
-     * 
-     * @return the int
+     * @param src
+     *            the src.
+     * @param dst
+     *            the dst.
+     * @param imageType
+     *            the image type.
+     * @param skipAlpha
+     *            the skip alpha.
+     * @return the int.
      */
     @SuppressWarnings("unused")
-    private final int ippFilter(
-            Raster src, WritableRaster dst,
-            int imageType, boolean skipAlpha
-    ) {
+    private final int ippFilter(Raster src, WritableRaster dst, int imageType, boolean skipAlpha) {
         int res;
 
         int srcStride, dstStride;
@@ -503,9 +515,11 @@
             case BufferedImage.TYPE_INT_ARGB_PRE:
             case BufferedImage.TYPE_INT_RGB: {
                 channels = 4;
-                srcStride = src.getWidth()*4;
-                dstStride = dst.getWidth()*4;
-                channelsOrder = new int[] {2, 1, 0, 3};
+                srcStride = src.getWidth() * 4;
+                dstStride = dst.getWidth() * 4;
+                channelsOrder = new int[] {
+                        2, 1, 0, 3
+                };
                 break;
             }
 
@@ -513,8 +527,8 @@
             case BufferedImage.TYPE_4BYTE_ABGR_PRE:
             case BufferedImage.TYPE_INT_BGR: {
                 channels = 4;
-                srcStride = src.getWidth()*4;
-                dstStride = dst.getWidth()*4;
+                srcStride = src.getWidth() * 4;
+                dstStride = dst.getWidth() * 4;
                 break;
             }
 
@@ -527,9 +541,11 @@
 
             case BufferedImage.TYPE_3BYTE_BGR: {
                 channels = 3;
-                srcStride = src.getWidth()*3;
-                dstStride = dst.getWidth()*3;
-                channelsOrder = new int[] {2, 1, 0};
+                srcStride = src.getWidth() * 3;
+                dstStride = dst.getWidth() * 3;
+                channelsOrder = new int[] {
+                        2, 1, 0
+                };
                 break;
             }
 
@@ -544,55 +560,46 @@
                 SampleModel srcSM = src.getSampleModel();
                 SampleModel dstSM = dst.getSampleModel();
 
-                if (
-                        srcSM instanceof PixelInterleavedSampleModel &&
-                        dstSM instanceof PixelInterleavedSampleModel
-                ) {
+                if (srcSM instanceof PixelInterleavedSampleModel
+                        && dstSM instanceof PixelInterleavedSampleModel) {
                     // Check PixelInterleavedSampleModel
-                    if (
-                            srcSM.getDataType() != DataBuffer.TYPE_BYTE ||
-                            dstSM.getDataType() != DataBuffer.TYPE_BYTE
-                    ) {
+                    if (srcSM.getDataType() != DataBuffer.TYPE_BYTE
+                            || dstSM.getDataType() != DataBuffer.TYPE_BYTE) {
                         return slowFilter(src, dst, skipAlpha);
                     }
 
-                    channels = srcSM.getNumBands(); // Have IPP functions for 1, 3 and 4 channels
+                    channels = srcSM.getNumBands(); // Have IPP functions for 1,
+                    // 3 and 4 channels
                     if (!(channels == 1 || channels == 3 || channels == 4)) {
                         return slowFilter(src, dst, skipAlpha);
                     }
 
-                    srcStride = ((ComponentSampleModel) srcSM).getScanlineStride();
-                    dstStride = ((ComponentSampleModel) dstSM).getScanlineStride();
+                    srcStride = ((ComponentSampleModel)srcSM).getScanlineStride();
+                    dstStride = ((ComponentSampleModel)dstSM).getScanlineStride();
 
-                    channelsOrder = ((ComponentSampleModel) srcSM).getBandOffsets();
-                } else if (
-                        srcSM instanceof SinglePixelPackedSampleModel &&
-                        dstSM instanceof SinglePixelPackedSampleModel
-                ) {
+                    channelsOrder = ((ComponentSampleModel)srcSM).getBandOffsets();
+                } else if (srcSM instanceof SinglePixelPackedSampleModel
+                        && dstSM instanceof SinglePixelPackedSampleModel) {
                     // Check SinglePixelPackedSampleModel
-                    SinglePixelPackedSampleModel sppsm1 = (SinglePixelPackedSampleModel) srcSM;
-                    SinglePixelPackedSampleModel sppsm2 = (SinglePixelPackedSampleModel) dstSM;
+                    SinglePixelPackedSampleModel sppsm1 = (SinglePixelPackedSampleModel)srcSM;
+                    SinglePixelPackedSampleModel sppsm2 = (SinglePixelPackedSampleModel)dstSM;
 
                     channels = sppsm1.getNumBands();
 
-                     // TYPE_INT_RGB, TYPE_INT_ARGB...
-                    if (
-                            sppsm1.getDataType() != DataBuffer.TYPE_INT ||
-                            sppsm2.getDataType() != DataBuffer.TYPE_INT ||
-                            !(channels == 3 || channels == 4)
-                    ) {
+                    // TYPE_INT_RGB, TYPE_INT_ARGB...
+                    if (sppsm1.getDataType() != DataBuffer.TYPE_INT
+                            || sppsm2.getDataType() != DataBuffer.TYPE_INT
+                            || !(channels == 3 || channels == 4)) {
                         return slowFilter(src, dst, skipAlpha);
                     }
 
                     // Check compatibility of sample models
-                    if (
-                            !Arrays.equals(sppsm1.getBitOffsets(), sppsm2.getBitOffsets()) ||
-                            !Arrays.equals(sppsm1.getBitMasks(), sppsm2.getBitMasks())
-                    ) {
+                    if (!Arrays.equals(sppsm1.getBitOffsets(), sppsm2.getBitOffsets())
+                            || !Arrays.equals(sppsm1.getBitMasks(), sppsm2.getBitMasks())) {
                         return slowFilter(src, dst, skipAlpha);
                     }
 
-                    for (int i=0; i<channels; i++) {
+                    for (int i = 0; i < channels; i++) {
                         if (sppsm1.getSampleSize(i) != 8) {
                             return slowFilter(src, dst, skipAlpha);
                         }
@@ -600,11 +607,12 @@
 
                     channelsOrder = new int[channels];
                     int bitOffsets[] = sppsm1.getBitOffsets();
-                    for (int i=0; i<channels; i++) {
+                    for (int i = 0; i < channels; i++) {
                         channelsOrder[i] = bitOffsets[i] / 8;
                     }
 
-                    if (channels == 3) { // Don't skip channel now, could be optimized
+                    if (channels == 3) { // Don't skip channel now, could be
+                        // optimized
                         channels = 4;
                     }
 
@@ -616,12 +624,9 @@
 
                 // Fill offsets if there's a child raster
                 if (src.getParent() != null || dst.getParent() != null) {
-                    if (
-                            src.getSampleModelTranslateX() != 0 ||
-                            src.getSampleModelTranslateY() != 0 ||
-                            dst.getSampleModelTranslateX() != 0 ||
-                            dst.getSampleModelTranslateY() != 0
-                    ) {
+                    if (src.getSampleModelTranslateX() != 0 || src.getSampleModelTranslateY() != 0
+                            || dst.getSampleModelTranslateX() != 0
+                            || dst.getSampleModelTranslateY() != 0) {
                         offsets = new int[4];
                         offsets[0] = -src.getSampleModelTranslateX() + src.getMinX();
                         offsets[1] = -src.getSampleModelTranslateY() + src.getMinY();
@@ -632,8 +637,8 @@
             }
         }
 
-        int levels[] = new int[4*channels];
-        int values[] = new int[4*channels];
+        int levels[] = new int[4 * channels];
+        int values[] = new int[4 * channels];
 
         createLevels(src.getSampleModel(), channels, skipAlpha, levels, values, channelsOrder);
 
@@ -646,13 +651,8 @@
             return -1; // Unknown data buffer type
         }
 
-        res = LookupOp.ippLUT(
-            srcData, src.getWidth(), src.getHeight(), srcStride,
-            dstData, dst.getWidth(), dst.getHeight(), dstStride,
-            levels, values,
-            channels, offsets,
-            true
-        );
+        res = LookupOp.ippLUT(srcData, src.getWidth(), src.getHeight(), srcStride, dstData, dst
+                .getWidth(), dst.getHeight(), dstStride, levels, values, channels, offsets, true);
 
         return res;
     }
diff --git a/awt/java/awt/image/SampleModel.java b/awt/java/awt/image/SampleModel.java
index 44059a0..c967fa6 100644
--- a/awt/java/awt/image/SampleModel.java
+++ b/awt/java/awt/image/SampleModel.java
@@ -18,44 +18,57 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The SampleModel class is abstract class for retrieving pixel's samples
- * in the data of an image. Each pixel contains several samples. A 
- * sample is the set of values of the bands for single pixel. 
- * For example, each pixel in the RGB model contains three samples 
- * and there are three corresponding bands in the image 
- * data of such pixels representing red, green and blue components.
- * <p> 
- * The image data is represented as a Raster with a DataBuffer 
- * and a SampleModel. The SampleModel allows access to the samples in the 
- * DataBuffer. 
+ * The SampleModel class is abstract class for retrieving pixel's samples in the
+ * data of an image. Each pixel contains several samples. A sample is the set of
+ * values of the bands for single pixel. For example, each pixel in the RGB
+ * model contains three samples and there are three corresponding bands in the
+ * image data of such pixels representing red, green and blue components.
+ * <p>
+ * The image data is represented as a Raster with a DataBuffer and a
+ * SampleModel. The SampleModel allows access to the samples in the DataBuffer.
+ * 
+ * @since Android 1.0
  */
 public abstract class SampleModel {
 
-    /** The width of the image data which this SampleModel describes. */
+    /**
+     * The width of the image data which this SampleModel describes.
+     */
     protected int width;
 
-    /** The height of the image data which this SampleModel describes. */
+    /**
+     * The height of the image data which this SampleModel describes.
+     */
     protected int height;
 
-    /** The number of bands of image data which this SampleModel describes. */
+    /**
+     * The number of bands of image data which this SampleModel describes.
+     */
     protected int numBands;
 
-    /** The data type of the image data which this SampleModel describes. */
+    /**
+     * The data type of the image data which this SampleModel describes.
+     */
     protected int dataType;
 
     /**
-     * Instantiates a new SampleModel with the specified data type,
-     * width, height and number of bands.
+     * Instantiates a new SampleModel with the specified data type, width,
+     * height and number of bands.
      * 
-     * @param dataType the data type of the image data.
-     * @param w the width of the image data.
-     * @param h the height of the image data.
-     * @param numBands the number of bands of the image data.
+     * @param dataType
+     *            the data type of the image data.
+     * @param w
+     *            the width of the image data.
+     * @param h
+     *            the height of the image data.
+     * @param numBands
+     *            the number of bands of the image data.
      */
     public SampleModel(int dataType, int w, int h, int numBands) {
         if (w <= 0 || h <= 0) {
@@ -63,15 +76,14 @@
             throw new IllegalArgumentException(Messages.getString("awt.22E")); //$NON-NLS-1$
         }
 
-        double squre = ((double) w) * ((double) h);
+        double squre = ((double)w) * ((double)h);
         if (squre >= Integer.MAX_VALUE) {
             // awt.22F=The product of w and h is greater than Integer.MAX_VALUE
             throw new IllegalArgumentException(Messages.getString("awt.22F")); //$NON-NLS-1$
         }
 
-        if (dataType < DataBuffer.TYPE_BYTE ||
-                dataType > DataBuffer.TYPE_DOUBLE &&
-                dataType != DataBuffer.TYPE_UNDEFINED) {
+        if (dataType < DataBuffer.TYPE_BYTE || dataType > DataBuffer.TYPE_DOUBLE
+                && dataType != DataBuffer.TYPE_UNDEFINED) {
             // awt.230=dataType is not one of the supported data types
             throw new IllegalArgumentException(Messages.getString("awt.230")); //$NON-NLS-1$
         }
@@ -89,154 +101,156 @@
     }
 
     /**
-     * Gets the data array for the specified pixel of the specified 
-     * DataBuffer with one of the following types: 
-     * DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, 
-     * DataBuffer.TYPE_INT, DataBuffer.TYPE_SHORT, 
+     * Gets the data array for the specified pixel of the specified DataBuffer
+     * with one of the following types: DataBuffer.TYPE_BYTE,
+     * DataBuffer.TYPE_USHORT, DataBuffer.TYPE_INT, DataBuffer.TYPE_SHORT,
      * DataBuffer.TYPE_FLOAT, or DataBuffer.TYPE_DOUBLE.
      * 
-     * @param x the X coordinate of pixel.
-     * @param y the Y coordinate of pixel.
-     * @param obj the Object is a data where the result will be stored.
-     * @param data the image data.
-     * 
-     * @return the data array for the specified pixel of the specified 
-     * DataBuffer.
+     * @param x
+     *            the X coordinate of pixel.
+     * @param y
+     *            the Y coordinate of pixel.
+     * @param obj
+     *            the Object is a data where the result will be stored.
+     * @param data
+     *            the image data.
+     * @return the data array for the specified pixel of the specified
+     *         DataBuffer.
      */
-    public abstract Object getDataElements(int x, int y, Object obj,
-            DataBuffer data);
+    public abstract Object getDataElements(int x, int y, Object obj, DataBuffer data);
 
     /**
-     * Gets the array of pixel data for the specified rectangular 
-     * area of pixels of the specified DataBuffer with one of 
-     * the following types: 
-     * DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, 
-     * DataBuffer.TYPE_INT, DataBuffer.TYPE_SHORT, 
-     * DataBuffer.TYPE_FLOAT, or DataBuffer.TYPE_DOUBLE.
+     * Gets the array of pixel data for the specified rectangular area of pixels
+     * of the specified DataBuffer with one of the following types:
+     * DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, DataBuffer.TYPE_INT,
+     * DataBuffer.TYPE_SHORT, DataBuffer.TYPE_FLOAT, or DataBuffer.TYPE_DOUBLE.
      * 
-     * 
-     * @param x the X coordinate of the rectangular pixel area.
-     * @param y the Y coordinate of the rectangular pixel area.
-     * @param w the width of the rectangular pixel area.
-     * @param h the height of the rectangular pixel area.
-     * @param obj the Object is an array with the primitive type,
-     * where the result array will be stored.
-     * @param data the image data.
-     * 
-     * @return the array of pixel data for the specified rectangular 
-     * area of pixels of the specified DataBuffer object.
+     * @param x
+     *            the X coordinate of the rectangular pixel area.
+     * @param y
+     *            the Y coordinate of the rectangular pixel area.
+     * @param w
+     *            the width of the rectangular pixel area.
+     * @param h
+     *            the height of the rectangular pixel area.
+     * @param obj
+     *            the Object is an array with the primitive type, where the
+     *            result array will be stored.
+     * @param data
+     *            the image data.
+     * @return the array of pixel data for the specified rectangular area of
+     *         pixels of the specified DataBuffer object.
      */
-    public Object getDataElements(int x, int y, int w, int h, Object obj,
-            DataBuffer data) {
+    public Object getDataElements(int x, int y, int w, int h, Object obj, DataBuffer data) {
         int numDataElements = getNumDataElements();
         int idx = 0;
 
         switch (getTransferType()) {
-        case DataBuffer.TYPE_BYTE:
-            byte bdata[];
-            byte bbuf[] = null;
+            case DataBuffer.TYPE_BYTE:
+                byte bdata[];
+                byte bbuf[] = null;
 
-            if (obj == null) {
-                bdata = new byte[numDataElements * w * h];
-            } else {
-                bdata = (byte[]) obj;
-            }
+                if (obj == null) {
+                    bdata = new byte[numDataElements * w * h];
+                } else {
+                    bdata = (byte[])obj;
+                }
 
-            for (int i = y; i < y + h; i++) {
-                for (int j = x; j < x + w; j++) {
-                    bbuf = (byte[]) getDataElements(j, i, bbuf, data);
-                    for (int n = 0; n < numDataElements; n++) {
-                        bdata[idx++] = bbuf[n];
+                for (int i = y; i < y + h; i++) {
+                    for (int j = x; j < x + w; j++) {
+                        bbuf = (byte[])getDataElements(j, i, bbuf, data);
+                        for (int n = 0; n < numDataElements; n++) {
+                            bdata[idx++] = bbuf[n];
+                        }
                     }
                 }
-            }
-            obj = bdata;
-            break;
+                obj = bdata;
+                break;
 
-        case DataBuffer.TYPE_SHORT:
-        case DataBuffer.TYPE_USHORT:
-            short sdata[];
-            short sbuf[] = null;
+            case DataBuffer.TYPE_SHORT:
+            case DataBuffer.TYPE_USHORT:
+                short sdata[];
+                short sbuf[] = null;
 
-            if (obj == null) {
-                sdata = new short[numDataElements * w * h];
-            } else {
-                sdata = (short[]) obj;
-            }
+                if (obj == null) {
+                    sdata = new short[numDataElements * w * h];
+                } else {
+                    sdata = (short[])obj;
+                }
 
-            for (int i = y; i < y + h; i++) {
-                for (int j = x; j < x + w; j++) {
-                    sbuf = (short[]) getDataElements(j, i, sbuf, data);
-                    for (int n = 0; n < numDataElements; n++) {
-                        sdata[idx++] = sbuf[n];
+                for (int i = y; i < y + h; i++) {
+                    for (int j = x; j < x + w; j++) {
+                        sbuf = (short[])getDataElements(j, i, sbuf, data);
+                        for (int n = 0; n < numDataElements; n++) {
+                            sdata[idx++] = sbuf[n];
+                        }
                     }
                 }
-            }
-            obj = sdata;
-            break;
+                obj = sdata;
+                break;
 
-        case DataBuffer.TYPE_INT:
-            int idata[];
-            int ibuf[] = null;
+            case DataBuffer.TYPE_INT:
+                int idata[];
+                int ibuf[] = null;
 
-            if (obj == null) {
-                idata = new int[numDataElements * w * h];
-            } else {
-                idata = (int[]) obj;
-            }
+                if (obj == null) {
+                    idata = new int[numDataElements * w * h];
+                } else {
+                    idata = (int[])obj;
+                }
 
-            for (int i = y; i < y + h; i++) {
-                for (int j = x; j < x + w; j++) {
-                    ibuf = (int[]) getDataElements(j, i, ibuf, data);
-                    for (int n = 0; n < numDataElements; n++) {
-                        idata[idx++] = ibuf[n];
+                for (int i = y; i < y + h; i++) {
+                    for (int j = x; j < x + w; j++) {
+                        ibuf = (int[])getDataElements(j, i, ibuf, data);
+                        for (int n = 0; n < numDataElements; n++) {
+                            idata[idx++] = ibuf[n];
+                        }
                     }
                 }
-            }
-            obj = idata;
-            break;
+                obj = idata;
+                break;
 
-        case DataBuffer.TYPE_FLOAT:
-            float fdata[];
-            float fbuf[] = null;
+            case DataBuffer.TYPE_FLOAT:
+                float fdata[];
+                float fbuf[] = null;
 
-            if (obj == null) {
-                fdata = new float[numDataElements * w * h];
-            } else {
-                fdata = (float[]) obj;
-            }
+                if (obj == null) {
+                    fdata = new float[numDataElements * w * h];
+                } else {
+                    fdata = (float[])obj;
+                }
 
-            for (int i = y; i < y + h; i++) {
-                for (int j = x; j < x + w; j++) {
-                    fbuf = (float[]) getDataElements(j, i, fbuf, data);
-                    for (int n = 0; n < numDataElements; n++) {
-                        fdata[idx++] = fbuf[n];
+                for (int i = y; i < y + h; i++) {
+                    for (int j = x; j < x + w; j++) {
+                        fbuf = (float[])getDataElements(j, i, fbuf, data);
+                        for (int n = 0; n < numDataElements; n++) {
+                            fdata[idx++] = fbuf[n];
+                        }
                     }
                 }
-            }
-            obj = fdata;
-            break;
+                obj = fdata;
+                break;
 
-        case DataBuffer.TYPE_DOUBLE:
-            double ddata[];
-            double dbuf[] = null;
+            case DataBuffer.TYPE_DOUBLE:
+                double ddata[];
+                double dbuf[] = null;
 
-            if (obj == null) {
-                ddata = new double[numDataElements * w * h];
-            } else {
-                ddata = (double[]) obj;
-            }
+                if (obj == null) {
+                    ddata = new double[numDataElements * w * h];
+                } else {
+                    ddata = (double[])obj;
+                }
 
-            for (int i = y; i < y + h; i++) {
-                for (int j = x; j < x + w; j++) {
-                    dbuf = (double[]) getDataElements(j, i, dbuf, data);
-                    for (int n = 0; n < numDataElements; n++) {
-                        ddata[idx++] = dbuf[n];
+                for (int i = y; i < y + h; i++) {
+                    for (int j = x; j < x + w; j++) {
+                        dbuf = (double[])getDataElements(j, i, dbuf, data);
+                        for (int n = 0; n < numDataElements; n++) {
+                            ddata[idx++] = dbuf[n];
+                        }
                     }
                 }
-            }
-            obj = ddata;
-            break;
+                obj = ddata;
+                break;
 
         }
 
@@ -244,140 +258,145 @@
     }
 
     /**
-     * Sets the data for a single pixel in the specified DataBuffer
-     * from a primitive array with one of the following types: 
-     * DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, 
-     * DataBuffer.TYPE_INT, DataBuffer.TYPE_SHORT, 
-     * DataBuffer.TYPE_FLOAT, or DataBuffer.TYPE_DOUBLE. 
+     * Sets the data for a single pixel in the specified DataBuffer from a
+     * primitive array with one of the following types: DataBuffer.TYPE_BYTE,
+     * DataBuffer.TYPE_USHORT, DataBuffer.TYPE_INT, DataBuffer.TYPE_SHORT,
+     * DataBuffer.TYPE_FLOAT, or DataBuffer.TYPE_DOUBLE.
      * 
-     * @param x the X coordinate of pixel.
-     * @param y the Y coordinate of pixel.
-     * @param obj the Object - the array of primitive pixel data
-     * to be set. 
-     * @param data the image data.
+     * @param x
+     *            the X coordinate of pixel.
+     * @param y
+     *            the Y coordinate of pixel.
+     * @param obj
+     *            the Object - the array of primitive pixel data to be set.
+     * @param data
+     *            the image data.
      */
-    public abstract void setDataElements(int x, int y, Object obj,
-            DataBuffer data);
+    public abstract void setDataElements(int x, int y, Object obj, DataBuffer data);
 
     /**
-     * Sets the data elements for a rectangular area of pixels in 
-     * the specified DataBuffer from a primitive array with one of 
-     * the following types: DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, 
-     * DataBuffer.TYPE_INT, DataBuffer.TYPE_SHORT, 
-     * DataBuffer.TYPE_FLOAT, or DataBuffer.TYPE_DOUBLE. 
+     * Sets the data elements for a rectangular area of pixels in the specified
+     * DataBuffer from a primitive array with one of the following types:
+     * DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, DataBuffer.TYPE_INT,
+     * DataBuffer.TYPE_SHORT, DataBuffer.TYPE_FLOAT, or DataBuffer.TYPE_DOUBLE.
      * 
-     * @param x the X coordinate of the specified rectangular area.
-     * @param y the Y coordinate of the specified rectangular area.
-     * @param w the width of rectangle.
-     * @param h the height of rectangle.
-     * @param obj the Object - the array of primitive pixel data
-     * to be set. 
-     * @param data the image data.
+     * @param x
+     *            the X coordinate of the specified rectangular area.
+     * @param y
+     *            the Y coordinate of the specified rectangular area.
+     * @param w
+     *            the width of rectangle.
+     * @param h
+     *            the height of rectangle.
+     * @param obj
+     *            the Object - the array of primitive pixel data to be set.
+     * @param data
+     *            the image data.
      */
-    public void setDataElements(int x, int y, int w, int h, Object obj,
-            DataBuffer data) {
+    public void setDataElements(int x, int y, int w, int h, Object obj, DataBuffer data) {
         int numDataElements = getNumDataElements();
         int idx = 0;
 
         switch (getTransferType()) {
-        case DataBuffer.TYPE_BYTE:
-            byte bbuf[] = new byte[numDataElements];
-            for (int i = y; i < y + h; i++) {
-                for (int j = x; j < x + w; j++) {
-                    for (int n = 0; n < numDataElements; n++) {
-                        bbuf[n] = ((byte[]) obj)[idx++];
+            case DataBuffer.TYPE_BYTE:
+                byte bbuf[] = new byte[numDataElements];
+                for (int i = y; i < y + h; i++) {
+                    for (int j = x; j < x + w; j++) {
+                        for (int n = 0; n < numDataElements; n++) {
+                            bbuf[n] = ((byte[])obj)[idx++];
+                        }
+                        setDataElements(j, i, bbuf, data);
                     }
-                    setDataElements(j, i, bbuf, data);
                 }
-            }
 
-            break;
+                break;
 
-        case DataBuffer.TYPE_SHORT:
-        case DataBuffer.TYPE_USHORT:
-            short sbuf[] = new short[numDataElements];
-            for (int i = y; i < y + h; i++) {
-                for (int j = x; j < x + w; j++) {
-                    for (int n = 0; n < numDataElements; n++) {
-                        sbuf[n] = ((short[]) obj)[idx++];
+            case DataBuffer.TYPE_SHORT:
+            case DataBuffer.TYPE_USHORT:
+                short sbuf[] = new short[numDataElements];
+                for (int i = y; i < y + h; i++) {
+                    for (int j = x; j < x + w; j++) {
+                        for (int n = 0; n < numDataElements; n++) {
+                            sbuf[n] = ((short[])obj)[idx++];
+                        }
+                        setDataElements(j, i, sbuf, data);
                     }
-                    setDataElements(j, i, sbuf, data);
                 }
-            }
-            break;
+                break;
 
-        case DataBuffer.TYPE_INT:
-            int ibuf[] = new int[numDataElements];
-            for (int i = y; i < y + h; i++) {
-                for (int j = x; j < x + w; j++) {
-                    for (int n = 0; n < numDataElements; n++) {
-                        ibuf[n] = ((int[]) obj)[idx++];
+            case DataBuffer.TYPE_INT:
+                int ibuf[] = new int[numDataElements];
+                for (int i = y; i < y + h; i++) {
+                    for (int j = x; j < x + w; j++) {
+                        for (int n = 0; n < numDataElements; n++) {
+                            ibuf[n] = ((int[])obj)[idx++];
+                        }
+                        setDataElements(j, i, ibuf, data);
                     }
-                    setDataElements(j, i, ibuf, data);
                 }
-            }
-            break;
+                break;
 
-        case DataBuffer.TYPE_FLOAT:
-            float fbuf[] = new float[numDataElements];
-            for (int i = y; i < y + h; i++) {
-                for (int j = x; j < x + w; j++) {
-                    for (int n = 0; n < numDataElements; n++) {
-                        fbuf[n] = ((float[]) obj)[idx++];
+            case DataBuffer.TYPE_FLOAT:
+                float fbuf[] = new float[numDataElements];
+                for (int i = y; i < y + h; i++) {
+                    for (int j = x; j < x + w; j++) {
+                        for (int n = 0; n < numDataElements; n++) {
+                            fbuf[n] = ((float[])obj)[idx++];
+                        }
+                        setDataElements(j, i, fbuf, data);
                     }
-                    setDataElements(j, i, fbuf, data);
                 }
-            }
-            break;
+                break;
 
-        case DataBuffer.TYPE_DOUBLE:
-            double dbuf[] = new double[numDataElements];
-            for (int i = y; i < y + h; i++) {
-                for (int j = x; j < x + w; j++) {
-                    for (int n = 0; n < numDataElements; n++) {
-                        dbuf[n] = ((double[]) obj)[idx++];
+            case DataBuffer.TYPE_DOUBLE:
+                double dbuf[] = new double[numDataElements];
+                for (int i = y; i < y + h; i++) {
+                    for (int j = x; j < x + w; j++) {
+                        for (int n = 0; n < numDataElements; n++) {
+                            dbuf[n] = ((double[])obj)[idx++];
+                        }
+                        setDataElements(j, i, dbuf, data);
                     }
-                    setDataElements(j, i, dbuf, data);
                 }
-            }
-            break;
+                break;
 
         }
     }
 
     /**
-     * Creates a new SampleModel with the specified bands of 
-     * this SampleModel.
+     * Creates a new SampleModel with the specified bands of this SampleModel.
      * 
-     * @param bands the array of bands from this SampleModel.
-     * 
-     * @return the SampleModel with the specified bands of 
-     * this SampleModel.
+     * @param bands
+     *            the array of bands from this SampleModel.
+     * @return the SampleModel with the specified bands of this SampleModel.
      */
     public abstract SampleModel createSubsetSampleModel(int bands[]);
 
     /**
-     * Creates the SampleModel which has the same data as in 
-     * this SampleModel with a different width and height.
+     * Creates the SampleModel which has the same data as in this SampleModel
+     * with a different width and height.
      * 
-     * @param a0 the width of the image data.
-     * @param a1 the height of the image data.
-     * 
-     * @return the SampleModel which has the same data as in 
-     * this SampleModel with a different width and height.
+     * @param a0
+     *            the width of the image data.
+     * @param a1
+     *            the height of the image data.
+     * @return the SampleModel which has the same data as in this SampleModel
+     *         with a different width and height.
      */
     public abstract SampleModel createCompatibleSampleModel(int a0, int a1);
 
     /**
-     * Gets the samples of the specified pixel as a int array.
+     * Gets the samples of the specified pixel as an integer array.
      * 
-     * @param x the X coordinate of pixel.
-     * @param y the Y coordinate of pixel.
-     * @param iArray the int array where result will be stored.
-     * @param data the image data.
-     * 
-     * @return the int array with the samples of the specified pixel.
-
+     * @param x
+     *            the X coordinate of pixel.
+     * @param y
+     *            the Y coordinate of pixel.
+     * @param iArray
+     *            the integer array where result will be stored.
+     * @param data
+     *            the image data.
+     * @return the integer array with the samples of the specified pixel.
      */
     public int[] getPixel(int x, int y, int iArray[], DataBuffer data) {
         if (x < 0 || y < 0 || x >= this.width || y >= this.height) {
@@ -400,12 +419,16 @@
     }
 
     /**
-     * Sets a pixel of the DataBuffer from a int array of samples. 
+     * Sets a pixel of the DataBuffer from a integer array of samples.
      * 
-     * @param x the X coordinate of pixel.
-     * @param y the Y coordinate of pixel.
-     * @param iArray the int array.
-     * @param data the image data.
+     * @param x
+     *            the X coordinate of pixel.
+     * @param y
+     *            the Y coordinate of pixel.
+     * @param iArray
+     *            the integer array.
+     * @param data
+     *            the image data.
      */
     public void setPixel(int x, int y, int iArray[], DataBuffer data) {
         if (x < 0 || y < 0 || x >= this.width || y >= this.height) {
@@ -420,11 +443,14 @@
     /**
      * Gets the samples of the specified pixel as a float array.
      * 
-     * @param x the X coordinate of pixel.
-     * @param y the Y coordinate of pixel.
-     * @param fArray the float array where result will be stored.
-     * @param data the image data.
-     * 
+     * @param x
+     *            the X coordinate of pixel.
+     * @param y
+     *            the Y coordinate of pixel.
+     * @param fArray
+     *            the float array where result will be stored.
+     * @param data
+     *            the image data.
      * @return the float array with the samples of the specified pixel.
      */
     public float[] getPixel(int x, int y, float fArray[], DataBuffer data) {
@@ -448,12 +474,16 @@
     }
 
     /**
-     * Sets a pixel of the DataBuffer from a float array of samples. 
+     * Sets a pixel of the DataBuffer from a float array of samples.
      * 
-     * @param x the X coordinate of pixel.
-     * @param y the Y coordinate of pixel.
-     * @param fArray the float array.
-     * @param data the image data.
+     * @param x
+     *            the X coordinate of pixel.
+     * @param y
+     *            the Y coordinate of pixel.
+     * @param fArray
+     *            the float array.
+     * @param data
+     *            the image data.
      */
     public void setPixel(int x, int y, float fArray[], DataBuffer data) {
         if (x < 0 || y < 0 || x >= this.width || y >= this.height) {
@@ -468,11 +498,14 @@
     /**
      * Gets the samples of the specified pixel as a double array.
      * 
-     * @param x the X coordinate of pixel.
-     * @param y the Y coordinate of pixel.
-     * @param dArray the double array where result will be stored.
-     * @param data the image data.
-     * 
+     * @param x
+     *            the X coordinate of pixel.
+     * @param y
+     *            the Y coordinate of pixel.
+     * @param dArray
+     *            the double array where result will be stored.
+     * @param data
+     *            the image data.
      * @return the double array with the samples of the specified pixel.
      */
     public double[] getPixel(int x, int y, double dArray[], DataBuffer data) {
@@ -496,12 +529,16 @@
     }
 
     /**
-     * Sets a pixel of the DataBuffer from a double array of samples. 
+     * Sets a pixel of the DataBuffer from a double array of samples.
      * 
-     * @param x the X coordinate of pixel.
-     * @param y the Y coordinate of pixel.
-     * @param dArray the double array.
-     * @param data the image data.
+     * @param x
+     *            the X coordinate of pixel.
+     * @param y
+     *            the Y coordinate of pixel.
+     * @param dArray
+     *            the double array.
+     * @param data
+     *            the image data.
      */
     public void setPixel(int x, int y, double dArray[], DataBuffer data) {
         if (x < 0 || y < 0 || x >= this.width || y >= this.height) {
@@ -514,43 +551,49 @@
     }
 
     /**
-     * Gets the sample of a specified band for the specified pixel
-     * as an int.
+     * Gets the sample of a specified band for the specified pixel as an
+     * integer.
      * 
-     * @param x the X coordinate of pixel.
-     * @param y the Y coordinate of pixel.
-     * @param b the specified band.
-     * @param data the image data.
-     * 
+     * @param x
+     *            the X coordinate of pixel.
+     * @param y
+     *            the Y coordinate of pixel.
+     * @param b
+     *            the specified band.
+     * @param data
+     *            the image data.
      * @return the sample of a specified band for the specified pixel.
      */
     public abstract int getSample(int x, int y, int b, DataBuffer data);
 
     /**
-     * Gets the sample of a specified band for the specified pixel
-     * as a float.
+     * Gets the sample of a specified band for the specified pixel as a float.
      * 
-     * @param x the X coordinate of pixel.
-     * @param y the Y coordinate of pixel.
-     * @param b the specified band.
-     * @param data the image data.
-     * 
+     * @param x
+     *            the X coordinate of pixel.
+     * @param y
+     *            the Y coordinate of pixel.
+     * @param b
+     *            the specified band.
+     * @param data
+     *            the image data.
      * @return the sample of a specified band for the specified pixel.
-
      */
     public float getSampleFloat(int x, int y, int b, DataBuffer data) {
         return getSample(x, y, b, data);
     }
 
     /**
-     * Gets the sample of a specified band for the specified pixel
-     * as a double.
+     * Gets the sample of a specified band for the specified pixel as a double.
      * 
-     * @param x the X coordinate of pixel.
-     * @param y the Y coordinate of pixel.
-     * @param b the specified band.
-     * @param data the image data.
-     * 
+     * @param x
+     *            the X coordinate of pixel.
+     * @param y
+     *            the Y coordinate of pixel.
+     * @param b
+     *            the specified band.
+     * @param data
+     *            the image data.
      * @return the sample of a specified band for the specified pixel.
      */
     public double getSampleDouble(int x, int y, int b, DataBuffer data) {
@@ -558,21 +601,25 @@
     }
 
     /**
-     * Gets the samples of the specified rectangular area of pixels
-     * as a int array.
+     * Gets the samples of the specified rectangular area of pixels as an
+     * integer array.
      * 
-     * @param x the X coordinate of the rectangle of pixels.
-     * @param y the Y coordinate of the rectangle of pixels.
-     * @param w the width of the rectangle of pixels.
-     * @param h the height of the rectangle of pixels.
-     * @param iArray the int array where result will be stored.
-     * @param data the image data.
-     * 
-     * @return the int array with the samples of the specified 
-     * rectangular area of pixels.
+     * @param x
+     *            the X coordinate of the rectangle of pixels.
+     * @param y
+     *            the Y coordinate of the rectangle of pixels.
+     * @param w
+     *            the width of the rectangle of pixels.
+     * @param h
+     *            the height of the rectangle of pixels.
+     * @param iArray
+     *            the integer array where result will be stored.
+     * @param data
+     *            the image data.
+     * @return the integer array with the samples of the specified rectangular
+     *         area of pixels.
      */
-    public int[] getPixels(int x, int y, int w, int h, int iArray[],
-            DataBuffer data) {
+    public int[] getPixels(int x, int y, int w, int h, int iArray[], DataBuffer data) {
         if (x < 0 || y < 0 || x + w > this.width || y + h > this.height) {
             // awt.63=Coordinates are not in bounds
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
@@ -597,18 +644,23 @@
     }
 
     /**
-     * Sets all of the samples for a rectangular area of pixels of the DataBuffer
-     * from an int array. 
+     * Sets all of the samples for a rectangular area of pixels of the
+     * DataBuffer from an integer array.
      * 
-     * @param x the X coordinate of the rectangle of pixels.
-     * @param y the Y coordinate of the rectangle of pixels.
-     * @param w the width of the rectangle of pixels.
-     * @param h the height of the rectangle of pixels.
-     * @param iArray the int array.
-     * @param data the image data.
+     * @param x
+     *            the X coordinate of the rectangle of pixels.
+     * @param y
+     *            the Y coordinate of the rectangle of pixels.
+     * @param w
+     *            the width of the rectangle of pixels.
+     * @param h
+     *            the height of the rectangle of pixels.
+     * @param iArray
+     *            the integer array.
+     * @param data
+     *            the image data.
      */
-    public void setPixels(int x, int y, int w, int h, int iArray[],
-            DataBuffer data) {
+    public void setPixels(int x, int y, int w, int h, int iArray[], DataBuffer data) {
         if (x < 0 || y < 0 || x + w > this.width || y + h > this.height) {
             // awt.63=Coordinates are not in bounds
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
@@ -624,21 +676,25 @@
     }
 
     /**
-     * Gets the samples of the specified rectangular area of pixels 
-     * as a float array.
+     * Gets the samples of the specified rectangular area of pixels as a float
+     * array.
      * 
-     * @param x the X coordinate of the rectangle of pixels.
-     * @param y the Y coordinate of the rectangle of pixels.
-     * @param w the width of the rectangle of pixels.
-     * @param h the height of the rectangle of pixels.
-     * @param fArray the float array where result will be stored.
-     * @param data the image data.
-     * 
-     * @return the float array with the samples of the specified 
-     * rectangular area of pixels.
+     * @param x
+     *            the X coordinate of the rectangle of pixels.
+     * @param y
+     *            the Y coordinate of the rectangle of pixels.
+     * @param w
+     *            the width of the rectangle of pixels.
+     * @param h
+     *            the height of the rectangle of pixels.
+     * @param fArray
+     *            the float array where result will be stored.
+     * @param data
+     *            the image data.
+     * @return the float array with the samples of the specified rectangular
+     *         area of pixels.
      */
-    public float[] getPixels(int x, int y, int w, int h, float fArray[],
-            DataBuffer data) {
+    public float[] getPixels(int x, int y, int w, int h, float fArray[], DataBuffer data) {
         if (x < 0 || y < 0 || x + w > this.width || y + h > this.height) {
             // awt.63=Coordinates are not in bounds
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
@@ -663,18 +719,23 @@
     }
 
     /**
-     * Sets all of the samples for a rectangular area of pixels of the DataBuffer
-     * from a float array. 
+     * Sets all of the samples for a rectangular area of pixels of the
+     * DataBuffer from a float array.
      * 
-     * @param x the X coordinate of the rectangle of pixels.
-     * @param y the Y coordinate of the rectangle of pixels.
-     * @param w the width of the rectangle of pixels.
-     * @param h the height of the rectangle of pixels.
-     * @param fArray the float array.
-     * @param data the image data.
+     * @param x
+     *            the X coordinate of the rectangle of pixels.
+     * @param y
+     *            the Y coordinate of the rectangle of pixels.
+     * @param w
+     *            the width of the rectangle of pixels.
+     * @param h
+     *            the height of the rectangle of pixels.
+     * @param fArray
+     *            the float array.
+     * @param data
+     *            the image data.
      */
-    public void setPixels(int x, int y, int w, int h, float fArray[],
-            DataBuffer data) {
+    public void setPixels(int x, int y, int w, int h, float fArray[], DataBuffer data) {
         if (x < 0 || y < 0 || x + w > this.width || y + h > this.height) {
             // awt.63=Coordinates are not in bounds
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
@@ -690,21 +751,25 @@
     }
 
     /**
-     * Gets the samples of the specified rectangular area of pixels 
-     * as a double array.
+     * Gets the samples of the specified rectangular area of pixels as a double
+     * array.
      * 
-     * @param x the X coordinate of the rectangle of pixels.
-     * @param y the Y coordinate of the rectangle of pixels.
-     * @param w the width of the rectangle of pixels.
-     * @param h the height of the rectangle of pixels.
-     * @param dArray the double array where result will be stored.
-     * @param data the image data.
-     * 
-     * @return the double array with the samples of the specified 
-     * rectangular area of pixels.
+     * @param x
+     *            the X coordinate of the rectangle of pixels.
+     * @param y
+     *            the Y coordinate of the rectangle of pixels.
+     * @param w
+     *            the width of the rectangle of pixels.
+     * @param h
+     *            the height of the rectangle of pixels.
+     * @param dArray
+     *            the double array where result will be stored.
+     * @param data
+     *            the image data.
+     * @return the double array with the samples of the specified rectangular
+     *         area of pixels.
      */
-    public double[] getPixels(int x, int y, int w, int h, double dArray[],
-            DataBuffer data) {
+    public double[] getPixels(int x, int y, int w, int h, double dArray[], DataBuffer data) {
         if (x < 0 || y < 0 || x + w > this.width || y + h > this.height) {
             // awt.63=Coordinates are not in bounds
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
@@ -729,18 +794,23 @@
     }
 
     /**
-     * Sets all of the samples for a rectangular area of pixels of the DataBuffer
-     * from a double array. 
+     * Sets all of the samples for a rectangular area of pixels of the
+     * DataBuffer from a double array.
      * 
-     * @param x the X coordinate of the rectangle of pixels.
-     * @param y the Y coordinate of the rectangle of pixels.
-     * @param w the width of the rectangle of pixels.
-     * @param h the height of the rectangle of pixels.
-     * @param dArray the double array.
-     * @param data the image data.
+     * @param x
+     *            the X coordinate of the rectangle of pixels.
+     * @param y
+     *            the Y coordinate of the rectangle of pixels.
+     * @param w
+     *            the width of the rectangle of pixels.
+     * @param h
+     *            the height of the rectangle of pixels.
+     * @param dArray
+     *            the double array.
+     * @param data
+     *            the image data.
      */
-    public void setPixels(int x, int y, int w, int h, double dArray[],
-            DataBuffer data) {
+    public void setPixels(int x, int y, int w, int h, double dArray[], DataBuffer data) {
         if (x < 0 || y < 0 || x + w > this.width || y + h > this.height) {
             // awt.63=Coordinates are not in bounds
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
@@ -756,34 +826,44 @@
     }
 
     /**
-     * Sets a sample of the specified band for the specified pixel
-     * in the DataBuffer as int value.
+     * Sets a sample of the specified band for the specified pixel in the
+     * DataBuffer as integer value.
      * 
-     * @param x the X coordinate of the pixel.
-     * @param y the Y coordinate of the pixel.
-     * @param b the specified band.
-     * @param s the sample as an int value.
-     * @param data the image data.
+     * @param x
+     *            the X coordinate of the pixel.
+     * @param y
+     *            the Y coordinate of the pixel.
+     * @param b
+     *            the specified band.
+     * @param s
+     *            the sample as an integer value.
+     * @param data
+     *            the image data.
      */
     public abstract void setSample(int x, int y, int b, int s, DataBuffer data);
 
     /**
-     * Gets the samples of a specified band for a specified rectangular
-     * area of pixels as a int array.
+     * Gets the samples of a specified band for a specified rectangular area of
+     * pixels as a integer array.
      * 
-     * @param x the X coordinate of the rectangle.
-     * @param y the Y coordinate of the rectangle.
-     * @param w the width of the rectangle.
-     * @param h the height of the rectangle.
-     * @param b the specified band.
-     * @param iArray the int array where result will be stored.
-     * @param data the image data.
-     * 
-     * @return the samples of a specified band for a specified rectangular
-     * area of pixels.
+     * @param x
+     *            the X coordinate of the rectangle.
+     * @param y
+     *            the Y coordinate of the rectangle.
+     * @param w
+     *            the width of the rectangle.
+     * @param h
+     *            the height of the rectangle.
+     * @param b
+     *            the specified band.
+     * @param iArray
+     *            the integer array where result will be stored.
+     * @param data
+     *            the image data.
+     * @return the samples of a specified band for a specified rectangular area
+     *         of pixels.
      */
-    public int[] getSamples(int x, int y, int w, int h, int b, int iArray[],
-            DataBuffer data) {
+    public int[] getSamples(int x, int y, int w, int h, int b, int iArray[], DataBuffer data) {
         int samples[];
         int idx = 0;
 
@@ -803,19 +883,25 @@
     }
 
     /**
-     * Sets the samples from an int array in the specified band for 
-     * the specified rectangle of pixels.
+     * Sets the samples from an integer array in the specified band for the
+     * specified rectangle of pixels.
      * 
-     * @param x the X coordinate of the rectangle.
-     * @param y the Y coordinate of the rectangle.
-     * @param w the width of the rectangle.
-     * @param h the height of the rectangle.
-     * @param b the specified band.
-     * @param iArray the int array.
-     * @param data the image data.
+     * @param x
+     *            the X coordinate of the rectangle.
+     * @param y
+     *            the Y coordinate of the rectangle.
+     * @param w
+     *            the width of the rectangle.
+     * @param h
+     *            the height of the rectangle.
+     * @param b
+     *            the specified band.
+     * @param iArray
+     *            the integer array.
+     * @param data
+     *            the image data.
      */
-    public void setSamples(int x, int y, int w, int h, int b, int iArray[],
-            DataBuffer data) {
+    public void setSamples(int x, int y, int w, int h, int b, int iArray[], DataBuffer data) {
         int idx = 0;
         for (int i = y; i < y + h; i++) {
             for (int j = x; j < x + w; j++) {
@@ -825,22 +911,27 @@
     }
 
     /**
-     * Gets the samples of a specified band for a specified rectangular
-     * area of pixels as a float array.
+     * Gets the samples of a specified band for a specified rectangular area of
+     * pixels as a float array.
      * 
-     * @param x the X coordinate of the rectangle.
-     * @param y the Y coordinate of the rectangle.
-     * @param w the width of the rectangle.
-     * @param h the height of the rectangle.
-     * @param b the specified band.
-     * @param fArray the float array where result will be stored.
-     * @param data the image data.
-     * 
-     * @return the samples of a specified band for a specified rectangular
-     * area of pixels.
+     * @param x
+     *            the X coordinate of the rectangle.
+     * @param y
+     *            the Y coordinate of the rectangle.
+     * @param w
+     *            the width of the rectangle.
+     * @param h
+     *            the height of the rectangle.
+     * @param b
+     *            the specified band.
+     * @param fArray
+     *            the float array where result will be stored.
+     * @param data
+     *            the image data.
+     * @return the samples of a specified band for a specified rectangular area
+     *         of pixels.
      */
-    public float[] getSamples(int x, int y, int w, int h, int b,
-            float fArray[], DataBuffer data) {
+    public float[] getSamples(int x, int y, int w, int h, int b, float fArray[], DataBuffer data) {
         float samples[];
         int idx = 0;
 
@@ -860,19 +951,25 @@
     }
 
     /**
-     * Sets the samples from an float array in the specified band for 
-     * the specified rectangle of pixels.
+     * Sets the samples from an float array in the specified band for the
+     * specified rectangle of pixels.
      * 
-     * @param x the X coordinate of the rectangle.
-     * @param y the Y coordinate of the rectangle.
-     * @param w the width of the rectangle.
-     * @param h the height of the rectangle.
-     * @param b the specified band.
-     * @param fArray the float array
-     * @param data the image data.
+     * @param x
+     *            the X coordinate of the rectangle.
+     * @param y
+     *            the Y coordinate of the rectangle.
+     * @param w
+     *            the width of the rectangle.
+     * @param h
+     *            the height of the rectangle.
+     * @param b
+     *            the specified band.
+     * @param fArray
+     *            the float array.
+     * @param data
+     *            the image data.
      */
-    public void setSamples(int x, int y, int w, int h, int b, float fArray[],
-            DataBuffer data) {
+    public void setSamples(int x, int y, int w, int h, int b, float fArray[], DataBuffer data) {
         int idx = 0;
         for (int i = y; i < y + h; i++) {
             for (int j = x; j < x + w; j++) {
@@ -882,22 +979,27 @@
     }
 
     /**
-     * Gets the samples of a specified band for a specified rectangular
-     * area of pixels as a double array.
+     * Gets the samples of a specified band for a specified rectangular area of
+     * pixels as a double array.
      * 
-     * @param x the X coordinate of the rectangle.
-     * @param y the Y coordinate of the rectangle.
-     * @param w the width of the rectangle.
-     * @param h the height of the rectangle.
-     * @param b the specified band.
-     * @param dArray the double array where result will be stored.
-     * @param data the image data.
-     * 
-     * @return the samples of a specified band for a specified rectangular
-     * area of pixels.
+     * @param x
+     *            the X coordinate of the rectangle.
+     * @param y
+     *            the Y coordinate of the rectangle.
+     * @param w
+     *            the width of the rectangle.
+     * @param h
+     *            the height of the rectangle.
+     * @param b
+     *            the specified band.
+     * @param dArray
+     *            the double array where result will be stored.
+     * @param data
+     *            the image data.
+     * @return the samples of a specified band for a specified rectangular area
+     *         of pixels.
      */
-    public double[] getSamples(int x, int y, int w, int h, int b,
-            double dArray[], DataBuffer data) {
+    public double[] getSamples(int x, int y, int w, int h, int b, double dArray[], DataBuffer data) {
         double samples[];
         int idx = 0;
 
@@ -917,19 +1019,25 @@
     }
 
     /**
-     * Sets the samples from an double array in the specified band for 
-     * the specified rectangle of pixels.
+     * Sets the samples from an double array in the specified band for the
+     * specified rectangle of pixels.
      * 
-     * @param x the X coordinate of the rectangle.
-     * @param y the Y coordinate of the rectangle.
-     * @param w the width of the rectangle.
-     * @param h the height of the rectangle.
-     * @param b the specified band.
-     * @param dArray the double array
-     * @param data the image data.
+     * @param x
+     *            the X coordinate of the rectangle.
+     * @param y
+     *            the Y coordinate of the rectangle.
+     * @param w
+     *            the width of the rectangle.
+     * @param h
+     *            the height of the rectangle.
+     * @param b
+     *            the specified band.
+     * @param dArray
+     *            the double array.
+     * @param data
+     *            the image data.
      */
-    public void setSamples(int x, int y, int w, int h, int b, double dArray[],
-            DataBuffer data) {
+    public void setSamples(int x, int y, int w, int h, int b, double dArray[], DataBuffer data) {
         int idx = 0;
         for (int i = y; i < y + h; i++) {
             for (int j = x; j < x + w; j++) {
@@ -939,53 +1047,62 @@
     }
 
     /**
-     * Sets a sample of the specified band for the specified pixel
-     * in the DataBuffer as float value.
+     * Sets a sample of the specified band for the specified pixel in the
+     * DataBuffer as float value.
      * 
-     * @param x the X coordinate of the pixel.
-     * @param y the Y coordinate of the pixel.
-     * @param b the specified band.
-     * @param s the sample as float value.
-     * @param data the image data.
+     * @param x
+     *            the X coordinate of the pixel.
+     * @param y
+     *            the Y coordinate of the pixel.
+     * @param b
+     *            the specified band.
+     * @param s
+     *            the sample as float value.
+     * @param data
+     *            the image data.
      */
     public void setSample(int x, int y, int b, float s, DataBuffer data) {
-        setSample(x, y, b, (int) s, data);
+        setSample(x, y, b, (int)s, data);
     }
 
     /**
-     * Sets a sample of the specified band for the specified pixel
-     * in the DataBuffer as double value.
+     * Sets a sample of the specified band for the specified pixel in the
+     * DataBuffer as double value.
      * 
-     * @param x the X coordinate of the pixel.
-     * @param y the Y coordinate of the pixel.
-     * @param b the specified band.
-     * @param s the sample as double value.
-     * @param data the image data.
+     * @param x
+     *            the X coordinate of the pixel.
+     * @param y
+     *            the Y coordinate of the pixel.
+     * @param b
+     *            the specified band.
+     * @param s
+     *            the sample as double value.
+     * @param data
+     *            the image data.
      */
     public void setSample(int x, int y, int b, double s, DataBuffer data) {
-        setSample(x, y, b, (int) s, data);
+        setSample(x, y, b, (int)s, data);
     }
 
     /**
-     * Creates a DataBuffer object which corresponds to the SampleModel. 
-     *  
-     * @return the DataBuffer object which corresponds to 
-     * the SampleModel.
+     * Creates a DataBuffer object which corresponds to the SampleModel.
+     * 
+     * @return the DataBuffer object which corresponds to the SampleModel.
      */
     public abstract DataBuffer createDataBuffer();
 
     /**
      * Gets the sample size in bits for the specified band.
      * 
-     * @param band the specified band.
-     * 
+     * @param band
+     *            the specified band.
      * @return the sample size in bits for the specified band.
      */
     public abstract int getSampleSize(int band);
 
     /**
      * Gets an array of the sample size in bits for all bands.
-     *  
+     * 
      * @return an array of the sample size in bits for all bands.
      */
     public abstract int[] getSampleSize();
@@ -1000,10 +1117,9 @@
     }
 
     /**
-     * Gets the transfer type used to transfer pixels via 
-     * the getDataElements and setDataElements methods.
-     * Transfer type value can be one of the predefined type 
-     * from DataBuffer class or not.
+     * Gets the transfer type used to transfer pixels via the getDataElements
+     * and setDataElements methods. Transfer type value can be one of the
+     * predefined type from DataBuffer class or not.
      * 
      * @return the transfer type.
      */
@@ -1012,20 +1128,18 @@
     }
 
     /**
-     * Returns the number of data elements for pixel transfering
-     * via the getDataElements and setDataElements methods. 
+     * Returns the number of data elements for pixel transferring via the
+     * getDataElements and setDataElements methods.
      * 
-     * @return the number of data elements for pixel transfering
-     * via the getDataElements and setDataElements methods.
+     * @return the number of data elements for pixel transferring via the
+     *         getDataElements and setDataElements methods.
      */
     public abstract int getNumDataElements();
 
     /**
-     * Gets the number of bands in the image data of this 
-     * SampleModel object.
+     * Gets the number of bands in the image data of this SampleModel object.
      * 
-     * @return the number of bands in the image data of this 
-     * SampleModel object.
+     * @return the number of bands in the image data of this SampleModel object.
      */
     public final int getNumBands() {
         return numBands;
@@ -1050,4 +1164,3 @@
     }
 
 }
-
diff --git a/awt/java/awt/image/ShortLookupTable.java b/awt/java/awt/image/ShortLookupTable.java
index 77c9c45..4319d58 100644
--- a/awt/java/awt/image/ShortLookupTable.java
+++ b/awt/java/awt/image/ShortLookupTable.java
@@ -23,27 +23,30 @@
 
 package java.awt.image;
 
-
 /**
- * The ShortLookupTable class provides provides functionality for 
- * lookup operations, and is defined by an input short array for 
- * bands or components of image and an offset value.
- * The offset value will be subtracted from the input values before 
- * indexing the input arrays. The output of a lookup operation is 
+ * The ShortLookupTable class provides provides functionality for lookup
+ * operations, and is defined by an input short array for bands or components of
+ * image and an offset value. The offset value will be subtracted from the input
+ * values before indexing the input arrays. The output of a lookup operation is
  * represented as an unsigned short array.
+ * 
+ * @since Android 1.0
  */
 public class ShortLookupTable extends LookupTable {
-    
-    /** The data. */
+
+    /**
+     * The data.
+     */
     private short data[][];
 
     /**
-     * Instantiates a new ShortLookupTable with the specified offset value
-     * and the specified short array which represents lookup table for
-     * all bands.
+     * Instantiates a new ShortLookupTable with the specified offset value and
+     * the specified short array which represents lookup table for all bands.
      * 
-     * @param offset the offset value.
-     * @param data the data array.
+     * @param offset
+     *            the offset value.
+     * @param data
+     *            the data array.
      */
     public ShortLookupTable(int offset, short[] data) {
         super(offset, 1);
@@ -53,12 +56,14 @@
     }
 
     /**
-     * Instantiates a new ShortLookupTable with the specified offset value
-     * and the specified short array of arrays which represents lookup table
-     * for each band.
+     * Instantiates a new ShortLookupTable with the specified offset value and
+     * the specified short array of arrays which represents lookup table for
+     * each band.
      * 
-     * @param offset the offset value.
-     * @param data the data array of arrays for each band.
+     * @param offset
+     *            the offset value.
+     * @param data
+     *            the data array of arrays for each band.
      */
     public ShortLookupTable(int offset, short[][] data) {
         super(offset, data.length);
@@ -70,9 +75,9 @@
     }
 
     /**
-     * Gets the lookup table of this ShortLookupTable object. If 
-     * this ShortLookupTable object has one short array for all bands, 
-     * the returned array length is one.
+     * Gets the lookup table of this ShortLookupTable object. If this
+     * ShortLookupTable object has one short array for all bands, the returned
+     * array length is one.
      * 
      * @return the lookup table of this ShortLookupTable object.
      */
@@ -81,14 +86,14 @@
     }
 
     /**
-     * Returns a short array which contains samples of the specified
-     * pixel which is translated with the lookup table of this 
-     * ShortLookupTable object. The resulted array is stored to
-     * the dst array.
+     * Returns a short array which contains samples of the specified pixel which
+     * is translated with the lookup table of this ShortLookupTable object. The
+     * resulted array is stored to the dst array.
      * 
-     * @param src the source array.
-     * @param dst the destination array where the result can be stored.
-     * 
+     * @param src
+     *            the source array.
+     * @param dst
+     *            the destination array where the result can be stored.
      * @return the short array of translated samples of a pixel.
      */
     public short[] lookupPixel(short[] src, short[] dst) {
@@ -99,11 +104,11 @@
         int offset = getOffset();
         if (getNumComponents() == 1) {
             for (int i = 0; i < src.length; i++) {
-                dst[i] = data[0][src[i]-offset];
+                dst[i] = data[0][src[i] - offset];
             }
         } else {
             for (int i = 0; i < getNumComponents(); i++) {
-                dst[i] = data[i][src[i]-offset];
+                dst[i] = data[i][src[i] - offset];
             }
         }
 
@@ -119,11 +124,11 @@
         int offset = getOffset();
         if (getNumComponents() == 1) {
             for (int i = 0; i < src.length; i++) {
-                dst[i] = data[0][src[i]-offset];
+                dst[i] = data[0][src[i] - offset];
             }
         } else {
             for (int i = 0; i < getNumComponents(); i++) {
-                dst[i] = data[i][src[i]-offset];
+                dst[i] = data[i][src[i] - offset];
             }
         }
 
diff --git a/awt/java/awt/image/SinglePixelPackedSampleModel.java b/awt/java/awt/image/SinglePixelPackedSampleModel.java
index 311395a..69f3353 100644
--- a/awt/java/awt/image/SinglePixelPackedSampleModel.java
+++ b/awt/java/awt/image/SinglePixelPackedSampleModel.java
@@ -18,6 +18,7 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.util.Arrays;
@@ -25,39 +26,54 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The SinglePixelPackedSampleModel class represents pixel data 
- * where several samples combine to create a single pixel and 
- * are stored in a single data array element. This class 
- * supports TYPE_BYTE, TYPE_USHORT, TYPE_INT data types. 
+ * The SinglePixelPackedSampleModel class represents pixel data where several
+ * samples combine to create a single pixel and are stored in a single data
+ * array element. This class supports TYPE_BYTE, TYPE_USHORT, TYPE_INT data
+ * types.
+ * 
+ * @since Android 1.0
  */
 public class SinglePixelPackedSampleModel extends SampleModel {
 
-    /** The bit masks. */
+    /**
+     * The bit masks.
+     */
     private int bitMasks[];
 
-    /** The bit offsets. */
+    /**
+     * The bit offsets.
+     */
     private int bitOffsets[];
 
-    /** The bit sizes. */
+    /**
+     * The bit sizes.
+     */
     private int bitSizes[];
 
-    /** The scanline stride. */
+    /**
+     * The scanline stride.
+     */
     private int scanlineStride;
 
-    /** The max bit size. */
+    /**
+     * The max bit size.
+     */
     private int maxBitSize;
 
     /**
      * Instantiates a new SinglePixelPackedSampleModel with the specified
      * parameters.
      * 
-     * @param dataType the data type of samples.
-     * @param w the width of the image data.
-     * @param h the height of the image data.
-     * @param bitMasks the bit masks for all the bands.
+     * @param dataType
+     *            the data type of samples.
+     * @param w
+     *            the width of the image data.
+     * @param h
+     *            the height of the image data.
+     * @param bitMasks
+     *            the bit masks for all the bands.
      */
-    public SinglePixelPackedSampleModel(int dataType, int w, int h,
-            int bitMasks[]) {
+    public SinglePixelPackedSampleModel(int dataType, int w, int h, int bitMasks[]) {
         this(dataType, w, h, w, bitMasks);
     }
 
@@ -65,20 +81,24 @@
      * Instantiates a new SinglePixelPackedSampleModel with the specified
      * parameters.
      * 
-     * @param dataType the data type of the samples.
-     * @param w the width of the image data.
-     * @param h the height of the image data.
-     * @param scanlineStride The scanline stride of the image data.
-     * @param bitMasks the bit masks for all the bands.
+     * @param dataType
+     *            the data type of the samples.
+     * @param w
+     *            the width of the image data.
+     * @param h
+     *            the height of the image data.
+     * @param scanlineStride
+     *            the scanline stride of the image data.
+     * @param bitMasks
+     *            the bit masks for all the bands.
      */
-    public SinglePixelPackedSampleModel(int dataType, int w, int h,
-            int scanlineStride, int bitMasks[]) {
+    public SinglePixelPackedSampleModel(int dataType, int w, int h, int scanlineStride,
+            int bitMasks[]) {
 
         super(dataType, w, h, bitMasks.length);
 
-        if (dataType != DataBuffer.TYPE_BYTE &&
-                dataType != DataBuffer.TYPE_USHORT &&
-                dataType != DataBuffer.TYPE_INT) {
+        if (dataType != DataBuffer.TYPE_BYTE && dataType != DataBuffer.TYPE_USHORT
+                && dataType != DataBuffer.TYPE_INT) {
             // awt.61=Unsupported data type: {0}
             throw new IllegalArgumentException(Messages.getString("awt.61", //$NON-NLS-1$
                     dataType));
@@ -109,8 +129,7 @@
 
                 if (mask != 0) {
                     // awt.62=Wrong mask : {0}
-                    throw new IllegalArgumentException(Messages.getString(
-                            "awt.62", bitMasks[i])); //$NON-NLS-1$
+                    throw new IllegalArgumentException(Messages.getString("awt.62", bitMasks[i])); //$NON-NLS-1$
                 }
             }
 
@@ -132,39 +151,39 @@
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
         switch (getTransferType()) {
-        case DataBuffer.TYPE_BYTE:
-            byte bdata[];
-            if (obj == null) {
-                bdata = new byte[1];
-            } else {
-                bdata = (byte[]) obj;
-            }
+            case DataBuffer.TYPE_BYTE:
+                byte bdata[];
+                if (obj == null) {
+                    bdata = new byte[1];
+                } else {
+                    bdata = (byte[])obj;
+                }
 
-            bdata[0] = (byte) data.getElem(y * scanlineStride + x);
-            obj = bdata;
-            break;
-        case DataBuffer.TYPE_USHORT:
-            short sdata[];
-            if (obj == null) {
-                sdata = new short[1];
-            } else {
-                sdata = (short[]) obj;
-            }
+                bdata[0] = (byte)data.getElem(y * scanlineStride + x);
+                obj = bdata;
+                break;
+            case DataBuffer.TYPE_USHORT:
+                short sdata[];
+                if (obj == null) {
+                    sdata = new short[1];
+                } else {
+                    sdata = (short[])obj;
+                }
 
-            sdata[0] = (short) data.getElem(y * scanlineStride + x);
-            obj = sdata;
-            break;
-        case DataBuffer.TYPE_INT:
-            int idata[];
-            if (obj == null) {
-                idata = new int[1];
-            } else {
-                idata = (int[]) obj;
-            }
+                sdata[0] = (short)data.getElem(y * scanlineStride + x);
+                obj = sdata;
+                break;
+            case DataBuffer.TYPE_INT:
+                int idata[];
+                if (obj == null) {
+                    idata = new int[1];
+                } else {
+                    idata = (int[])obj;
+                }
 
-            idata[0] = data.getElem(y * scanlineStride + x);
-            obj = idata;
-            break;
+                idata[0] = data.getElem(y * scanlineStride + x);
+                obj = idata;
+                break;
         }
         return obj;
     }
@@ -176,26 +195,26 @@
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
         switch (getTransferType()) {
-        case DataBuffer.TYPE_BYTE:
-            data.setElem(y * scanlineStride + x, ((byte[]) obj)[0] & 0xff);
-            break;
-        case DataBuffer.TYPE_USHORT:
-            data.setElem(y * scanlineStride + x, ((short[]) obj)[0] & 0xffff);
-            break;
-        case DataBuffer.TYPE_INT:
-            data.setElem(y * scanlineStride + x, ((int[]) obj)[0]);
-            break;
+            case DataBuffer.TYPE_BYTE:
+                data.setElem(y * scanlineStride + x, ((byte[])obj)[0] & 0xff);
+                break;
+            case DataBuffer.TYPE_USHORT:
+                data.setElem(y * scanlineStride + x, ((short[])obj)[0] & 0xffff);
+                break;
+            case DataBuffer.TYPE_INT:
+                data.setElem(y * scanlineStride + x, ((int[])obj)[0]);
+                break;
         }
     }
 
     /**
-     * Compares this SinglePixelPackedSampleModel object with 
-     * the specified object.
+     * Compares this SinglePixelPackedSampleModel object with the specified
+     * object.
      * 
-     * @param o the Object to be compared.
-     * 
-     * @return true, if this SinglePixelPackedSampleModel object is 
-     * equal to the specified object, false otherwise.
+     * @param o
+     *            the Object to be compared.
+     * @return true, if this SinglePixelPackedSampleModel object is equal to the
+     *         specified object, false otherwise.
      */
     @Override
     public boolean equals(Object o) {
@@ -203,21 +222,20 @@
             return false;
         }
 
-        SinglePixelPackedSampleModel model = (SinglePixelPackedSampleModel) o;
-        return this.width == model.width &&
-                this.height == model.height &&
-                this.numBands == model.numBands &&
-                this.dataType == model.dataType &&
-                Arrays.equals(this.bitMasks, model.bitMasks) &&
-                Arrays.equals(this.bitOffsets, model.bitOffsets) &&
-                Arrays.equals(this.bitSizes, model.bitSizes) &&
-                this.scanlineStride == model.scanlineStride;
+        SinglePixelPackedSampleModel model = (SinglePixelPackedSampleModel)o;
+        return this.width == model.width && this.height == model.height
+                && this.numBands == model.numBands && this.dataType == model.dataType
+                && Arrays.equals(this.bitMasks, model.bitMasks)
+                && Arrays.equals(this.bitOffsets, model.bitOffsets)
+                && Arrays.equals(this.bitSizes, model.bitSizes)
+                && this.scanlineStride == model.scanlineStride;
     }
 
     @Override
     public SampleModel createSubsetSampleModel(int bands[]) {
         if (bands.length > this.numBands) {
-            // awt.64=The number of the bands in the subset is greater than the number of bands in the sample model
+            // awt.64=The number of the bands in the subset is greater than the
+            // number of bands in the sample model
             throw new RasterFormatException(Messages.getString("awt.64")); //$NON-NLS-1$
         }
 
@@ -225,14 +243,13 @@
         for (int i = 0; i < bands.length; i++) {
             masks[i] = this.bitMasks[bands[i]];
         }
-        return new SinglePixelPackedSampleModel(this.dataType, this.width,
-                this.height, this.scanlineStride, masks);
+        return new SinglePixelPackedSampleModel(this.dataType, this.width, this.height,
+                this.scanlineStride, masks);
     }
 
     @Override
     public SampleModel createCompatibleSampleModel(int w, int h) {
-        return new SinglePixelPackedSampleModel(this.dataType, w, h,
-                this.bitMasks);
+        return new SinglePixelPackedSampleModel(this.dataType, w, h, this.bitMasks);
     }
 
     @Override
@@ -277,10 +294,9 @@
     }
 
     @Override
-    public int[] getPixels(int x, int y, int w, int h, int iArray[],
-            DataBuffer data) {
-        if ((x < 0) || (y < 0) || ((long) x + (long) w > this.width)
-                || ((long) y + (long) h > this.height)) {
+    public int[] getPixels(int x, int y, int w, int h, int iArray[], DataBuffer data) {
+        if ((x < 0) || (y < 0) || ((long)x + (long)w > this.width)
+                || ((long)y + (long)h > this.height)) {
             // awt.63=Coordinates are not in bounds
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
@@ -306,13 +322,11 @@
     }
 
     @Override
-    public void setPixels(int x, int y, int w, int h, int iArray[],
-            DataBuffer data) {
-        if ((x < 0) || (y < 0) || ((long) x + (long) w > this.width)
-                || ((long) y + (long) h > this.height)) {
+    public void setPixels(int x, int y, int w, int h, int iArray[], DataBuffer data) {
+        if ((x < 0) || (y < 0) || ((long)x + (long)w > this.width)
+                || ((long)y + (long)h > this.height)) {
             // awt.63=Coordinates are not in bounds
-            throw new ArrayIndexOutOfBoundsException(Messages
-                    .getString("awt.63")); //$NON-NLS-1$
+            throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
 
         int idx = 0;
@@ -339,13 +353,11 @@
     }
 
     @Override
-    public int[] getSamples(int x, int y, int w, int h, int b, int iArray[],
-            DataBuffer data) {
-        if ((x < 0) || (y < 0) || ((long) x + (long) w > this.width)
-                || ((long) y + (long) h > this.height)) {
+    public int[] getSamples(int x, int y, int w, int h, int b, int iArray[], DataBuffer data) {
+        if ((x < 0) || (y < 0) || ((long)x + (long)w > this.width)
+                || ((long)y + (long)h > this.height)) {
             // awt.63=Coordinates are not in bounds
-            throw new ArrayIndexOutOfBoundsException(Messages
-                    .getString("awt.63")); //$NON-NLS-1$
+            throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
 
         int samples[];
@@ -367,10 +379,9 @@
     }
 
     @Override
-    public void setSamples(int x, int y, int w, int h, int b, int iArray[],
-            DataBuffer data) {
-        if ((x < 0) || (y < 0) || ((long) x + (long) w > this.width)
-                || ((long) y + (long) h > this.height)) {
+    public void setSamples(int x, int y, int w, int h, int b, int iArray[], DataBuffer data) {
+        if ((x < 0) || (y < 0) || ((long)x + (long)w > this.width)
+                || ((long)y + (long)h > this.height)) {
             // awt.63=Coordinates are not in bounds
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
@@ -389,15 +400,15 @@
         int size = (this.height - 1) * scanlineStride + width;
 
         switch (this.dataType) {
-        case DataBuffer.TYPE_BYTE:
-            data = new DataBufferByte(size);
-            break;
-        case DataBuffer.TYPE_USHORT:
-            data = new DataBufferUShort(size);
-            break;
-        case DataBuffer.TYPE_INT:
-            data = new DataBufferInt(size);
-            break;
+            case DataBuffer.TYPE_BYTE:
+                data = new DataBufferByte(size);
+                break;
+            case DataBuffer.TYPE_USHORT:
+                data = new DataBufferUShort(size);
+                break;
+            case DataBuffer.TYPE_INT:
+                data = new DataBufferInt(size);
+                break;
         }
         return data;
     }
@@ -405,9 +416,10 @@
     /**
      * Gets the offset of the specified pixel in the data array.
      * 
-     * @param x the X coordinate of the specified pixel.
-     * @param y the Y coordinate of the specified pixel.
-     * 
+     * @param x
+     *            the X coordinate of the specified pixel.
+     * @param y
+     *            the Y coordinate of the specified pixel.
      * @return the offset of the specified pixel.
      */
     public int getOffset(int x, int y) {
@@ -425,7 +437,7 @@
     }
 
     /**
-     * Gets an array of the bit offsets of the data array elements. 
+     * Gets an array of the bit offsets of the data array elements.
      * 
      * @return an array of the bit offsets.
      */
@@ -505,4 +517,3 @@
     }
 
 }
-
diff --git a/awt/java/awt/image/TileObserver.java b/awt/java/awt/image/TileObserver.java
index 39ded02..7dd97e2 100644
--- a/awt/java/awt/image/TileObserver.java
+++ b/awt/java/awt/image/TileObserver.java
@@ -18,27 +18,32 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
-
 /**
- * An asynchronous update interface for receiving notifications
- * about tile information when tiles of a WritableRenderedImage 
- * become modifiable or unmodifiable.
+ * An asynchronous update interface for receiving notifications about tile
+ * information when tiles of a WritableRenderedImage become modifiable or
+ * unmodifiable.
+ * 
+ * @since Android 1.0
  */
 public interface TileObserver {
 
     /**
-     * This method is called when information about a tile
-     * update is available.
+     * This method is called when information about a tile update is available.
      * 
-     * @param source the source image.
-     * @param tileX the X index of the tile.
-     * @param tileY the Y index of the tile.
-     * @param willBeWritable parameter which indicates whether
-     * the tile will be grabbed for writing or be released.
+     * @param source
+     *            the source image.
+     * @param tileX
+     *            the X index of the tile.
+     * @param tileY
+     *            the Y index of the tile.
+     * @param willBeWritable
+     *            parameter which indicates whether the tile will be grabbed for
+     *            writing or be released.
      */
-    public void tileUpdate(WritableRenderedImage source, int tileX, int tileY, boolean willBeWritable);
+    public void tileUpdate(WritableRenderedImage source, int tileX, int tileY,
+            boolean willBeWritable);
 
 }
-
diff --git a/awt/java/awt/image/VolatileImage.java b/awt/java/awt/image/VolatileImage.java
index 3b0cfb2..f24e866 100644
--- a/awt/java/awt/image/VolatileImage.java
+++ b/awt/java/awt/image/VolatileImage.java
@@ -18,6 +18,7 @@
  * @author Alexey A. Petrenko
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.awt.Graphics;
@@ -28,35 +29,36 @@
 import java.awt.Transparency;
 
 /**
- * The VolatileImage abstract class represents an image which can lose 
- * its contents at any point. VolatileImage objects are device specific.
- * This class provies methods for checking if operation of this image
- * are compatible for the GraphicsConfiguration. 
+ * The VolatileImage abstract class represents an image which can lose its
+ * contents at any point. VolatileImage objects are device specific. This class
+ * provides methods for checking if operation of this image are compatible for
+ * the GraphicsConfiguration.
+ * 
+ * @since Android 1.0
  */
 public abstract class VolatileImage extends Image
-    // Volatile image implements Transparency since 1.5
-    implements Transparency {
-    
-    /** 
-     * The Constant IMAGE_INCOMPATIBLE indicates that this VolatileImage 
-     * is not applicable for the GraphicsConfiguration object. 
+// Volatile image implements Transparency since 1.5
+        implements Transparency {
+
+    /**
+     * The Constant IMAGE_INCOMPATIBLE indicates that this VolatileImage is not
+     * applicable for the GraphicsConfiguration object.
      */
     public static final int IMAGE_INCOMPATIBLE = 2;
 
-    /** 
-     * The Constant IMAGE_OK indicates that VolatileImage is ready 
-     * for using.
+    /**
+     * The Constant IMAGE_OK indicates that VolatileImage is ready for using.
      */
     public static final int IMAGE_OK = 0;
 
-    /** 
-     * The Constant IMAGE_RESTORED indicates that VolatileImage
-     * will be ready to use after restoring. 
+    /**
+     * The Constant IMAGE_RESTORED indicates that VolatileImage will be ready to
+     * use after restoring.
      */
     public static final int IMAGE_RESTORED = 1;
 
-    /** 
-     * The transparency value of this image. 
+    /**
+     * The transparency value of this image.
      */
     protected int transparency = OPAQUE;
 
@@ -68,8 +70,8 @@
     }
 
     /**
-     * Returns true if rendering data is lost during validating.
-     * This method should be called after rendering operation of image.
+     * Returns true if rendering data is lost during validating. This method
+     * should be called after rendering operation of image.
      * 
      * @return true, if contents lost during validating, false otherwise.
      */
@@ -98,8 +100,8 @@
     public abstract int getHeight();
 
     /**
-     * Gets a BufferedImage representation of current VolatileImage that
-     * won't be affected by any changes to this VolatileImage.
+     * Gets a BufferedImage representation of current VolatileImage that won't
+     * be affected by any changes to this VolatileImage.
      * 
      * @return a BufferedImage representation of current VolatileImage.
      */
@@ -113,14 +115,14 @@
     public abstract int getWidth();
 
     /**
-     * Validates the drawing surface of the image if the surface had been 
-     * lost and if the spacified GraphicsConfiguration object is  
-     * applicable to this image. 
+     * Validates the drawing surface of the image if the surface had been lost
+     * and if the specified GraphicsConfiguration object is applicable to this
+     * image.
      * 
-     * @param gc GraphicsConfiguration object.
-     * 
+     * @param gc
+     *            the GraphicsConfiguration object.
      * @return one of the image status constants: IMAGE_OK, IMAGE_RESTORED or
-     * IMAGE_INCOMPATIBLE.
+     *         IMAGE_INCOMPATIBLE.
      */
     public abstract int validate(GraphicsConfiguration gc);
 
diff --git a/awt/java/awt/image/WritableRaster.java b/awt/java/awt/image/WritableRaster.java
index 0893915..51366ee 100644
--- a/awt/java/awt/image/WritableRaster.java
+++ b/awt/java/awt/image/WritableRaster.java
@@ -18,6 +18,7 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.awt.Point;
@@ -26,114 +27,136 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The WritableRaster class provides functionality for 
- * writing samples and pixel capabilities to the Raster.
+ * The WritableRaster class provides functionality for writing samples and pixel
+ * capabilities to the Raster.
+ * 
+ * @since Android 1.0
  */
 public class WritableRaster extends Raster {
 
     /**
-     * Instantiates a new WritableRaster object with the specified 
-     * SampleModel, DataBuffer, rectangular region and parent 
-     * WritableRaster. 
+     * Instantiates a new WritableRaster object with the specified SampleModel,
+     * DataBuffer, rectangular region and parent WritableRaster.
      * 
-     * @param sampleModel the specified SampleModel.
-     * @param dataBuffer the specified DataBuffer.
-     * @param aRegion the rectangular region which defines the new image bounds. 
-     * @param sampleModelTranslate this point defines the translation point
-     * from the SampleModel to the new WritableRaster coordinates.
-     * @param parent the parent of this WritableRaster.
+     * @param sampleModel
+     *            the specified SampleModel.
+     * @param dataBuffer
+     *            the specified DataBuffer.
+     * @param aRegion
+     *            the rectangular region which defines the new image bounds.
+     * @param sampleModelTranslate
+     *            this point defines the translation point from the SampleModel
+     *            to the new WritableRaster coordinates.
+     * @param parent
+     *            the parent of this WritableRaster.
      */
-    protected WritableRaster(SampleModel sampleModel, DataBuffer dataBuffer,
-            Rectangle aRegion, Point sampleModelTranslate,
-            WritableRaster parent) {
+    protected WritableRaster(SampleModel sampleModel, DataBuffer dataBuffer, Rectangle aRegion,
+            Point sampleModelTranslate, WritableRaster parent) {
         super(sampleModel, dataBuffer, aRegion, sampleModelTranslate, parent);
     }
 
     /**
-     * Instantiates a new WritableRaster object with the specified
-     * SampleModel which defines a layout of this WritableRaster and 
-     * DataBuffer objects which defines the image data.
+     * Instantiates a new WritableRaster object with the specified SampleModel
+     * which defines a layout of this WritableRaster and DataBuffer objects
+     * which defines the image data.
      * 
-     * @param sampleModel the specified SampleModel.
-     * @param dataBuffer the specified DataBuffer.
-     * @param origin the point of origin.
+     * @param sampleModel
+     *            the specified SampleModel.
+     * @param dataBuffer
+     *            the specified DataBuffer.
+     * @param origin
+     *            the point of origin.
      */
-    protected WritableRaster(SampleModel sampleModel, DataBuffer dataBuffer,
-            Point origin) {
-        this(sampleModel, dataBuffer, new Rectangle(origin.x, origin.y,
-                sampleModel.width, sampleModel.height), origin, null);
+    protected WritableRaster(SampleModel sampleModel, DataBuffer dataBuffer, Point origin) {
+        this(sampleModel, dataBuffer, new Rectangle(origin.x, origin.y, sampleModel.width,
+                sampleModel.height), origin, null);
     }
 
     /**
      * Instantiates a new WritableRaster with the specified SampleModel.
      * 
-     * @param sampleModel the specified SampleModel.
-     * @param origin the origin.
+     * @param sampleModel
+     *            the specified SampleModel.
+     * @param origin
+     *            the origin.
      */
     protected WritableRaster(SampleModel sampleModel, Point origin) {
-        this(sampleModel, sampleModel.createDataBuffer(), new Rectangle(
-                origin.x, origin.y, sampleModel.width, sampleModel.height),
-                origin, null);
+        this(sampleModel, sampleModel.createDataBuffer(), new Rectangle(origin.x, origin.y,
+                sampleModel.width, sampleModel.height), origin, null);
     }
 
     /**
-     * Sets the data for a single pixel from an input Object which 
-     * represents an array of primitive types: DataBuffer.TYPE_BYTE, 
-     * DataBuffer.TYPE_USHORT, DataBuffer.TYPE_INT, DataBuffer.TYPE_SHORT, 
-     * DataBuffer.TYPE_FLOAT, or DataBuffer.TYPE_DOUBLE.
+     * Sets the data for a single pixel from an input Object which represents an
+     * array of primitive types: DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT,
+     * DataBuffer.TYPE_INT, DataBuffer.TYPE_SHORT, DataBuffer.TYPE_FLOAT, or
+     * DataBuffer.TYPE_DOUBLE.
      * 
-     * @param x the X coordinate of the pixel.
-     * @param y the Y coordinate of the pixel.
-     * @param inData the input data.
+     * @param x
+     *            the X coordinate of the pixel.
+     * @param y
+     *            the Y coordinate of the pixel.
+     * @param inData
+     *            the input data.
      */
     public void setDataElements(int x, int y, Object inData) {
-        sampleModel.setDataElements(x - sampleModelTranslateX,
-                y - sampleModelTranslateY, inData, dataBuffer);
+        sampleModel.setDataElements(x - sampleModelTranslateX, y - sampleModelTranslateY, inData,
+                dataBuffer);
     }
 
     /**
-     * Sets the data elements which represent pixel data to the specified 
-     * rectangle area as a primitive array. The following image data types
-     * are supported: DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, 
-     * DataBuffer.TYPE_INT, DataBuffer.TYPE_SHORT, DataBuffer.TYPE_FLOAT, 
-     * or DataBuffer.TYPE_DOUBLE.
+     * Sets the data elements which represent pixel data to the specified
+     * rectangle area as a primitive array. The following image data types are
+     * supported: DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT,
+     * DataBuffer.TYPE_INT, DataBuffer.TYPE_SHORT, DataBuffer.TYPE_FLOAT, or
+     * DataBuffer.TYPE_DOUBLE.
      * 
-     * @param x the X coordinate of the rectangle of pixels.
-     * @param y the Y coordinate of the rectangle of pixels.
-     * @param w the width of the rectangle of pixels.
-     * @param h the height of the rectangle of pixels.
-     * @param inData the array of primitive type data to be set to the
-     * specified area.
+     * @param x
+     *            the X coordinate of the rectangle of pixels.
+     * @param y
+     *            the Y coordinate of the rectangle of pixels.
+     * @param w
+     *            the width of the rectangle of pixels.
+     * @param h
+     *            the height of the rectangle of pixels.
+     * @param inData
+     *            the array of primitive type data to be set to the specified
+     *            area.
      */
     public void setDataElements(int x, int y, int w, int h, Object inData) {
-        sampleModel.setDataElements(x - sampleModelTranslateX,
-                y - sampleModelTranslateY, w, h, inData, dataBuffer);
+        sampleModel.setDataElements(x - sampleModelTranslateX, y - sampleModelTranslateY, w, h,
+                inData, dataBuffer);
     }
 
     /**
-     * Creates the child of this WritableRaster by sharing the specified 
-     * rectangular area in this WritableRaster. 
-     * The parentX, parentY, width and height parameters specify rectangular
-     * area to be shared.
+     * Creates the child of this WritableRaster by sharing the specified
+     * rectangular area in this WritableRaster. The parentX, parentY, width and
+     * height parameters specify rectangular area to be shared.
      * 
-     * @param parentX the X coordinate of the upper left corner of 
-     * the shared rectangle with respect to this WritableRaster' coordinates. 
-     * @param parentY the Y coordinate of the upper left corner of 
-     * the shared rectangle with respect to this WritableRaster' coordinates. 
-     * @param w the width of the child area.
-     * @param h the height of the child area.
-     * @param childMinX the X coordinate of child area mapped to the parentX
-     * coordinate.
-     * @param childMinY the Y coordinate of child area mapped to the parentY
-     * coordinate.
-     * @param bandList the array of band indicies.
-     * 
+     * @param parentX
+     *            the X coordinate of the upper left corner of the shared
+     *            rectangle with respect to this WritableRaster' coordinates.
+     * @param parentY
+     *            the Y coordinate of the upper left corner of the shared
+     *            rectangle with respect to this WritableRaster' coordinates.
+     * @param w
+     *            the width of the child area.
+     * @param h
+     *            the height of the child area.
+     * @param childMinX
+     *            the X coordinate of child area mapped to the parentX
+     *            coordinate.
+     * @param childMinY
+     *            the Y coordinate of child area mapped to the parentY
+     *            coordinate.
+     * @param bandList
+     *            the array of band indices.
      * @return the child WritableRaster.
      */
-    public WritableRaster createWritableChild(int parentX, int parentY, int w,
-            int h, int childMinX, int childMinY, int bandList[]) {
+    public WritableRaster createWritableChild(int parentX, int parentY, int w, int h,
+            int childMinX, int childMinY, int bandList[]) {
         if (w <= 0 || h <= 0) {
-            // awt.244=Width or Height of child Raster is less than or equal to zero
+            // awt.244=Width or Height of child Raster is less than or equal to
+            // zero
             throw new RasterFormatException(Messages.getString("awt.244")); //$NON-NLS-1$
         }
 
@@ -147,22 +170,22 @@
             throw new RasterFormatException(Messages.getString("awt.246")); //$NON-NLS-1$
         }
 
-        if ((long) parentX + w > Integer.MAX_VALUE) {
+        if ((long)parentX + w > Integer.MAX_VALUE) {
             // awt.247=parentX + w results in integer overflow
             throw new RasterFormatException(Messages.getString("awt.247")); //$NON-NLS-1$
         }
 
-        if ((long) parentY + h > Integer.MAX_VALUE) {
+        if ((long)parentY + h > Integer.MAX_VALUE) {
             // awt.248=parentY + h results in integer overflow
             throw new RasterFormatException(Messages.getString("awt.248")); //$NON-NLS-1$
         }
 
-        if ((long) childMinX + w > Integer.MAX_VALUE) {
+        if ((long)childMinX + w > Integer.MAX_VALUE) {
             // awt.249=childMinX + w results in integer overflow
             throw new RasterFormatException(Messages.getString("awt.249")); //$NON-NLS-1$
         }
 
-        if ((long) childMinY + h > Integer.MAX_VALUE) {
+        if ((long)childMinY + h > Integer.MAX_VALUE) {
             // awt.24A=childMinY + h results in integer overflow
             throw new RasterFormatException(Messages.getString("awt.24A")); //$NON-NLS-1$
         }
@@ -179,59 +202,60 @@
         int childTranslateY = childMinY - parentY;
 
         return new WritableRaster(childModel, dataBuffer,
-                new Rectangle(childMinX, childMinY, w, h),
-                new Point(childTranslateX + sampleModelTranslateX,
-                        childTranslateY + sampleModelTranslateY),
-                this);
+                new Rectangle(childMinX, childMinY, w, h), new Point(childTranslateX
+                        + sampleModelTranslateX, childTranslateY + sampleModelTranslateY), this);
     }
 
     /**
-     * Creates the translated child of this WritableRaster. 
-     * New WritableRaster object is a reference to the this 
-     * WritableRaster and with different location. 
-     *  
-     * @param childMinX the X coordinate of the new WritableRaster.
-     * @param childMinY the Y coordinate of the new WritableRaster.
+     * Creates the translated child of this WritableRaster. New WritableRaster
+     * object is a reference to the this WritableRaster and with different
+     * location.
      * 
+     * @param childMinX
+     *            the X coordinate of the new WritableRaster.
+     * @param childMinY
+     *            the Y coordinate of the new WritableRaster.
      * @return the WritableRaster.
      */
-    public WritableRaster createWritableTranslatedChild(int childMinX,
-            int childMinY) {
-        return createWritableChild(minX, minY, width, height, childMinX,
-                childMinY, null);
+    public WritableRaster createWritableTranslatedChild(int childMinX, int childMinY) {
+        return createWritableChild(minX, minY, width, height, childMinX, childMinY, null);
     }
 
     /**
-     * Gets the parent WritableRaster for this WritableRaster object. 
+     * Gets the parent WritableRaster for this WritableRaster object.
      * 
      * @return the parent WritableRaster for this WritableRaster object.
      */
     public WritableRaster getWritableParent() {
-        return (WritableRaster) parent;
+        return (WritableRaster)parent;
     }
 
     /**
-     * Sets pixels from the specified source Raster srcRaster to this 
+     * Sets pixels from the specified source Raster srcRaster to this
      * WritableRaster.
      * 
-     * @param srcRaster the source Raster.
+     * @param srcRaster
+     *            the source Raster.
      */
     public void setRect(Raster srcRaster) {
         setRect(0, 0, srcRaster);
     }
 
     /**
-     * Sets pixels from the specified source Raster srcRaster to this 
-     * WritableRaster. Each pixel with (x, y) coordinates from the source 
-     * Raster is copied to pixel with (x+dx, y+dy) coordinates in this
-     * WritableRaster. The pixels with (x+dx, y+dy) coordinates which
-     * are out the bounds of this raster are ignored. 
-     *  
-     * @param dx the distance the pixel's X coordinate in the source
-     * Raster is translated when writtien to this WritableRaster. 
-     * @param dy the distance the pixel's Y coordinate in the source
-     * Raster is translated when writtien to this WritableRaster.
-     * @param srcRaster the source Raster.
+     * Sets pixels from the specified source Raster srcRaster to this
+     * WritableRaster. Each pixel with (x, y) coordinates from the source Raster
+     * is copied to pixel with (x+dx, y+dy) coordinates in this WritableRaster.
+     * The pixels with (x+dx, y+dy) coordinates which are out the bounds of this
+     * raster are ignored.
+     * 
+     * @param dx
+     *            the distance the pixel's X coordinate in the source Raster is
+     *            translated when writtien to this WritableRaster.
+     * @param dy
+     *            the distance the pixel's Y coordinate in the source Raster is
+     *            translated when writtien to this WritableRaster.
+     * @param srcRaster
+     *            the source Raster.
      */
     public void setRect(int dx, int dy, Raster srcRaster) {
         int w = srcRaster.getWidth();
@@ -272,47 +296,47 @@
         }
 
         switch (sampleModel.getDataType()) {
-        case DataBuffer.TYPE_BYTE:
-        case DataBuffer.TYPE_SHORT:
-        case DataBuffer.TYPE_USHORT:
-        case DataBuffer.TYPE_INT:
-            int iPixelsLine[] = null;
-            for (int i = 0; i < h; i++) {
-                iPixelsLine = srcRaster.getPixels(srcX, srcY + i, w, 1,
-                        iPixelsLine);
-                setPixels(dstX, dstY + i, w, 1, iPixelsLine);
-            }
-            break;
+            case DataBuffer.TYPE_BYTE:
+            case DataBuffer.TYPE_SHORT:
+            case DataBuffer.TYPE_USHORT:
+            case DataBuffer.TYPE_INT:
+                int iPixelsLine[] = null;
+                for (int i = 0; i < h; i++) {
+                    iPixelsLine = srcRaster.getPixels(srcX, srcY + i, w, 1, iPixelsLine);
+                    setPixels(dstX, dstY + i, w, 1, iPixelsLine);
+                }
+                break;
 
-        case DataBuffer.TYPE_FLOAT:
-            float fPixelsLine[] = null;
-            for (int i = 0; i < h; i++) {
-                fPixelsLine = srcRaster.getPixels(srcX, srcY + i, w, 1,
-                        fPixelsLine);
-                setPixels(dstX, dstY + i, w, 1, fPixelsLine);
-            }
-            break;
+            case DataBuffer.TYPE_FLOAT:
+                float fPixelsLine[] = null;
+                for (int i = 0; i < h; i++) {
+                    fPixelsLine = srcRaster.getPixels(srcX, srcY + i, w, 1, fPixelsLine);
+                    setPixels(dstX, dstY + i, w, 1, fPixelsLine);
+                }
+                break;
 
-        case DataBuffer.TYPE_DOUBLE:
-            double dPixelsLine[] = null;
-            for (int i = 0; i < h; i++) {
-                dPixelsLine = srcRaster.getPixels(srcX, srcY + i, w, 1,
-                        dPixelsLine);
-                setPixels(dstX, dstY + i, w, 1, dPixelsLine);
-            }
-            break;
+            case DataBuffer.TYPE_DOUBLE:
+                double dPixelsLine[] = null;
+                for (int i = 0; i < h; i++) {
+                    dPixelsLine = srcRaster.getPixels(srcX, srcY + i, w, 1, dPixelsLine);
+                    setPixels(dstX, dstY + i, w, 1, dPixelsLine);
+                }
+                break;
         }
     }
 
     /**
-     * Sets the data for a rectangle of pixels from an input Raster to
-     * this WritableRaster.
+     * Sets the data for a rectangle of pixels from an input Raster to this
+     * WritableRaster.
      * 
-     * @param x the X coordinate of the point where the data of 
-     * the input Raster is to be written.
-     * @param y the Y coordinate of the point where the data of 
-     * the input Raster is to be written.
-     * @param inRaster the input Raster.
+     * @param x
+     *            the X coordinate of the point where the data of the input
+     *            Raster is to be written.
+     * @param y
+     *            the Y coordinate of the point where the data of the input
+     *            Raster is to be written.
+     * @param inRaster
+     *            the input Raster.
      */
     public void setDataElements(int x, int y, Raster inRaster) {
         int dstX = x + inRaster.getMinX();
@@ -321,8 +345,8 @@
         int w = inRaster.getWidth();
         int h = inRaster.getHeight();
 
-        if (dstX < this.minX || dstX + w > this.minX + this.width ||
-                dstY < this.minY || dstY + h > this.minY + this.height) {
+        if (dstX < this.minX || dstX + w > this.minX + this.width || dstY < this.minY
+                || dstY + h > this.minY + this.height) {
             // awt.63=Coordinates are not in bounds
             throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$
         }
@@ -338,179 +362,231 @@
     }
 
     /**
-     * Sets a int array of samples for the specified pixel 
-     * in this WritableRaster. 
+     * Sets an integer array of samples for the specified pixel in this
+     * WritableRaster.
      * 
-     * @param x the pixel's X coordinate.
-     * @param y the pixel's Y coordinate.
-     * @param iArray the int array of samples.
+     * @param x
+     *            the pixel's X coordinate.
+     * @param y
+     *            the pixel's Y coordinate.
+     * @param iArray
+     *            the integer array of samples.
      */
     public void setPixel(int x, int y, int iArray[]) {
-        sampleModel.setPixel(x - sampleModelTranslateX,
-                y - sampleModelTranslateY, iArray, dataBuffer);
+        sampleModel.setPixel(x - sampleModelTranslateX, y - sampleModelTranslateY, iArray,
+                dataBuffer);
     }
 
     /**
-     * Sets a float array of samples for the specified pixel 
-     * in this WritableRaster. 
+     * Sets a float array of samples for the specified pixel in this
+     * WritableRaster.
      * 
-     * @param x the pixel's X coordinate.
-     * @param y the pixel's Y coordinate.
-     * @param fArray the float array of samples.
+     * @param x
+     *            the pixel's X coordinate.
+     * @param y
+     *            the pixel's Y coordinate.
+     * @param fArray
+     *            the float array of samples.
      */
     public void setPixel(int x, int y, float fArray[]) {
-        sampleModel.setPixel(x - sampleModelTranslateX,
-                y - sampleModelTranslateY, fArray, dataBuffer);
+        sampleModel.setPixel(x - sampleModelTranslateX, y - sampleModelTranslateY, fArray,
+                dataBuffer);
     }
 
     /**
-     * Sets a double array of samples for the specified pixel 
-     * in this WritableRaster. 
+     * Sets a double array of samples for the specified pixel in this
+     * WritableRaster.
      * 
-     * @param x the pixel's X coordinate.
-     * @param y the pixel's Y coordinate.
-     * @param dArray the double array of samples.
+     * @param x
+     *            the pixel's X coordinate.
+     * @param y
+     *            the pixel's Y coordinate.
+     * @param dArray
+     *            the double array of samples.
      */
     public void setPixel(int x, int y, double dArray[]) {
-        sampleModel.setPixel(x - sampleModelTranslateX,
-                y - sampleModelTranslateY, dArray, dataBuffer);
+        sampleModel.setPixel(x - sampleModelTranslateX, y - sampleModelTranslateY, dArray,
+                dataBuffer);
     }
 
     /**
-     * Sets a int array of samples for the specified rectangular area
-     * of pixels in this WritableRaster. 
+     * Sets a integer array of samples for the specified rectangular area of
+     * pixels in this WritableRaster.
      * 
-     * @param x the X coordinate of rectangular area.
-     * @param y the Y coordinate of rectangular area.
-     * @param w the width of rectangular area.
-     * @param h the height of rectangular area.
-     * @param iArray the int array of samples.
+     * @param x
+     *            the X coordinate of rectangular area.
+     * @param y
+     *            the Y coordinate of rectangular area.
+     * @param w
+     *            the width of rectangular area.
+     * @param h
+     *            the height of rectangular area.
+     * @param iArray
+     *            the integer array of samples.
      */
     public void setPixels(int x, int y, int w, int h, int iArray[]) {
-        sampleModel.setPixels(x - sampleModelTranslateX,
-                y - sampleModelTranslateY, w, h, iArray, dataBuffer);
+        sampleModel.setPixels(x - sampleModelTranslateX, y - sampleModelTranslateY, w, h, iArray,
+                dataBuffer);
     }
 
     /**
-     * Sets a float array of samples for the specified rectangular area
-     * of pixels in this WritableRaster. 
+     * Sets a float array of samples for the specified rectangular area of
+     * pixels in this WritableRaster.
      * 
-     * @param x the X coordinate of rectangular area.
-     * @param y the Y coordinate of rectangular area.
-     * @param w the width of rectangular area.
-     * @param h the height of rectangular area.
-     * @param fArray the float array of samples.
+     * @param x
+     *            the X coordinate of rectangular area.
+     * @param y
+     *            the Y coordinate of rectangular area.
+     * @param w
+     *            the width of rectangular area.
+     * @param h
+     *            the height of rectangular area.
+     * @param fArray
+     *            the float array of samples.
      */
     public void setPixels(int x, int y, int w, int h, float fArray[]) {
-        sampleModel.setPixels(x - sampleModelTranslateX,
-                y - sampleModelTranslateY, w, h, fArray, dataBuffer);
+        sampleModel.setPixels(x - sampleModelTranslateX, y - sampleModelTranslateY, w, h, fArray,
+                dataBuffer);
     }
 
     /**
-     * Sets a double array of samples for the specified rectangular area
-     * of pixels in this WritableRaster. 
+     * Sets a double array of samples for the specified rectangular area of
+     * pixels in this WritableRaster.
      * 
-     * @param x the X coordinate of rectangular area.
-     * @param y the Y coordinate of rectangular area.
-     * @param w the width of rectangular area.
-     * @param h the height of rectangular area.
-     * @param dArray the double array of samples.
+     * @param x
+     *            the X coordinate of rectangular area.
+     * @param y
+     *            the Y coordinate of rectangular area.
+     * @param w
+     *            the width of rectangular area.
+     * @param h
+     *            the height of rectangular area.
+     * @param dArray
+     *            the double array of samples.
      */
     public void setPixels(int x, int y, int w, int h, double dArray[]) {
-        sampleModel.setPixels(x - sampleModelTranslateX,
-                y - sampleModelTranslateY, w, h, dArray, dataBuffer);
+        sampleModel.setPixels(x - sampleModelTranslateX, y - sampleModelTranslateY, w, h, dArray,
+                dataBuffer);
     }
 
     /**
-     * Sets the samples for the specified band and the specified
-     * rectangular area of pixels with an int array of samples.
+     * Sets the samples for the specified band and the specified rectangular
+     * area of pixels with an integer array of samples.
      * 
-     * @param x the X coordinate of the area of pixels.
-     * @param y the Y coordinate of the area of pixels.
-     * @param w the width of the area of pixels.
-     * @param h the height of the area of pixels.
-     * @param b the specified band.
-     * @param iArray the int array of samples.
-
+     * @param x
+     *            the X coordinate of the area of pixels.
+     * @param y
+     *            the Y coordinate of the area of pixels.
+     * @param w
+     *            the width of the area of pixels.
+     * @param h
+     *            the height of the area of pixels.
+     * @param b
+     *            the specified band.
+     * @param iArray
+     *            the integer array of samples.
      */
     public void setSamples(int x, int y, int w, int h, int b, int iArray[]) {
-        sampleModel.setSamples(x - sampleModelTranslateX,
-                y - sampleModelTranslateY, w, h, b, iArray, dataBuffer);
+        sampleModel.setSamples(x - sampleModelTranslateX, y - sampleModelTranslateY, w, h, b,
+                iArray, dataBuffer);
     }
 
     /**
-     * Sets the samples for the specified band and the specified
-     * rectangular area of pixels with a float array of samples.
+     * Sets the samples for the specified band and the specified rectangular
+     * area of pixels with a float array of samples.
      * 
-     * @param x the X coordinate of the area of pixels.
-     * @param y the Y coordinate of the area of pixels.
-     * @param w the width of the area of pixels.
-     * @param h the height of the area of pixels.
-     * @param b the specified band.
-     * @param fArray the float array of samples.
+     * @param x
+     *            the X coordinate of the area of pixels.
+     * @param y
+     *            the Y coordinate of the area of pixels.
+     * @param w
+     *            the width of the area of pixels.
+     * @param h
+     *            the height of the area of pixels.
+     * @param b
+     *            the specified band.
+     * @param fArray
+     *            the float array of samples.
      */
     public void setSamples(int x, int y, int w, int h, int b, float fArray[]) {
-        sampleModel.setSamples(x - sampleModelTranslateX,
-                y - sampleModelTranslateY, w, h, b, fArray, dataBuffer);
+        sampleModel.setSamples(x - sampleModelTranslateX, y - sampleModelTranslateY, w, h, b,
+                fArray, dataBuffer);
     }
 
     /**
-     * Sets the samples for the specified band and the specified
-     * rectangular area of pixels with a double array of samples.
+     * Sets the samples for the specified band and the specified rectangular
+     * area of pixels with a double array of samples.
      * 
-     * @param x the X coordinate of the area of pixels.
-     * @param y the Y coordinate of the area of pixels.
-     * @param w the width of the area of pixels.
-     * @param h the height of the area of pixels.
-     * @param b the specified band.
-     * @param dArray the double array of samples.
+     * @param x
+     *            the X coordinate of the area of pixels.
+     * @param y
+     *            the Y coordinate of the area of pixels.
+     * @param w
+     *            the width of the area of pixels.
+     * @param h
+     *            the height of the area of pixels.
+     * @param b
+     *            the specified band.
+     * @param dArray
+     *            the double array of samples.
      */
     public void setSamples(int x, int y, int w, int h, int b, double dArray[]) {
-        sampleModel.setSamples(x - sampleModelTranslateX,
-                y - sampleModelTranslateY, w, h, b, dArray, dataBuffer);
+        sampleModel.setSamples(x - sampleModelTranslateX, y - sampleModelTranslateY, w, h, b,
+                dArray, dataBuffer);
     }
 
     /**
-     * Sets the sample for the specified band and the specified
-     * pixel with an int sample.
+     * Sets the sample for the specified band and the specified pixel with an
+     * integer sample.
      * 
-     * @param x the X coordinate of the pixel.
-     * @param y the Y coordinate of the pixel.
-     * @param b the specified band.
-     * @param s the sample to be set.
+     * @param x
+     *            the X coordinate of the pixel.
+     * @param y
+     *            the Y coordinate of the pixel.
+     * @param b
+     *            the specified band.
+     * @param s
+     *            the sample to be set.
      */
     public void setSample(int x, int y, int b, int s) {
-        sampleModel.setSample(x - sampleModelTranslateX,
-                y - sampleModelTranslateY, b, s, dataBuffer);
+        sampleModel.setSample(x - sampleModelTranslateX, y - sampleModelTranslateY, b, s,
+                dataBuffer);
     }
 
     /**
-     * Sets the sample for the specified band and the specified
-     * pixel with a float sample.
+     * Sets the sample for the specified band and the specified pixel with a
+     * float sample.
      * 
-     * @param x the X coordinate of the pixel.
-     * @param y the Y coordinate of the pixel.
-     * @param b the specified band.
-     * @param s the sample to be set.
+     * @param x
+     *            the X coordinate of the pixel.
+     * @param y
+     *            the Y coordinate of the pixel.
+     * @param b
+     *            the specified band.
+     * @param s
+     *            the sample to be set.
      */
     public void setSample(int x, int y, int b, float s) {
-        sampleModel.setSample(x - sampleModelTranslateX,
-                y - sampleModelTranslateY, b, s, dataBuffer);
+        sampleModel.setSample(x - sampleModelTranslateX, y - sampleModelTranslateY, b, s,
+                dataBuffer);
     }
 
     /**
-     * Sets the sample for the specified band and the specified
-     * pixel with a int sample.
+     * Sets the sample for the specified band and the specified pixel with an
+     * integer sample.
      * 
-     * @param x the X coordinate of the pixel.
-     * @param y the Y coordinate of the pixel.
-     * @param b the specified band.
-     * @param s the sample to be set.
+     * @param x
+     *            the X coordinate of the pixel.
+     * @param y
+     *            the Y coordinate of the pixel.
+     * @param b
+     *            the specified band.
+     * @param s
+     *            the sample to be set.
      */
     public void setSample(int x, int y, int b, double s) {
-        sampleModel.setSample(x - sampleModelTranslateX,
-                y - sampleModelTranslateY, b, s, dataBuffer);
+        sampleModel.setSample(x - sampleModelTranslateX, y - sampleModelTranslateY, b, s,
+                dataBuffer);
     }
 
 }
-
diff --git a/awt/java/awt/image/WritableRenderedImage.java b/awt/java/awt/image/WritableRenderedImage.java
index ee1cb9e..052353b 100644
--- a/awt/java/awt/image/WritableRenderedImage.java
+++ b/awt/java/awt/image/WritableRenderedImage.java
@@ -18,23 +18,27 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image;
 
 import java.awt.Point;
 
 /**
- * The WriteableRenderedImage interface is interface for objects which
- * contains Raster data of one or several tiles. This interface provides
- * notification mehanism for obtaining tile's writing status.    
+ * The WriteableRenderedImage interface is interface for objects which contains
+ * Raster data of one or several tiles. This interface provides notification
+ * mechanism for obtaining tile's writing status.
+ * 
+ * @since Android 1.0
  */
 public interface WritableRenderedImage extends RenderedImage {
 
     /**
-     * Gets and checks out the writable tile for writing. 
+     * Gets and checks out the writable tile for writing.
      * 
-     * @param tileX the X index of the tile. 
-     * @param tileY the Y index of the tile.
-     * 
+     * @param tileX
+     *            the X index of the tile.
+     * @param tileY
+     *            the Y index of the tile.
      * @return the WritableRaster.
      */
     public WritableRaster getWritableTile(int tileX, int tileY);
@@ -42,60 +46,64 @@
     /**
      * Removes the registered TileObserver.
      * 
-     * @param to the TileObserver which is registered for this
-     * WritableRenderedImage.
+     * @param to
+     *            the TileObserver which is registered for this
+     *            WritableRenderedImage.
      */
     public void removeTileObserver(TileObserver to);
 
     /**
      * Adds the specified TileObserver to this WritableRenderedImage.
      * 
-     * @param to the TileObserver object to be added.
+     * @param to
+     *            the TileObserver object to be added.
      */
     public void addTileObserver(TileObserver to);
 
     /**
-     * Sets this image to the contents of the specified Raster.  
+     * Sets this image to the contents of the specified Raster.
      * 
-     * @param r the specified Raster.
+     * @param r
+     *            the specified Raster.
      */
     public void setData(Raster r);
 
     /**
-     * Gets the array of points wich represent indices of tiles which
-     * are check out for writing.
+     * Gets the array of points which represent indices of tiles which are check
+     * out for writing.
      * 
-     * @return the array of Points.
+     * @return the array of points.
      */
     public Point[] getWritableTileIndices();
 
     /**
      * Checks if the specified tile is writable or not.
      * 
-     * @param tileX the X index of tile. 
-     * @param tileY the Y index of tile.
-     * 
-     * @return true, if the specified tile is writable,
-     * false otherwise.
+     * @param tileX
+     *            the X index of tile.
+     * @param tileY
+     *            the Y index of tile.
+     * @return true, if the specified tile is writable, false otherwise.
      */
     public boolean isTileWritable(int tileX, int tileY);
 
     /**
-     * Release the specified writable tile. This method removes the writer 
-     * from the tile.
+     * Release the specified writable tile. This method removes the writer from
+     * the tile.
      * 
-     * @param tileX the X index of the tile. 
-     * @param tileY the Y index of the tile.
+     * @param tileX
+     *            the X index of the tile.
+     * @param tileY
+     *            the Y index of the tile.
      */
     public void releaseWritableTile(int tileX, int tileY);
 
     /**
      * Checks if there is a tile which is checked out for writing.
      * 
-     * @return true, if any tile is checked out for writing, false if there
-     * is no such tile.
+     * @return true, if any tile is checked out for writing, false if there is
+     *         no such tile.
      */
     public boolean hasTileWriters();
 
 }
-
diff --git a/awt/java/awt/image/package.html b/awt/java/awt/image/package.html
new file mode 100644
index 0000000..b4d6ef0
--- /dev/null
+++ b/awt/java/awt/image/package.html
@@ -0,0 +1,8 @@
+<html>
+  <body>
+    <p>
+      This package contains classes and interfaces that allow to modify existing images or to create a new image rather than loading it from a file.
+    </p>
+   @since Android 1.0
+  </body>
+</html>
diff --git a/awt/java/awt/image/renderable/ContextualRenderedImageFactory.java b/awt/java/awt/image/renderable/ContextualRenderedImageFactory.java
index 3e96637..1881a0c 100644
--- a/awt/java/awt/image/renderable/ContextualRenderedImageFactory.java
+++ b/awt/java/awt/image/renderable/ContextualRenderedImageFactory.java
@@ -18,72 +18,80 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image.renderable;
 
 import java.awt.geom.Rectangle2D;
 import java.awt.image.RenderedImage;
 
 /**
- * A factory for creating ContextualRenderedImage objects with utilities 
- * for manipulating the properties in the parameter block.
+ * A factory for creating ContextualRenderedImage objects with utilities for
+ * manipulating the properties in the parameter block.
+ * 
+ * @since Android 1.0
  */
 public interface ContextualRenderedImageFactory extends RenderedImageFactory {
 
     /**
      * Maps a render context to a parameter block and a renderable image.
      * 
-     * @param a0 the index
-     * @param a1 the RenderContext
-     * @param a2 the ParameterBlock
-     * @param a3 the RenderableImage
-     * 
-     * @return the render context
+     * @param a0
+     *            the index.
+     * @param a1
+     *            the RenderContext.
+     * @param a2
+     *            the ParameterBlock.
+     * @param a3
+     *            the RenderableImage.
+     * @return the render context.
      */
-    public RenderContext mapRenderContext(int a0, RenderContext a1, ParameterBlock a2, RenderableImage a3);
+    public RenderContext mapRenderContext(int a0, RenderContext a1, ParameterBlock a2,
+            RenderableImage a3);
 
     /**
      * Gets the value of the property from the parameter block.
      * 
-     * @param a0 the parameter block to examine to find the property
-     * @param a1 the name of the property
-     * 
-     * @return the value of the property
+     * @param a0
+     *            the parameter block to examine to find the property.
+     * @param a1
+     *            the name of the property.
+     * @return the value of the property.
      */
     public Object getProperty(ParameterBlock a0, String a1);
 
     /**
-     * Creates the rendered image determined by the render context and
-     * parameter block.
+     * Creates the rendered image determined by the render context and parameter
+     * block.
      * 
-     * @param a0 the RenderContext
-     * @param a1 the ParameterBlock
-     * 
-     * @return the rendered image
+     * @param a0
+     *            the RenderContext.
+     * @param a1
+     *            the ParameterBlock.
+     * @return the rendered image.
      */
     public RenderedImage create(RenderContext a0, ParameterBlock a1);
 
     /**
      * Gets the bounding rectangle from the parameter block.
      * 
-     * @param a0 the parameter block to read the bounds from
-     * 
-     * @return the bounding rectangle
+     * @param a0
+     *            the parameter block to read the bounds from.
+     * @return the bounding rectangle.
      */
     public Rectangle2D getBounds2D(ParameterBlock a0);
 
     /**
      * Gets the names of all of the supported properties.
      * 
-     * @return the property names
+     * @return the property names.
      */
     public String[] getPropertyNames();
 
     /**
      * Checks if this image factory is dynamic.
      * 
-     * @return true, if this image factory is dynamic
+     * @return true, if this image factory is dynamic.
      */
     public boolean isDynamic();
 
 }
-
diff --git a/awt/java/awt/image/renderable/ParameterBlock.java b/awt/java/awt/image/renderable/ParameterBlock.java
index 1555f45..7dde73a 100644
--- a/awt/java/awt/image/renderable/ParameterBlock.java
+++ b/awt/java/awt/image/renderable/ParameterBlock.java
@@ -18,6 +18,7 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image.renderable;
 
 import java.awt.image.RenderedImage;
@@ -25,28 +26,36 @@
 import java.util.Vector;
 
 /**
- * The Class ParameterBlock groups an indexed set of parameter data 
- * with a set of renderable (source) images.  The mapping between
- * the indexed parameters and their property names is provided 
- * by a {@link ContextualRenderedImageFactory}
+ * The class ParameterBlock groups an indexed set of parameter data with a set
+ * of renderable (source) images. The mapping between the indexed parameters and
+ * their property names is provided by a {@link ContextualRenderedImageFactory}.
+ * 
+ * @since Android 1.0
  */
 public class ParameterBlock implements Cloneable, Serializable {
 
-
-    /** The Constant serialVersionUID. */
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = -7577115551785240750L;
 
-    /** The sources (renderable images). */
+    /**
+     * The sources (renderable images).
+     */
     protected Vector<Object> sources = new Vector<Object>();
 
-    /** The parameters. */
+    /**
+     * The parameters.
+     */
     protected Vector<Object> parameters = new Vector<Object>();
 
     /**
      * Instantiates a new parameter block.
      * 
-     * @param sources the vector of source images
-     * @param parameters the vector of parameters
+     * @param sources
+     *            the vector of source images.
+     * @param parameters
+     *            the vector of parameters.
      */
     public ParameterBlock(Vector<Object> sources, Vector<Object> parameters) {
         setSources(sources);
@@ -56,7 +65,8 @@
     /**
      * Instantiates a new parameter block with no parameters.
      * 
-     * @param sources the vector of source images
+     * @param sources
+     *            the vector of source images.
      */
     public ParameterBlock(Vector<Object> sources) {
         setSources(sources);
@@ -65,18 +75,20 @@
     /**
      * Instantiates a new parameter block with no image or parameter vectors.
      */
-    public ParameterBlock() {}
+    public ParameterBlock() {
+    }
 
     /**
      * Sets the source image at the specified index.
      * 
-     * @param source the source image
-     * @param index the index where the source will be placed
-     * 
-     * @return this parameter block
+     * @param source
+     *            the source image.
+     * @param index
+     *            the index where the source will be placed.
+     * @return this parameter block.
      */
     public ParameterBlock setSource(Object source, int index) {
-        if(sources.size() < index + 1){
+        if (sources.size() < index + 1) {
             sources.setSize(index + 1);
         }
         sources.setElementAt(source, index);
@@ -86,14 +98,15 @@
     /**
      * Sets the parameter value object at the specified index.
      * 
-     * @param obj the parameter value to place at the desired index
-     * @param index the index where the object is to be placed in the 
-     * vector of parameters
-     * 
-     * @return this parameter block
+     * @param obj
+     *            the parameter value to place at the desired index.
+     * @param index
+     *            the index where the object is to be placed in the vector of
+     *            parameters.
+     * @return this parameter block.
      */
     public ParameterBlock set(Object obj, int index) {
-        if(parameters.size() < index + 1){
+        if (parameters.size() < index + 1) {
             parameters.setSize(index + 1);
         }
         parameters.setElementAt(obj, index);
@@ -103,9 +116,9 @@
     /**
      * Adds a source to the vector of sources.
      * 
-     * @param source the source to add
-     * 
-     * @return this parameter block
+     * @param source
+     *            the source to add.
+     * @return this parameter block.
      */
     public ParameterBlock addSource(Object source) {
         sources.addElement(source);
@@ -115,9 +128,9 @@
     /**
      * Adds the object to the vector of parameter values
      * 
-     * @param obj the obj to add
-     * 
-     * @return this parameter block
+     * @param obj
+     *            the obj to add.
+     * @return this parameter block.
      */
     public ParameterBlock add(Object obj) {
         parameters.addElement(obj);
@@ -125,20 +138,22 @@
     }
 
     /**
-     * Sets the vector of sources, replacing the existing
-     * vector of sources, if any.
+     * Sets the vector of sources, replacing the existing vector of sources, if
+     * any.
      * 
-     * @param sources the new sources
+     * @param sources
+     *            the new sources.
      */
     public void setSources(Vector<Object> sources) {
         this.sources = sources;
     }
 
     /**
-     * Sets the vector of parameters, replacing the existing
-     * vector of parameters, if any.
+     * Sets the vector of parameters, replacing the existing vector of
+     * parameters, if any.
      * 
-     * @param parameters the new parameters
+     * @param parameters
+     *            the new parameters.
      */
     public void setParameters(Vector<Object> parameters) {
         this.parameters = parameters;
@@ -147,7 +162,7 @@
     /**
      * Gets the vector of sources.
      * 
-     * @return the sources
+     * @return the sources.
      */
     public Vector<Object> getSources() {
         return sources;
@@ -156,7 +171,7 @@
     /**
      * Gets the vector of parameters.
      * 
-     * @return the parameters
+     * @return the parameters.
      */
     public Vector<Object> getParameters() {
         return parameters;
@@ -165,9 +180,9 @@
     /**
      * Gets the source at the specified index.
      * 
-     * @param index the index
-     * 
-     * @return the source object found at the specified index
+     * @param index
+     *            the index.
+     * @return the source object found at the specified index.
      */
     public Object getSource(int index) {
         return sources.elementAt(index);
@@ -176,9 +191,9 @@
     /**
      * Gets the object parameter found at the specified index.
      * 
-     * @param index the index
-     * 
-     * @return the parameter object found at the specified index
+     * @param index
+     *            the index.
+     * @return the parameter object found at the specified index.
      */
     public Object getObjectParameter(int index) {
         return parameters.elementAt(index);
@@ -187,328 +202,333 @@
     /**
      * Shallow clone (clones using the superclass clone method).
      * 
-     * @return the clone of this object
+     * @return the clone of this object.
      */
     public Object shallowClone() {
-        try{
+        try {
             return super.clone();
-        }catch(Exception e){
+        } catch (Exception e) {
             return null;
         }
     }
 
+    /**
+     * Returns a copy of this ParameterBlock instance.
+     * 
+     * @return the identical copy of this instance.
+     */
     @SuppressWarnings("unchecked")
     @Override
     public Object clone() {
         ParameterBlock replica;
-        try{
+        try {
             replica = (ParameterBlock)super.clone();
-        }catch(Exception e){
+        } catch (Exception e) {
             return null;
         }
-        if(sources != null){
+        if (sources != null) {
             replica.setSources((Vector<Object>)(sources.clone()));
         }
-        if(parameters != null){
+        if (parameters != null) {
             replica.setParameters((Vector<Object>)(parameters.clone()));
         }
         return replica;
     }
 
     /**
-     * Gets an array of classes corresponding to all of the parameter
-     * values found in the array of parameters, in order.
+     * Gets an array of classes corresponding to all of the parameter values
+     * found in the array of parameters, in order.
      * 
-     * @return the parameter classes
+     * @return the parameter classes.
      */
     public Class[] getParamClasses() {
         int count = parameters.size();
         Class paramClasses[] = new Class[count];
 
-        for(int i = 0; i < count; i++){
+        for (int i = 0; i < count; i++) {
             paramClasses[i] = parameters.elementAt(i).getClass();
         }
         return paramClasses;
     }
 
     /**
-     * Gets the renderable source image found at the specified index
-     * in the source array.
+     * Gets the renderable source image found at the specified index in the
+     * source array.
      * 
-     * @param index the index
-     * 
-     * @return the renderable source image
+     * @param index
+     *            the index.
+     * @return the renderable source image.
      */
     public RenderableImage getRenderableSource(int index) {
         return (RenderableImage)sources.elementAt(index);
     }
 
     /**
-     * Wraps the short value in a Short and places it in the 
-     * parameter block at the specified index.
+     * Wraps the short value in a Short and places it in the parameter block at
+     * the specified index.
      * 
-     * @param s the short value of the parameter
-     * @param index the index
-     * 
-     * @return this parameter block
+     * @param s
+     *            the short value of the parameter.
+     * @param index
+     *            the index.
+     * @return this parameter block.
      */
     public ParameterBlock set(short s, int index) {
         return set(new Short(s), index);
     }
 
     /**
-     * Wraps the short value in a Short and adds it to the 
-     * parameter block.
+     * Wraps the short value in a Short and adds it to the parameter block.
      * 
-     * @param s the short value of the parameter
-     * 
-     * @return this parameter block
+     * @param s
+     *            the short value of the parameter.
+     * @return this parameter block.
      */
     public ParameterBlock add(short s) {
         return add(new Short(s));
     }
 
     /**
-     * Wraps the long value in a Long and places it in the 
-     * parameter block at the specified index.
+     * Wraps the long value in a Long and places it in the parameter block at
+     * the specified index.
      * 
-     * @param l the long value of the parameter
-     * @param index the index
-     * 
-     * @return this parameter block
+     * @param l
+     *            the long value of the parameter.
+     * @param index
+     *            the index.
+     * @return this parameter block.
      */
     public ParameterBlock set(long l, int index) {
         return set(new Long(l), index);
     }
 
     /**
-     * Wraps the long value in a Long and adds it to the 
-     * parameter block.
+     * Wraps the long value in a Long and adds it to the parameter block.
      * 
-     * @param l the long value of the parameter
-     * 
-     * @return this parameter block
+     * @param l
+     *            the long value of the parameter.
+     * @return this parameter block.
      */
     public ParameterBlock add(long l) {
         return add(new Long(l));
     }
 
     /**
-     * Wraps the int value in an Integer and places it in the 
-     * parameter block at the specified index.
+     * Wraps the integer value in an Integer and places it in the parameter
+     * block at the specified index.
      * 
-     * @param i the int value of the parameter
-     * @param index the index
-     * 
-     * @return this parameter block
+     * @param i
+     *            the integer value of the parameter.
+     * @param index
+     *            the index.
+     * @return this parameter block.
      */
     public ParameterBlock set(int i, int index) {
         return set(new Integer(i), index);
     }
 
     /**
-     * Wraps the int value in an Integer and adds it to the 
-     * parameter block.
+     * Wraps the integer value in an Integer and adds it to the parameter block.
      * 
-     * @param i the int value of the parameter
-     * 
-     * @return this parameter block
+     * @param i
+     *            the integer value of the parameter.
+     * @return this parameter block.
      */
     public ParameterBlock add(int i) {
         return add(new Integer(i));
     }
 
     /**
-     * Wraps the float value in a Float and places it in the 
-     * parameter block at the specified index.
+     * Wraps the float value in a Float and places it in the parameter block at
+     * the specified index.
      * 
-     * @param f the float value of the parameter
-     * @param index the index
-     * 
-     * @return this parameter block
+     * @param f
+     *            the float value of the parameter.
+     * @param index
+     *            the index.
+     * @return this parameter block.
      */
     public ParameterBlock set(float f, int index) {
         return set(new Float(f), index);
     }
 
     /**
-     * Wraps the float value in a Float and adds it to the 
-     * parameter block.
+     * Wraps the float value in a Float and adds it to the parameter block.
      * 
-     * @param f the float value of the parameter
-     * 
-     * @return this parameter block
+     * @param f
+     *            the float value of the parameter.
+     * @return this parameter block.
      */
     public ParameterBlock add(float f) {
         return add(new Float(f));
     }
 
     /**
-     * Wraps the double value in a Double and places it in the 
-     * parameter block at the specified index.
+     * Wraps the double value in a Double and places it in the parameter block
+     * at the specified index.
      * 
-     * @param d the double value of the parameter
-     * @param index the index
-     * 
-     * @return this parameter block
+     * @param d
+     *            the double value of the parameter.
+     * @param index
+     *            the index.
+     * @return this parameter block.
      */
     public ParameterBlock set(double d, int index) {
         return set(new Double(d), index);
     }
 
     /**
-     * Wraps the double value in a Double and adds it to the 
-     * parameter block.
+     * Wraps the double value in a Double and adds it to the parameter block.
      * 
-     * @param d the double value of the parameter
-     * 
-     * @return this parameter block
+     * @param d
+     *            the double value of the parameter.
+     * @return this parameter block.
      */
     public ParameterBlock add(double d) {
         return add(new Double(d));
     }
 
     /**
-     * Wraps the char value in a Character and places it in the 
-     * parameter block at the specified index.
+     * Wraps the char value in a Character and places it in the parameter block
+     * at the specified index.
      * 
-     * @param c the char value of the parameter
-     * @param index the index
-     * 
-     * @return this parameter block
+     * @param c
+     *            the char value of the parameter.
+     * @param index
+     *            the index.
+     * @return this parameter block.
      */
     public ParameterBlock set(char c, int index) {
         return set(new Character(c), index);
     }
 
     /**
-     * Wraps the char value in a Character and adds it to the 
-     * parameter block.
+     * Wraps the char value in a Character and adds it to the parameter block.
      * 
-     * @param c the char value of the parameter
-     * 
-     * @return this parameter block
+     * @param c
+     *            the char value of the parameter.
+     * @return this parameter block.
      */
     public ParameterBlock add(char c) {
         return add(new Character(c));
     }
 
     /**
-     * Wraps the byte value in a Byte and places it in the 
-     * parameter block at the specified index.
+     * Wraps the byte value in a Byte and places it in the parameter block at
+     * the specified index.
      * 
-     * @param b the byte value of the parameter
-     * @param index the index
-     * 
-     * @return this parameter block
+     * @param b
+     *            the byte value of the parameter.
+     * @param index
+     *            the index.
+     * @return this parameter block.
      */
     public ParameterBlock set(byte b, int index) {
         return set(new Byte(b), index);
     }
 
     /**
-     * Wraps the byte value in a Byte and adds it to the 
-     * parameter block.
+     * Wraps the byte value in a Byte and adds it to the parameter block.
      * 
-     * @param b the byte value of the parameter
-     * 
-     * @return the parameter block
+     * @param b
+     *            the byte value of the parameter.
+     * @return the parameter block.
      */
     public ParameterBlock add(byte b) {
         return add(new Byte(b));
     }
 
     /**
-     * Gets the RenderedImage at the specified index from the 
-     * vector of source images.
+     * Gets the RenderedImage at the specified index from the vector of source
+     * images.
      * 
-     * @param index the index
-     * 
-     * @return the rendered image
+     * @param index
+     *            the index.
+     * @return the rendered image.
      */
     public RenderedImage getRenderedSource(int index) {
         return (RenderedImage)sources.elementAt(index);
     }
 
     /**
-     * Gets the short-valued parameter found at the desired index
-     * in the vector of parameter values.
+     * Gets the short-valued parameter found at the desired index in the vector
+     * of parameter values.
      * 
-     * @param index the index
-     * 
-     * @return the short parameter
+     * @param index
+     *            the index.
+     * @return the short parameter.
      */
     public short getShortParameter(int index) {
         return ((Short)parameters.elementAt(index)).shortValue();
     }
 
     /**
-     * Gets the long-valued parameter found at the desired index
-     * in the vector of parameter values.
+     * Gets the long-valued parameter found at the desired index in the vector
+     * of parameter values.
      * 
-     * @param index the index
-     * 
-     * @return the long parameter
+     * @param index
+     *            the index.
+     * @return the long parameter.
      */
     public long getLongParameter(int index) {
         return ((Long)parameters.elementAt(index)).longValue();
     }
 
     /**
-     * Gets the int-valued parameter found at the desired index
-     * in the vector of parameter values.
+     * Gets the integer-valued parameter found at the desired index in the
+     * vector of parameter values.
      * 
-     * @param index the index
-     * 
-     * @return the int parameter
+     * @param index
+     *            the index.
+     * @return the integer parameter.
      */
     public int getIntParameter(int index) {
         return ((Integer)parameters.elementAt(index)).intValue();
     }
 
     /**
-     * Gets the float-valued parameter found at the desired index
-     * in the vector of parameter values.
+     * Gets the float-valued parameter found at the desired index in the vector
+     * of parameter values.
      * 
-     * @param index the index
-     * 
-     * @return the float parameter
+     * @param index
+     *            the index.
+     * @return the float parameter.
      */
     public float getFloatParameter(int index) {
         return ((Float)parameters.elementAt(index)).floatValue();
     }
 
     /**
-     * Gets the double-valued parameter found at the desired index
-     * in the vector of parameter values.
+     * Gets the double-valued parameter found at the desired index in the vector
+     * of parameter values.
      * 
-     * @param index the index
-     * 
-     * @return the double parameter
+     * @param index
+     *            the index.
+     * @return the double parameter.
      */
     public double getDoubleParameter(int index) {
         return ((Double)parameters.elementAt(index)).doubleValue();
     }
 
     /**
-     * Gets the char-valued parameter found at the desired index
-     * in the vector of parameter values.
+     * Gets the char-valued parameter found at the desired index in the vector
+     * of parameter values.
      * 
-     * @param index the index
-     * 
-     * @return the char parameter
+     * @param index
+     *            the index.
+     * @return the char parameter.
      */
     public char getCharParameter(int index) {
         return ((Character)parameters.elementAt(index)).charValue();
     }
 
     /**
-     * Gets the byte-valued parameter found at the desired index
-     * in the vector of parameter values.
+     * Gets the byte-valued parameter found at the desired index in the vector
+     * of parameter values.
      * 
-     * @param index the index
-     * 
-     * @return the byte parameter
+     * @param index
+     *            the index.
+     * @return the byte parameter.
      */
     public byte getByteParameter(int index) {
         return ((Byte)parameters.elementAt(index)).byteValue();
@@ -531,7 +551,7 @@
     /**
      * Gets the number of elements in the vector of sources.
      * 
-     * @return the number of elements in the vector of sources
+     * @return the number of elements in the vector of sources.
      */
     public int getNumSources() {
         return sources.size();
@@ -540,7 +560,7 @@
     /**
      * Gets the number of elements in the vector of parameters.
      * 
-     * @return the number of elements in the vector of parameters
+     * @return the number of elements in the vector of parameters.
      */
     public int getNumParameters() {
         return parameters.size();
diff --git a/awt/java/awt/image/renderable/RenderContext.java b/awt/java/awt/image/renderable/RenderContext.java
index 3a3b93c..0db512f 100644
--- a/awt/java/awt/image/renderable/RenderContext.java
+++ b/awt/java/awt/image/renderable/RenderContext.java
@@ -18,6 +18,7 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image.renderable;
 
 import java.awt.RenderingHints;
@@ -25,27 +26,37 @@
 import java.awt.geom.AffineTransform;
 
 /**
- * The Class RenderContext stores data on how an image is to be 
- * rendered: the affine transform, the area of interest, and 
- * the rendering hints.
+ * The Class RenderContext stores data on how an image is to be rendered: the
+ * affine transform, the area of interest, and the rendering hints.
+ * 
+ * @since Android 1.0
  */
 public class RenderContext implements Cloneable {
 
-    /** The affine transform. */
+    /**
+     * The affine transform.
+     */
     AffineTransform transform;
-    
-    /** The area of interest. */
+
+    /**
+     * The area of interest.
+     */
     Shape aoi;
-    
-    /** The rendering hints. */
+
+    /**
+     * The rendering hints.
+     */
     RenderingHints hints;
 
     /**
      * Instantiates a new render context.
      * 
-     * @param usr2dev the affine transform
-     * @param aoi the area of interest
-     * @param hints the rendering hints
+     * @param usr2dev
+     *            the affine transform.
+     * @param aoi
+     *            the area of interest.
+     * @param hints
+     *            the rendering hints.
      */
     public RenderContext(AffineTransform usr2dev, Shape aoi, RenderingHints hints) {
         this.transform = (AffineTransform)usr2dev.clone();
@@ -56,8 +67,10 @@
     /**
      * Instantiates a new render context with no specified hints.
      * 
-     * @param usr2dev the affine transform
-     * @param aoi the area of interest
+     * @param usr2dev
+     *            the affine transform.
+     * @param aoi
+     *            the area of interest.
      */
     public RenderContext(AffineTransform usr2dev, Shape aoi) {
         this(usr2dev, aoi, null);
@@ -66,18 +79,21 @@
     /**
      * Instantiates a new render context with no specified area of interest.
      * 
-     * @param usr2dev the affine transform
-     * @param hints the rendering hints
+     * @param usr2dev
+     *            the affine transform.
+     * @param hints
+     *            the rendering hints.
      */
     public RenderContext(AffineTransform usr2dev, RenderingHints hints) {
         this(usr2dev, null, hints);
     }
 
     /**
-     * Instantiates a new render context with no rendering hints or 
-     * area of interest.
+     * Instantiates a new render context with no rendering hints or area of
+     * interest.
      * 
-     * @param usr2dev the affine transform
+     * @param usr2dev
+     *            the affine transform.
      */
     public RenderContext(AffineTransform usr2dev) {
         this(usr2dev, null, null);
@@ -91,36 +107,36 @@
     /**
      * Sets the affine transform for this render context.
      * 
-     * @param newTransform the new affine transform
+     * @param newTransform
+     *            the new affine transform.
      */
     public void setTransform(AffineTransform newTransform) {
         transform = (AffineTransform)newTransform.clone();
     }
 
     /**
-     * Concatenates the current transform with the specified transform
-     * (so they are applied with the specified transform acting first)
-     * and sets the resulting transform as the affine transform of 
-     * this rendering context.
+     * Concatenates the current transform with the specified transform (so they
+     * are applied with the specified transform acting first) and sets the
+     * resulting transform as the affine transform of this rendering context.
      * 
-     * @param modTransform the new transform which modifies the 
-     * current transform
-     * 
-     * @deprecated use {@link RenderContext#preConcatenateTransform(AffineTransform)}
+     * @param modTransform
+     *            the new transform which modifies the current transform.
+     * @deprecated use
+     *             {@link RenderContext#preConcatenateTransform(AffineTransform)}
+     *             .
      */
-    @Deprecated    
+    @Deprecated
     public void preConcetenateTransform(AffineTransform modTransform) {
         preConcatenateTransform(modTransform);
     }
 
     /**
-     * Concatenates the current transform with the specified transform
-     * (so they are applied with the specified transform acting first)
-     * and sets the resulting transform as the affine transform of 
-     * this rendering context.
+     * Concatenates the current transform with the specified transform (so they
+     * are applied with the specified transform acting first) and sets the
+     * resulting transform as the affine transform of this rendering context.
      * 
-     * @param modTransform the new transform which modifies the 
-     * current transform
+     * @param modTransform
+     *            the new transform which modifies the current transform.
      */
     public void preConcatenateTransform(AffineTransform modTransform) {
         transform.preConcatenate(modTransform);
@@ -129,10 +145,10 @@
     /**
      * Concatenate the specified transform with the current transform.
      * 
-     * @param modTransform the new transform which modifies the 
-     * current transform
-     * 
-     * @deprecated use {@link RenderContext#concatenateTransform(AffineTransform)}
+     * @param modTransform
+     *            the new transform which modifies the current transform.
+     * @deprecated use
+     *             {@link RenderContext#concatenateTransform(AffineTransform)}.
      */
     @Deprecated
     public void concetenateTransform(AffineTransform modTransform) {
@@ -142,8 +158,8 @@
     /**
      * Concatenate the specified transform with the current transform.
      * 
-     * @param modTransform the new transform which modifies the 
-     * current transform
+     * @param modTransform
+     *            the new transform which modifies the current transform.
      */
     public void concatenateTransform(AffineTransform modTransform) {
         transform.concatenate(modTransform);
@@ -152,7 +168,7 @@
     /**
      * Gets the transform.
      * 
-     * @return the transform
+     * @return the transform.
      */
     public AffineTransform getTransform() {
         return (AffineTransform)transform.clone();
@@ -161,7 +177,8 @@
     /**
      * Sets the area of interest.
      * 
-     * @param newAoi the new area of interest
+     * @param newAoi
+     *            the new area of interest.
      */
     public void setAreaOfInterest(Shape newAoi) {
         aoi = newAoi;
@@ -170,7 +187,7 @@
     /**
      * Gets the area of interest.
      * 
-     * @return the area of interest
+     * @return the area of interest.
      */
     public Shape getAreaOfInterest() {
         return aoi;
@@ -179,7 +196,8 @@
     /**
      * Sets the rendering hints.
      * 
-     * @param hints the new rendering hints
+     * @param hints
+     *            the new rendering hints.
      */
     public void setRenderingHints(RenderingHints hints) {
         this.hints = hints;
@@ -188,7 +206,7 @@
     /**
      * Gets the rendering hints.
      * 
-     * @return the rendering hints
+     * @return the rendering hints.
      */
     public RenderingHints getRenderingHints() {
         return hints;
diff --git a/awt/java/awt/image/renderable/RenderableImage.java b/awt/java/awt/image/renderable/RenderableImage.java
index 885dc06..21332f7 100644
--- a/awt/java/awt/image/renderable/RenderableImage.java
+++ b/awt/java/awt/image/renderable/RenderableImage.java
@@ -18,6 +18,7 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image.renderable;
 
 import java.awt.RenderingHints;
@@ -25,108 +26,113 @@
 import java.util.Vector;
 
 /**
- * The Interface RenderableImage is implemented by an object that
- * collects all of the image-specific data that defines a single image 
- * that could be rendered to different rendering targets.
+ * The Interface RenderableImage is implemented by an object that collects all
+ * of the image-specific data that defines a single image that could be rendered
+ * to different rendering targets.
+ * 
+ * @since Android 1.0
  */
 public interface RenderableImage {
 
-    /** The Constant HINTS_OBSERVED indicates that the rendering
-     * hints are applied rather than ignored. */
+    /**
+     * The Constant HINTS_OBSERVED indicates that the rendering hints are
+     * applied rather than ignored.
+     */
     public static final String HINTS_OBSERVED = "HINTS_OBSERVED"; //$NON-NLS-1$
 
     /**
      * Gets the property from the RenderableImage's parameter block.
      * 
-     * @param name the name of the property to get.
-     * 
-     * @return the value of the property
+     * @param name
+     *            the name of the property to get.
+     * @return the value of the property.
      */
     public Object getProperty(String name);
 
     /**
-     * Creates the rendered image based on the information contained 
-     * in the parameters and the render context.
+     * Creates the rendered image based on the information contained in the
+     * parameters and the render context.
      * 
-     * @param renderContext the render context giving rendering specifications
-     * such as transformations
-     * 
-     * @return the rendered image
+     * @param renderContext
+     *            the render context giving rendering specifications such as
+     *            transformations.
+     * @return the rendered image.
      */
     public RenderedImage createRendering(RenderContext renderContext);
 
     /**
-     * Creates the scaled rendered image based on the information contained 
-     * in the parameters and the render context.
+     * Creates the scaled rendered image based on the information contained in
+     * the parameters and the render context.
      * 
-     * @param w the desired width after scaling or zero if the scaling 
-     * should be proportional, based on the height
-     * @param h the desired height after scaling or zero if the scaling 
-     * should be proportional, based on the width
-     * @param hints the rendering hints to use
-     * 
-     * @return the rendered image
-     * 
-     * @throws IllegalArgumentException if both the height and width are zero
+     * @param w
+     *            the desired width after scaling or zero if the scaling should
+     *            be proportional, based on the height.
+     * @param h
+     *            the desired height after scaling or zero if the scaling should
+     *            be proportional, based on the width.
+     * @param hints
+     *            the rendering hints to use.
+     * @return the rendered image.
+     * @throws IllegalArgumentException
+     *             if both the height and width are zero.
      */
     public RenderedImage createScaledRendering(int w, int h, RenderingHints hints);
 
     /**
      * Gets the vector of sources from the parameter block.
      * 
-     * @return the sources
+     * @return the sources.
      */
     public Vector<RenderableImage> getSources();
 
     /**
      * Gets the names of all of the supported properties in the current context.
      * 
-     * @return the property names
+     * @return the property names.
      */
     public String[] getPropertyNames();
 
     /**
-     * Creates the default rendering (using the identity transform
-     * and default render context).
+     * Creates the default rendering (using the identity transform and default
+     * render context).
      * 
-     * @return the rendered image
+     * @return the rendered image.
      */
     public RenderedImage createDefaultRendering();
 
     /**
      * Checks if this context supports dynamic rendering.
      * 
-     * @return true, if this context supports dynamic rendering
+     * @return true, if this context supports dynamic rendering.
      */
     public boolean isDynamic();
 
     /**
      * Gets the width of the image.
      * 
-     * @return the width of the image
+     * @return the width of the image.
      */
     public float getWidth();
 
     /**
      * Gets the y coordinate of the upper left corner.
      * 
-     * @return the y coordinate of the upper left corner
+     * @return the y coordinate of the upper left corner.
      */
     public float getMinY();
 
     /**
      * Gets the x coordinate of the upper left corner.
      * 
-     * @return the x coordinate of the upper left corner
+     * @return the x coordinate of the upper left corner.
      */
     public float getMinX();
 
     /**
      * Gets the height of the image.
      * 
-     * @return the height of the image
+     * @return the height of the image.
      */
     public float getHeight();
 
 }
-
diff --git a/awt/java/awt/image/renderable/RenderableImageOp.java b/awt/java/awt/image/renderable/RenderableImageOp.java
index 993ba5f..dc45372 100644
--- a/awt/java/awt/image/renderable/RenderableImageOp.java
+++ b/awt/java/awt/image/renderable/RenderableImageOp.java
@@ -18,6 +18,7 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image.renderable;
 
 import java.awt.RenderingHints;
@@ -29,35 +30,44 @@
 import org.apache.harmony.awt.internal.nls.Messages;
 
 /**
- * The Class RenderableImageOp is a basic implementation of RenderableImage, 
- * with methods to access the parameter data and perform rendering
- * operations.
+ * The Class RenderableImageOp is a basic implementation of RenderableImage,
+ * with methods to access the parameter data and perform rendering operations.
+ * 
+ * @since Android 1.0
  */
 public class RenderableImageOp implements RenderableImage {
 
-    /** The CRIF. */
+    /**
+     * The CRIF.
+     */
     ContextualRenderedImageFactory CRIF;
-    
-    /** The param block. */
+
+    /**
+     * The param block.
+     */
     ParameterBlock paramBlock;
-    
-    /** The height. */
+
+    /**
+     * The height.
+     */
     float minX, minY, width, height;
 
     /**
      * Instantiates a new renderable image op.
      * 
-     * @param CRIF the cRIF
-     * @param paramBlock the param block
+     * @param CRIF
+     *            the cRIF.
+     * @param paramBlock
+     *            the param block.
      */
     public RenderableImageOp(ContextualRenderedImageFactory CRIF, ParameterBlock paramBlock) {
         this.CRIF = CRIF;
-        this.paramBlock = (ParameterBlock) paramBlock.clone();
+        this.paramBlock = (ParameterBlock)paramBlock.clone();
         Rectangle2D r = CRIF.getBounds2D(paramBlock);
-        minX = (float) r.getMinX();
-        minY = (float) r.getMinY();
-        width = (float) r.getWidth();
-        height = (float) r.getHeight();
+        minX = (float)r.getMinX();
+        minY = (float)r.getMinY();
+        width = (float)r.getWidth();
+        height = (float)r.getHeight();
     }
 
     public Object getProperty(String name) {
@@ -67,27 +77,27 @@
     /**
      * Sets the parameter block.
      * 
-     * @param paramBlock the param block
-     * 
-     * @return the parameter block
+     * @param paramBlock
+     *            the param block.
+     * @return the parameter block.
      */
     public ParameterBlock setParameterBlock(ParameterBlock paramBlock) {
         ParameterBlock oldParam = this.paramBlock;
-        this.paramBlock = (ParameterBlock) paramBlock.clone();
+        this.paramBlock = (ParameterBlock)paramBlock.clone();
         return oldParam;
     }
 
     public RenderedImage createRendering(RenderContext renderContext) {
 
         Vector<RenderableImage> sources = getSources();
-        ParameterBlock rdParam = (ParameterBlock) paramBlock.clone();
+        ParameterBlock rdParam = (ParameterBlock)paramBlock.clone();
 
         if (sources != null) {
             Vector<Object> rdSources = new Vector<Object>();
             int i = 0;
             while (i < sources.size()) {
-                RenderContext newContext = CRIF.mapRenderContext(i, renderContext, paramBlock,
-                        this);
+                RenderContext newContext = CRIF
+                        .mapRenderContext(i, renderContext, paramBlock, this);
                 RenderedImage rdim = sources.elementAt(i).createRendering(newContext);
 
                 if (rdim != null) {
@@ -103,20 +113,20 @@
     }
 
     public RenderedImage createScaledRendering(int w, int h, RenderingHints hints) {
-        if(w == 0 && h == 0) {
+        if (w == 0 && h == 0) {
             // awt.60=Width and Height mustn't be equal zero both
             throw new IllegalArgumentException(Messages.getString("awt.60")); //$NON-NLS-1$
         }
-        if(w == 0){
-            w = Math.round(h*(getWidth()/getHeight()));
+        if (w == 0) {
+            w = Math.round(h * (getWidth() / getHeight()));
         }
 
-        if(h == 0){
-            h = Math.round(w*(getHeight()/getWidth()));
+        if (h == 0) {
+            h = Math.round(w * (getHeight() / getWidth()));
         }
 
-        double sx = (double)w/getWidth();
-        double sy = (double)h/getHeight();
+        double sx = (double)w / getWidth();
+        double sy = (double)h / getHeight();
 
         AffineTransform at = AffineTransform.getScaleInstance(sx, sy);
         RenderContext context = new RenderContext(at, hints);
@@ -124,15 +134,15 @@
     }
 
     public Vector<RenderableImage> getSources() {
-        if(paramBlock.getNumSources() == 0) {
+        if (paramBlock.getNumSources() == 0) {
             return null;
         }
         Vector<RenderableImage> v = new Vector<RenderableImage>();
-        int  i = 0;
-        while(i < paramBlock.getNumSources()){
+        int i = 0;
+        while (i < paramBlock.getNumSources()) {
             Object o = paramBlock.getSource(i);
-            if(o instanceof RenderableImage){
-                v.addElement((RenderableImage) o);
+            if (o instanceof RenderableImage) {
+                v.addElement((RenderableImage)o);
             }
             i++;
         }
@@ -179,4 +189,3 @@
     }
 
 }
-
diff --git a/awt/java/awt/image/renderable/RenderableImageProducer.java b/awt/java/awt/image/renderable/RenderableImageProducer.java
index 7fda98c..e83ebc7 100644
--- a/awt/java/awt/image/renderable/RenderableImageProducer.java
+++ b/awt/java/awt/image/renderable/RenderableImageProducer.java
@@ -18,6 +18,7 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image.renderable;
 
 import java.awt.image.ColorModel;
@@ -28,25 +29,35 @@
 import java.util.Vector;
 
 /**
- * The Class RenderableImageProducer provides the implementation for 
- * the image rendering.
+ * The Class RenderableImageProducer provides the implementation for the image
+ * rendering.
+ * 
+ * @since Android 1.0
  */
 public class RenderableImageProducer implements ImageProducer, Runnable {
 
-    /** The rbl. */
+    /**
+     * The rbl.
+     */
     RenderableImage rbl;
-    
-    /** The rc. */
+
+    /**
+     * The rc.
+     */
     RenderContext rc;
-    
-    /** The consumers. */
+
+    /**
+     * The consumers.
+     */
     Vector<ImageConsumer> consumers = new Vector<ImageConsumer>();
 
     /**
      * Instantiates a new renderable image producer.
      * 
-     * @param rdblImage the rdbl image
-     * @param rc the rc
+     * @param rdblImage
+     *            the rdbl image.
+     * @param rc
+     *            the rc.
      */
     public RenderableImageProducer(RenderableImage rdblImage, RenderContext rc) {
         this.rbl = rdblImage;
@@ -56,7 +67,8 @@
     /**
      * Sets the render context.
      * 
-     * @param rc the new render context
+     * @param rc
+     *            the new render context.
      */
     public synchronized void setRenderContext(RenderContext rc) {
         this.rc = rc;
@@ -72,16 +84,17 @@
         t.start();
     }
 
-    public void requestTopDownLeftRightResend(ImageConsumer ic) {}
+    public void requestTopDownLeftRightResend(ImageConsumer ic) {
+    }
 
     public synchronized void removeConsumer(ImageConsumer ic) {
-        if(ic != null) {
+        if (ic != null) {
             consumers.removeElement(ic);
         }
     }
 
     public synchronized void addConsumer(ImageConsumer ic) {
-        if(ic != null && !consumers.contains(ic)){
+        if (ic != null && !consumers.contains(ic)) {
             consumers.addElement(ic);
         }
     }
@@ -90,19 +103,19 @@
      * Creates the rendered image in a new thread.
      */
     public void run() {
-        if(rbl == null) {
+        if (rbl == null) {
             return;
         }
 
         RenderedImage rd;
-        if(rc != null) {
+        if (rc != null) {
             rd = rbl.createRendering(rc);
         } else {
             rd = rbl.createDefaultRendering();
         }
 
         ColorModel cm = rd.getColorModel();
-        if(cm == null) {
+        if (cm == null) {
             cm = ColorModel.getRGBdefault();
         }
 
@@ -112,17 +125,15 @@
 
         for (ImageConsumer c : consumers) {
             c.setDimensions(w, h);
-            c.setHints(ImageConsumer.TOPDOWNLEFTRIGHT |
-                    ImageConsumer.COMPLETESCANLINES |
-                    ImageConsumer.SINGLEFRAME |
-                    ImageConsumer.SINGLEPASS);
+            c.setHints(ImageConsumer.TOPDOWNLEFTRIGHT | ImageConsumer.COMPLETESCANLINES
+                    | ImageConsumer.SINGLEFRAME | ImageConsumer.SINGLEPASS);
         }
 
         int scanLine[] = new int[w];
         int pixel[] = null;
 
-        for(int y = 0; y < h; y++){
-            for(int x = 0; x < w; x++){
+        for (int y = 0; y < h; y++) {
+            for (int x = 0; x < w; x++) {
                 pixel = r.getPixel(x, y, pixel);
                 scanLine[x] = cm.getDataElement(pixel, 0);
             }
@@ -138,4 +149,3 @@
     }
 
 }
-
diff --git a/awt/java/awt/image/renderable/RenderedImageFactory.java b/awt/java/awt/image/renderable/RenderedImageFactory.java
index 345d82c..881a40a 100644
--- a/awt/java/awt/image/renderable/RenderedImageFactory.java
+++ b/awt/java/awt/image/renderable/RenderedImageFactory.java
@@ -18,26 +18,29 @@
  * @author Igor V. Stolyarov
  * @version $Revision$
  */
+
 package java.awt.image.renderable;
 
 import java.awt.RenderingHints;
 import java.awt.image.RenderedImage;
 
 /**
- * A factory for creating RenderedImage objects based on parameters
- * and rendering hints.
+ * A factory for creating RenderedImage objects based on parameters and
+ * rendering hints.
+ * 
+ * @since Android 1.0
  */
 public interface RenderedImageFactory {
 
     /**
      * Creates the rendered image.
      * 
-     * @param a0 the ParameterBlock
-     * @param a1 the RenderingHints
-     * 
-     * @return the rendered image
+     * @param a0
+     *            the ParameterBlock.
+     * @param a1
+     *            the RenderingHints.
+     * @return the rendered image.
      */
     public RenderedImage create(ParameterBlock a0, RenderingHints a1);
 
 }
-
diff --git a/awt/java/awt/image/renderable/package.html b/awt/java/awt/image/renderable/package.html
new file mode 100644
index 0000000..43aaabc
--- /dev/null
+++ b/awt/java/awt/image/renderable/package.html
@@ -0,0 +1,8 @@
+<html>
+  <body>
+    <p>
+      This package contains classes to create images which are rendering-independent.
+    </p>
+    @since Android 1.0
+  </body>
+</html>
diff --git a/awt/java/awt/package.html b/awt/java/awt/package.html
new file mode 100644
index 0000000..5a6f9f0
--- /dev/null
+++ b/awt/java/awt/package.html
@@ -0,0 +1,8 @@
+<html>
+  <body>
+    <p>
+      This package contains classes and interfaces for creating (graphical) user interfaces (GUI), painting 2D graphics and creating, manipulating and drawing images. 
+    </p>
+  @since Android 1.0
+  </body>
+</html>
diff --git a/awt/java/beans/IndexedPropertyChangeEvent.java b/awt/java/beans/IndexedPropertyChangeEvent.java
deleted file mode 100644
index c9084c6..0000000
--- a/awt/java/beans/IndexedPropertyChangeEvent.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 java.beans;
-
-/**
- * A type of {@link PropertyChangeEvent} that indicates that an indexed property
- * has changed.
- * 
- * @since 1.5
- */
-public class IndexedPropertyChangeEvent extends PropertyChangeEvent {
-
-    private static final long serialVersionUID = -320227448495806870L;
-
-    private final int index;
-
-    /**
-     * Creates a new property changed event with an indication of the property
-     * index.
-     * 
-     * @param source
-     *            the changed bean.
-     * @param propertyName
-     *            the changed property, or <code>null</code> to indicate an
-     *            unspecified set of the properties have changed.
-     * @param oldValue
-     *            the previous value of the property, or <code>null</code> if
-     *            the <code>propertyName</code> is <code>null</code> or the
-     *            previous value is unknown.
-     * @param newValue
-     *            the new value of the property, or <code>null</code> if the
-     *            <code>propertyName</code> is <code>null</code> or the new
-     *            value is unknown..
-     * @param index
-     *            the index of the property.
-     */
-    public IndexedPropertyChangeEvent(Object source, String propertyName,
-            Object oldValue, Object newValue, int index) {
-        super(source, propertyName, oldValue, newValue);
-        this.index = index;
-    }
-
-    /**
-     * Answer the index of the property that was changed in this event.
-     * 
-     * @return The property element index.
-     */
-    public int getIndex() {
-        return index;
-    }
-}
diff --git a/awt/java/beans/PropertyChangeEvent.java b/awt/java/beans/PropertyChangeEvent.java
deleted file mode 100644
index 97c703a..0000000
--- a/awt/java/beans/PropertyChangeEvent.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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 java.beans;
-
-import java.util.EventObject;
-
-public class PropertyChangeEvent extends EventObject {
-
-    private static final long serialVersionUID = 7042693688939648123L;
-
-    String propertyName;
-
-    Object oldValue;
-
-    Object newValue;
-
-    Object propagationId;
-
-    public PropertyChangeEvent(Object source, String propertyName,
-            Object oldValue, Object newValue) {
-        super(source);
-
-        this.propertyName = propertyName;
-        this.oldValue = oldValue;
-        this.newValue = newValue;
-    }
-
-    public String getPropertyName() {
-        return propertyName;
-    }
-
-    public void setPropagationId(Object propagationId) {
-        this.propagationId = propagationId;
-    }
-
-    public Object getPropagationId() {
-        return propagationId;
-    }
-
-    public Object getOldValue() {
-        return oldValue;
-    }
-
-    public Object getNewValue() {
-        return newValue;
-    }
-}
diff --git a/awt/java/beans/PropertyChangeListener.java b/awt/java/beans/PropertyChangeListener.java
deleted file mode 100644
index 94422c0..0000000
--- a/awt/java/beans/PropertyChangeListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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 java.beans;
-
-import java.util.EventListener;
-
-public interface PropertyChangeListener extends EventListener {
-
-    public void propertyChange(PropertyChangeEvent event);
-}
diff --git a/awt/java/beans/PropertyChangeListenerProxy.java b/awt/java/beans/PropertyChangeListenerProxy.java
deleted file mode 100644
index f4f3aec..0000000
--- a/awt/java/beans/PropertyChangeListenerProxy.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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 java.beans;
-
-import java.util.EventListenerProxy;
-
-public class PropertyChangeListenerProxy extends EventListenerProxy implements
-        PropertyChangeListener {
-
-    String propertyName;
-
-    public PropertyChangeListenerProxy(String propertyName,
-            PropertyChangeListener listener) {
-        super(listener);
-        this.propertyName = propertyName;
-    }
-
-    public String getPropertyName() {
-        return propertyName;
-    }
-
-    public void propertyChange(PropertyChangeEvent event) {
-        PropertyChangeListener listener = (PropertyChangeListener) getListener();
-        listener.propertyChange(event);
-    }
-}
diff --git a/awt/java/beans/PropertyChangeSupport.java b/awt/java/beans/PropertyChangeSupport.java
deleted file mode 100644
index d56e63a..0000000
--- a/awt/java/beans/PropertyChangeSupport.java
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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 java.beans;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-public class PropertyChangeSupport implements Serializable {
-
-    private static final long serialVersionUID = 6401253773779951803l;
-
-    private transient Object sourceBean;
-
-    private transient List<PropertyChangeListener> allPropertiesChangeListeners =
-            new ArrayList<PropertyChangeListener>();
-
-    private transient Map<String, List<PropertyChangeListener>>
-            selectedPropertiesChangeListeners =
-            new HashMap<String, List<PropertyChangeListener>>();
-
-    // fields for serialization compatibility
-    private Hashtable<String, List<PropertyChangeListener>> children;
-
-    private Object source;
-
-    private int propertyChangeSupportSerializedDataVersion = 1;
-
-    public PropertyChangeSupport(Object sourceBean) {
-        if (sourceBean == null) {
-            throw new NullPointerException();
-        }
-        this.sourceBean = sourceBean;
-    }
-
-    public void firePropertyChange(String propertyName, Object oldValue,
-            Object newValue) {
-        PropertyChangeEvent event = createPropertyChangeEvent(propertyName,
-                oldValue, newValue);
-        doFirePropertyChange(event);
-    }
-
-    public void fireIndexedPropertyChange(String propertyName, int index,
-            Object oldValue, Object newValue) {
-
-        // nulls and equals check done in doFire...
-        doFirePropertyChange(new IndexedPropertyChangeEvent(sourceBean,
-                propertyName, oldValue, newValue, index));
-    }
-
-    public synchronized void removePropertyChangeListener(String propertyName,
-            PropertyChangeListener listener) {
-        if ((propertyName != null) && (listener != null)) {
-            List<PropertyChangeListener> listeners =
-                    selectedPropertiesChangeListeners.get(propertyName);
-
-            if (listeners != null) {
-                listeners.remove(listener);
-            }
-        }
-    }
-
-    public synchronized void addPropertyChangeListener(String propertyName,
-            PropertyChangeListener listener) {
-        if ((listener != null) && (propertyName != null)) {
-            List<PropertyChangeListener> listeners =
-                    selectedPropertiesChangeListeners.get(propertyName);
-
-            if (listeners == null) {
-                listeners = new ArrayList<PropertyChangeListener>();
-                selectedPropertiesChangeListeners.put(propertyName, listeners);
-            }
-
-            // RI compatibility
-            if (listener instanceof PropertyChangeListenerProxy) {
-                PropertyChangeListenerProxy proxy =
-                        (PropertyChangeListenerProxy) listener;
-
-                listeners.add(new PropertyChangeListenerProxy(
-                        proxy.getPropertyName(),
-                        (PropertyChangeListener) proxy.getListener()));
-            } else {
-                listeners.add(listener);
-            }
-        }
-    }
-
-    public synchronized PropertyChangeListener[] getPropertyChangeListeners(
-            String propertyName) {
-        List<PropertyChangeListener> listeners = null;
-
-        if (propertyName != null) {
-            listeners = selectedPropertiesChangeListeners.get(propertyName);
-        }
-
-        return (listeners == null) ? new PropertyChangeListener[] {}
-                : listeners.toArray(
-                        new PropertyChangeListener[listeners.size()]);
-    }
-
-    public void firePropertyChange(String propertyName, boolean oldValue,
-            boolean newValue) {
-        PropertyChangeEvent event = createPropertyChangeEvent(propertyName,
-                oldValue, newValue);
-        doFirePropertyChange(event);
-    }
-
-    public void fireIndexedPropertyChange(String propertyName, int index,
-            boolean oldValue, boolean newValue) {
-
-        if (oldValue != newValue) {
-            fireIndexedPropertyChange(propertyName, index, Boolean
-                    .valueOf(oldValue), Boolean.valueOf(newValue));
-        }
-    }
-
-    public void firePropertyChange(String propertyName, int oldValue,
-            int newValue) {
-        PropertyChangeEvent event = createPropertyChangeEvent(propertyName,
-                oldValue, newValue);
-        doFirePropertyChange(event);
-    }
-
-    public void fireIndexedPropertyChange(String propertyName, int index,
-            int oldValue, int newValue) {
-
-        if (oldValue != newValue) {
-            fireIndexedPropertyChange(propertyName, index,
-                    new Integer(oldValue), new Integer(newValue));
-        }
-    }
-
-    public synchronized boolean hasListeners(String propertyName) {
-        boolean result = allPropertiesChangeListeners.size() > 0;
-        if (!result && (propertyName != null)) {
-            List<PropertyChangeListener> listeners =
-                    selectedPropertiesChangeListeners.get(propertyName);
-            if (listeners != null) {
-                result = listeners.size() > 0;
-            }
-        }
-        return result;
-    }
-
-    public synchronized void removePropertyChangeListener(
-            PropertyChangeListener listener) {
-        if (listener != null) {
-            if (listener instanceof PropertyChangeListenerProxy) {
-                String name = ((PropertyChangeListenerProxy) listener)
-                        .getPropertyName();
-                PropertyChangeListener lst = (PropertyChangeListener)
-                        ((PropertyChangeListenerProxy) listener).getListener();
-
-                removePropertyChangeListener(name, lst);
-            } else {
-                allPropertiesChangeListeners.remove(listener);
-            }
-        }
-    }
-
-    public synchronized void addPropertyChangeListener(
-            PropertyChangeListener listener) {
-        if (listener != null) {
-            if (listener instanceof PropertyChangeListenerProxy) {
-                String name = ((PropertyChangeListenerProxy) listener)
-                        .getPropertyName();
-                PropertyChangeListener lst = (PropertyChangeListener)
-                        ((PropertyChangeListenerProxy) listener).getListener();
-                addPropertyChangeListener(name, lst);
-            } else {
-                allPropertiesChangeListeners.add(listener);
-            }
-        }
-    }
-
-    public synchronized PropertyChangeListener[] getPropertyChangeListeners() {
-        ArrayList<PropertyChangeListener> result =
-                new ArrayList<PropertyChangeListener>(
-                        allPropertiesChangeListeners);
-
-        for (String propertyName : selectedPropertiesChangeListeners.keySet()) {
-            List<PropertyChangeListener> selectedListeners =
-                    selectedPropertiesChangeListeners.get(propertyName);
-
-            if (selectedListeners != null) {
-
-                for (PropertyChangeListener listener : selectedListeners) {
-                    result.add(new PropertyChangeListenerProxy(propertyName,
-                            listener));
-                }
-            }
-        }
-
-        return result.toArray(new PropertyChangeListener[result.size()]);
-    }
-
-    private void writeObject(ObjectOutputStream oos) throws IOException {
-        List<PropertyChangeListener> allSerializedPropertiesChangeListeners =
-                new ArrayList<PropertyChangeListener>();
-
-        for (PropertyChangeListener pcl : allPropertiesChangeListeners) {
-            if (pcl instanceof Serializable) {
-                allSerializedPropertiesChangeListeners.add(pcl);
-            }
-        }
-
-        Map<String, List<PropertyChangeListener>>
-                selectedSerializedPropertiesChangeListeners =
-                        new HashMap<String, List<PropertyChangeListener>>();
-
-        for (String propertyName : selectedPropertiesChangeListeners.keySet()) {
-            List<PropertyChangeListener> keyValues =
-                    selectedPropertiesChangeListeners.get(propertyName);
-
-            if (keyValues != null) {
-                List<PropertyChangeListener> serializedPropertiesChangeListeners
-                        = new ArrayList<PropertyChangeListener>();
-
-                for (PropertyChangeListener pcl : keyValues) {
-                    if (pcl instanceof Serializable) {
-                        serializedPropertiesChangeListeners.add(pcl);
-                    }
-                }
-
-                if (!serializedPropertiesChangeListeners.isEmpty()) {
-                    selectedSerializedPropertiesChangeListeners.put(
-                            propertyName, serializedPropertiesChangeListeners);
-                }
-            }
-        }
-
-        children = new Hashtable<String, List<PropertyChangeListener>>(
-                selectedSerializedPropertiesChangeListeners);
-        children.put("", allSerializedPropertiesChangeListeners); //$NON-NLS-1$
-        oos.writeObject(children);
-
-        Object source = null;
-        if (sourceBean instanceof Serializable) {
-            source = sourceBean;
-        }
-        oos.writeObject(source);
-
-        oos.writeInt(propertyChangeSupportSerializedDataVersion);
-    }
-
-    @SuppressWarnings("unchecked")
-    private void readObject(ObjectInputStream ois) throws IOException,
-            ClassNotFoundException {
-        children = (Hashtable<String, List<PropertyChangeListener>>) ois
-                .readObject();
-
-        selectedPropertiesChangeListeners = new HashMap<String, List<PropertyChangeListener>>(
-                children);
-        allPropertiesChangeListeners = selectedPropertiesChangeListeners
-                .remove(""); //$NON-NLS-1$
-        if (allPropertiesChangeListeners == null) {
-            allPropertiesChangeListeners = new ArrayList<PropertyChangeListener>();
-        }
-
-        sourceBean = ois.readObject();
-        propertyChangeSupportSerializedDataVersion = ois.readInt();
-    }
-
-    public void firePropertyChange(PropertyChangeEvent event) {
-        doFirePropertyChange(event);
-    }
-
-    private PropertyChangeEvent createPropertyChangeEvent(String propertyName,
-            Object oldValue, Object newValue) {
-        return new PropertyChangeEvent(sourceBean, propertyName, oldValue,
-                newValue);
-    }
-
-    private PropertyChangeEvent createPropertyChangeEvent(String propertyName,
-            boolean oldValue, boolean newValue) {
-        return new PropertyChangeEvent(sourceBean, propertyName, oldValue,
-                newValue);
-    }
-
-    private PropertyChangeEvent createPropertyChangeEvent(String propertyName,
-            int oldValue, int newValue) {
-        return new PropertyChangeEvent(sourceBean, propertyName, oldValue,
-                newValue);
-    }
-
-    private void doFirePropertyChange(PropertyChangeEvent event) {
-        String propertyName = event.getPropertyName();
-        Object oldValue = event.getOldValue();
-        Object newValue = event.getNewValue();
-
-        if ((newValue != null) && (oldValue != null)
-                && newValue.equals(oldValue)) {
-            return;
-        }
-
-        /*
-         * Copy the listeners collections so they can be modified while we fire
-         * events.
-         */
-
-        // Listeners to all property change events
-        PropertyChangeListener[] listensToAll;
-        // Listens to a given property change
-        PropertyChangeListener[] listensToOne = null;
-        synchronized (this) {
-            listensToAll = allPropertiesChangeListeners
-                    .toArray(new PropertyChangeListener[allPropertiesChangeListeners
-                            .size()]);
-
-            List<PropertyChangeListener> listeners = selectedPropertiesChangeListeners
-                    .get(propertyName);
-            if (listeners != null) {
-                listensToOne = listeners
-                        .toArray(new PropertyChangeListener[listeners.size()]);
-            }
-        }
-
-        // Fire the listeners
-        for (PropertyChangeListener listener : listensToAll) {
-            listener.propertyChange(event);
-        }
-        if (listensToOne != null) {
-            for (PropertyChangeListener listener : listensToOne) {
-                listener.propertyChange(event);
-            }
-        }
-    }
-
-}
diff --git a/awt/javax/imageio/IIOException.java b/awt/javax/imageio/IIOException.java
index fbfeb42..c77716c 100644
--- a/awt/javax/imageio/IIOException.java
+++ b/awt/javax/imageio/IIOException.java
@@ -18,22 +18,28 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio;
 
 import java.io.IOException;
 
 /**
  * The IIOException class indicates errors in reading/writing operations.
+ * 
+ * @since Android 1.0
  */
 public class IIOException extends IOException {
 
-    /** The Constant serialVersionUID. */
+    /**
+     * The Constant serialVersionUID.
+     */
     private static final long serialVersionUID = -3216210718638985251L;
 
     /**
      * Instantiates a new IIOException.
      * 
-     * @param message the detailed message.
+     * @param message
+     *            the detailed message.
      */
     public IIOException(String message) {
         super(message);
@@ -42,8 +48,10 @@
     /**
      * Instantiates a new IIOException.
      * 
-     * @param message the detailed message.
-     * @param cause the cause of this exception.
+     * @param message
+     *            the detailed message.
+     * @param cause
+     *            the cause of this exception.
      */
     public IIOException(String message, Throwable cause) {
         super(message);
diff --git a/awt/javax/imageio/IIOImage.java b/awt/javax/imageio/IIOImage.java
index e17a9fc..e9e5130 100644
--- a/awt/javax/imageio/IIOImage.java
+++ b/awt/javax/imageio/IIOImage.java
@@ -18,6 +18,7 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio;
 
 import javax.imageio.metadata.IIOMetadata;
@@ -27,33 +28,47 @@
 import java.util.List;
 
 /**
- * The IIOImage class combines the image, image's thumbnail and image's metadata.
- * The image can be presented as RenderedImage or Raster object.
+ * The IIOImage class combines the image, image's thumbnail and image's
+ * metadata. The image can be presented as RenderedImage or Raster object.
+ * 
+ * @since Android 1.0
  */
 public class IIOImage {
 
-    /** The image of this IIOImage. */
+    /**
+     * The image of this IIOImage.
+     */
     protected RenderedImage image;
-    
-    /** The raster of this IIOImage. */
+
+    /**
+     * The raster of this IIOImage.
+     */
     protected Raster raster;
-    
-    /** The list with thumbnails associated with the image. */
+
+    /**
+     * The list with thumbnails associated with the image.
+     */
     protected List<? extends BufferedImage> thumbnails;
-    
-    /** The metadata associated with the image. */
+
+    /**
+     * The metadata associated with the image.
+     */
     protected IIOMetadata metadata;
 
     /**
-     * Instantiates a new IIOImage with the specified RenderedImage, 
-     * list of thumbnails and metadata.
+     * Instantiates a new IIOImage with the specified RenderedImage, list of
+     * thumbnails and metadata.
      * 
-     * @param image the image specified by RenderedImage.
-     * @param thumbnails the list of BufferedImage objects which 
-     * represent the thumbnails of the image.
-     * @param metadata the metadata of the image.
+     * @param image
+     *            the image specified by RenderedImage.
+     * @param thumbnails
+     *            the list of BufferedImage objects which represent the
+     *            thumbnails of the image.
+     * @param metadata
+     *            the metadata of the image.
      */
-    public IIOImage(RenderedImage image, List<? extends BufferedImage> thumbnails, IIOMetadata metadata) {
+    public IIOImage(RenderedImage image, List<? extends BufferedImage> thumbnails,
+            IIOMetadata metadata) {
         if (image == null) {
             throw new IllegalArgumentException("image should not be NULL");
         }
@@ -64,13 +79,16 @@
     }
 
     /**
-     * Instantiates a new IIOImage with the specified Raster, list of
-     * thumbnails and metadata.
+     * Instantiates a new IIOImage with the specified Raster, list of thumbnails
+     * and metadata.
      * 
-     * @param raster the Raster.
-     * @param thumbnails the list of BufferedImage objects which 
-     * represent the thumbnails of Raster data.
-     * @param metadata the metadata.
+     * @param raster
+     *            the Raster.
+     * @param thumbnails
+     *            the list of BufferedImage objects which represent the
+     *            thumbnails of Raster data.
+     * @param metadata
+     *            the metadata.
      */
     public IIOImage(Raster raster, List<? extends BufferedImage> thumbnails, IIOMetadata metadata) {
         if (raster == null) {
@@ -83,11 +101,11 @@
     }
 
     /**
-     * Gets the RenderedImage object or returns null if this IIOImage 
-     * object is associated with a Raster.
+     * Gets the RenderedImage object or returns null if this IIOImage object is
+     * associated with a Raster.
      * 
-     * @return the RenderedImage object or null if this IIOImage 
-     * object is associated with a Raster.
+     * @return the RenderedImage object or null if this IIOImage object is
+     *         associated with a Raster.
      */
     public RenderedImage getRenderedImage() {
         return image;
@@ -96,7 +114,8 @@
     /**
      * Sets the RenderedImage to this IIOImage object.
      * 
-     * @param image the RenderedImage to be set to this IIOImage.
+     * @param image
+     *            the RenderedImage to be set to this IIOImage.
      */
     public void setRenderedImage(RenderedImage image) {
         if (image == null) {
@@ -107,11 +126,11 @@
     }
 
     /**
-     * Returns true if the IIOImage object associated with a Raster, or 
-     * false if it's associated with a RenderedImage.
+     * Returns true if the IIOImage object associated with a Raster, or false if
+     * it's associated with a RenderedImage.
      * 
-     * @return true if the IIOImage object associated with a Raster, or 
-     * false if it's associated with a RenderedImage.
+     * @return true, if the IIOImage object associated with a Raster, or false
+     *         if it's associated with a RenderedImage.
      */
     public boolean hasRaster() {
         return raster != null;
@@ -121,8 +140,8 @@
      * Gets the Raster object or returns null if this IIOImage object is
      * associated with a RenderedImage.
      * 
-     * @return the Raster or null if this IIOImage object
-     * is associated with a RenderedImage.
+     * @return the Raster or null if this IIOImage object is associated with a
+     *         RenderedImage.
      */
     public Raster getRaster() {
         return raster;
@@ -131,7 +150,8 @@
     /**
      * Sets the Raster to the IIOImage.
      * 
-     * @param raster the new Raster to the IIOImage.
+     * @param raster
+     *            the new Raster to the IIOImage.
      */
     public void setRaster(Raster raster) {
         if (raster == null) {
@@ -153,8 +173,8 @@
     /**
      * Gets the thumbnail with the specified index in the list.
      * 
-     * @param index the index of the thumbnail in the list.
-     * 
+     * @param index
+     *            the index of the thumbnail in the list.
      * @return the thumbnail with the specified index in the list.
      */
     public BufferedImage getThumbnail(int index) {
@@ -176,8 +196,8 @@
     /**
      * Sets the list of thumbnails images to this IIOImage object.
      * 
-     * @param thumbnails the list of BufferedImage which represent
-     * thumbnails.
+     * @param thumbnails
+     *            the list of BufferedImage which represent thumbnails.
      */
     public void setThumbnails(List<? extends BufferedImage> thumbnails) {
         this.thumbnails = thumbnails;
@@ -195,7 +215,8 @@
     /**
      * Sets the metadata to this IIOImage object.
      * 
-     * @param metadata the IIOMetadata, or null.
+     * @param metadata
+     *            the IIOMetadata, or null.
      */
     public void setMetadata(IIOMetadata metadata) {
         this.metadata = metadata;
diff --git a/awt/javax/imageio/IIOParam.java b/awt/javax/imageio/IIOParam.java
index d998b6e..2ccc945 100644
--- a/awt/javax/imageio/IIOParam.java
+++ b/awt/javax/imageio/IIOParam.java
@@ -18,56 +18,80 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio;
 
 import java.awt.*;
 
 /**
- * The IIOParam abstract class is superclass for     
- * ImageReadParam and ImageWriteParam classes and provides 
- * methods and variables which they share.
+ * The IIOParam abstract class is superclass for ImageReadParam and
+ * ImageWriteParam classes and provides methods and variables which they share.
+ * 
+ * @since Android 1.0
  */
 public abstract class IIOParam {
-    
-    /** The source region. */
+
+    /**
+     * The source region.
+     */
     protected Rectangle sourceRegion;
-    
-    /** The source x subsampling. */
+
+    /**
+     * The source x subsampling.
+     */
     protected int sourceXSubsampling = 1;
-    
-    /** The source y subsampling. */
+
+    /**
+     * The source y subsampling.
+     */
     protected int sourceYSubsampling = 1;
-    
-    /** The subsampling x offset. */
+
+    /**
+     * The subsampling x offset.
+     */
     protected int subsamplingXOffset;
-    
-    /** The subsampling y offset. */
+
+    /**
+     * The subsampling y offset.
+     */
     protected int subsamplingYOffset;
-    
-    /** The source bands. */
+
+    /**
+     * The source bands.
+     */
     protected int[] sourceBands;
-    
-    /** The destination type. */
+
+    /**
+     * The destination type.
+     */
     protected ImageTypeSpecifier destinationType;
-    
-    /** The destination offset. */
+
+    /**
+     * The destination offset.
+     */
     protected Point destinationOffset = new Point(0, 0);
-    
-    /** The default controller. */
+
+    /**
+     * The default controller.
+     */
     protected IIOParamController defaultController;
-    
-    /** The controller. */
+
+    /**
+     * The controller.
+     */
     protected IIOParamController controller;
 
     /**
      * Instantiates a new IIOParam.
      */
-    protected IIOParam() {}
+    protected IIOParam() {
+    }
 
     /**
      * Sets the source region as a Rectangle object.
      * 
-     * @param sourceRegion the Rectangle which specifies the source region.
+     * @param sourceRegion
+     *            the Rectangle which specifies the source region.
      */
     public void setSourceRegion(Rectangle sourceRegion) {
         if (sourceRegion != null) {
@@ -91,8 +115,8 @@
             if (sourceRegion.height <= subsamplingYOffset) {
                 throw new IllegalArgumentException("height <= subsamplingXOffset");
             }
-            //-- clone it to avoid unexpected modifications
-            this.sourceRegion = (Rectangle) sourceRegion.clone();
+            // -- clone it to avoid unexpected modifications
+            this.sourceRegion = (Rectangle)sourceRegion.clone();
         } else {
             this.sourceRegion = null;
         }
@@ -107,24 +131,26 @@
         if (sourceRegion == null) {
             return null;
         }
-        //-- clone it to avoid unexpected modifications
-        return (Rectangle) sourceRegion.clone();
+        // -- clone it to avoid unexpected modifications
+        return (Rectangle)sourceRegion.clone();
     }
 
     /**
-     * Sets the source subsampling. The sourceXSubsampling and 
-     * sourceYSubsampling parameters specify the number of rows 
-     * and columns to advance after every source pixel.
+     * Sets the source subsampling. The sourceXSubsampling and
+     * sourceYSubsampling parameters specify the number of rows and columns to
+     * advance after every source pixel.
      * 
-     * @param sourceXSubsampling the source X subsampling.
-     * @param sourceYSubsampling the source Y subsampling.
-     * @param subsamplingXOffset the subsampling X offset.
-     * @param subsamplingYOffset the subsampling Y offset.
+     * @param sourceXSubsampling
+     *            the source X subsampling.
+     * @param sourceYSubsampling
+     *            the source Y subsampling.
+     * @param subsamplingXOffset
+     *            the subsampling X offset.
+     * @param subsamplingYOffset
+     *            the subsampling Y offset.
      */
-    public void setSourceSubsampling(int sourceXSubsampling,
-                                 int sourceYSubsampling,
-                                 int subsamplingXOffset,
-                                 int subsamplingYOffset) {
+    public void setSourceSubsampling(int sourceXSubsampling, int sourceYSubsampling,
+            int subsamplingXOffset, int subsamplingYOffset) {
 
         if (sourceXSubsampling <= 0) {
             throw new IllegalArgumentException("sourceXSubsampling <= 0");
@@ -141,10 +167,10 @@
             throw new IllegalArgumentException("subsamplingYOffset is wrong");
         }
 
-        //-- does region contain pixels
+        // -- does region contain pixels
         if (sourceRegion != null) {
-            if (sourceRegion.width <= subsamplingXOffset ||
-                    sourceRegion.height <= subsamplingYOffset) {
+            if (sourceRegion.width <= subsamplingXOffset
+                    || sourceRegion.height <= subsamplingYOffset) {
                 throw new IllegalArgumentException("there are no pixels in region");
             }
         }
@@ -156,8 +182,8 @@
     }
 
     /**
-     * Gets the source X subsampling - the number of source 
-     * columns to advance for each pixel.
+     * Gets the source X subsampling - the number of source columns to advance
+     * for each pixel.
      * 
      * @return the source X subsampling.
      */
@@ -166,8 +192,8 @@
     }
 
     /**
-     * Gets the source Y subsampling - the number of source 
-     * rows to advance for each pixel.
+     * Gets the source Y subsampling - the number of source rows to advance for
+     * each pixel.
      * 
      * @return the source Y subsampling.
      */
@@ -196,7 +222,8 @@
     /**
      * Sets the indices of the source bands.
      * 
-     * @param sourceBands the indices of the source bands.
+     * @param sourceBands
+     *            the indices of the source bands.
      */
     public void setSourceBands(int[] sourceBands) {
         // TODO implement
@@ -216,7 +243,8 @@
     /**
      * Sets the specified ImageTypeSpecifier for the destination image.
      * 
-     * @param destinationType the ImageTypeSpecifier.
+     * @param destinationType
+     *            the ImageTypeSpecifier.
      */
     public void setDestinationType(ImageTypeSpecifier destinationType) {
         // TODO implement
@@ -225,7 +253,7 @@
 
     /**
      * Gets the type of the destination image as an ImageTypeSpecifier. .
-     *  
+     * 
      * @return the ImageTypeSpecifier.
      */
     public ImageTypeSpecifier getDestinationType() {
@@ -234,18 +262,19 @@
     }
 
     /**
-     * Sets the offset in the destination image where 
-     * the decoded pixels are placed as a result of reading, 
-     * or specified an area to be written while writing operation.
+     * Sets the offset in the destination image where the decoded pixels are
+     * placed as a result of reading, or specified an area to be written while
+     * writing operation.
      * 
-     * @param destinationOffset the destination offset.
+     * @param destinationOffset
+     *            the destination offset.
      */
     public void setDestinationOffset(Point destinationOffset) {
         if (destinationOffset == null) {
             throw new IllegalArgumentException("destinationOffset == null!");
         }
-        
-        this.destinationOffset = (Point) destinationOffset.clone();
+
+        this.destinationOffset = (Point)destinationOffset.clone();
     }
 
     /**
@@ -254,14 +283,15 @@
      * @return the offset in the destination image.
      */
     public Point getDestinationOffset() {
-        return (Point) destinationOffset.clone();        
+        return (Point)destinationOffset.clone();
     }
 
     /**
-     * Sets the IIOParamController to this IIOParam object for
-     * providing settings to this IIOParam.
+     * Sets the IIOParamController to this IIOParam object for providing
+     * settings to this IIOParam.
      * 
-     * @param controller the new IIOParamController.
+     * @param controller
+     *            the new IIOParamController.
      */
     public void setController(IIOParamController controller) {
         // TODO implement
@@ -269,11 +299,9 @@
     }
 
     /**
-     * Gets the current IIOParamController controller 
-     * for this IIOParam.
+     * Gets the current IIOParamController controller for this IIOParam.
      * 
-     * @return the current IIOParamController controller 
-     * for this IIOParam.
+     * @return the current IIOParamController controller for this IIOParam.
      */
     public IIOParamController getController() {
         // TODO implement
@@ -281,11 +309,10 @@
     }
 
     /**
-     * Gets the default IIOParamController controller 
-     * for this IIOParam.
+     * Gets the default IIOParamController controller for this IIOParam.
      * 
-     * @return the default IIOParamController controller 
-     * for this IIOParam, or null.
+     * @return the default IIOParamController controller for this IIOParam, or
+     *         null.
      */
     public IIOParamController getDefaultController() {
         // TODO implement
@@ -293,11 +320,10 @@
     }
 
     /**
-     * Returns true if IIOParamController is installed for 
-     * this IIOParam. 
+     * Returns true if IIOParamController is installed for this IIOParam.
      * 
-     * @return true if IIOParamController is installed for 
-     * this IIOParam, false otherwise.
+     * @return true, if IIOParamController is installed for this IIOParam, false
+     *         otherwise.
      */
     public boolean hasController() {
         // TODO implement
diff --git a/awt/javax/imageio/IIOParamController.java b/awt/javax/imageio/IIOParamController.java
index 31522c1..338cb25 100644
--- a/awt/javax/imageio/IIOParamController.java
+++ b/awt/javax/imageio/IIOParamController.java
@@ -18,6 +18,7 @@
  * @author Sergey I. Salishev
  * @version $Revision: 1.2 $
  */
+
 package javax.imageio;
 
 /* 
@@ -26,18 +27,19 @@
  */
 
 /**
- * The IIOParamController specifies an activate method that invokes the 
+ * The IIOParamController specifies an activate method that invokes the
  * controller.
+ * 
+ * @since Android 1.0
  */
 public interface IIOParamController {
 
     /**
-     * Activates the controller. 
+     * Activates the controller.
      * 
-     * @param param the IIOParam.
-     * 
-     * @return true if the IIOParam has been modified, false otherwise.
+     * @param param
+     *            the IIOParam.
+     * @return true, if the IIOParam has been modified, false otherwise.
      */
     boolean activate(IIOParam param);
 }
-
diff --git a/awt/javax/imageio/ImageIO.java b/awt/javax/imageio/ImageIO.java
index d4cd1dd..e0d7ec9 100644
--- a/awt/javax/imageio/ImageIO.java
+++ b/awt/javax/imageio/ImageIO.java
@@ -18,6 +18,7 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio;
 
 import javax.imageio.stream.ImageInputStream;
@@ -34,44 +35,47 @@
 import java.net.URL;
 
 /**
- * The ImageIO class provides static methods to perfom 
- * reading and writing operations using registered
- * ImageReader and ImageWriter objects.
+ * The ImageIO class provides static methods to perform reading and writing
+ * operations using registered ImageReader and ImageWriter objects.
+ * 
+ * @since Android 1.0
  */
 public final class ImageIO {
 
-    /** The Constant registry. */
+    /**
+     * The constant registry.
+     */
     private static final IIORegistry registry = IIORegistry.getDefaultInstance();
 
     /**
-     * Instantiates a new image io.
+     * Instantiates a new ImageIO.
      */
-    private ImageIO() {}
-    
+    private ImageIO() {
+    }
 
     /**
-     * Scans for plug-ins in the class path, 
-     * loads spi classes, and registers them with the IIORegistry.
+     * Scans for plug-ins in the class path, loads spi classes, and registers
+     * them with the IIORegistry.
      */
     public static void scanForPlugins() {
         throw new UnsupportedOperationException("Not supported yet");
     }
 
     /**
-     * Sets flag which indicates whether a cache file is used when 
-     * creating ImageInputStreams and ImageOutputStreams or not.
+     * Sets flag which indicates whether a cache file is used when creating
+     * ImageInputStreams and ImageOutputStreams or not.
      * 
-     * @param useCache the use cache flag.
+     * @param useCache
+     *            the use cache flag.
      */
     public static void setUseCache(boolean useCache) {
         throw new UnsupportedOperationException("Not supported yet");
     }
 
     /**
-     * Gets the flag which indicates whether a cache file is used when 
-     * creating ImageInputStreams and ImageOutputStreams or not.
-     * This method returns the current value which is set by setUseCache
-     * method.
+     * Gets the flag which indicates whether a cache file is used when creating
+     * ImageInputStreams and ImageOutputStreams or not. This method returns the
+     * current value which is set by setUseCache method.
      * 
      * @return the use cache flag.
      */
@@ -83,44 +87,44 @@
     /**
      * Sets the cache directory.
      * 
-     * @param cacheDirectory the File which specifies a cache directory.
+     * @param cacheDirectory
+     *            the File which specifies a cache directory.
      */
     public static void setCacheDirectory(File cacheDirectory) {
         throw new UnsupportedOperationException("Not supported yet");
     }
 
     /**
-     * Gets the directory where cache files are created, returned
-     * the file which is set by setCacheDirectory method, or null.
+     * Gets the directory where cache files are created, returned the file which
+     * is set by setCacheDirectory method, or null.
      * 
-     * @return the File object which is set by setCacheDirectory method, 
-     * or null.
+     * @return the File object which is set by setCacheDirectory method, or
+     *         null.
      */
     public static File getCacheDirectory() {
         // TODO implement
-        //-- null indicates system-dep default temporary directory
+        // -- null indicates system-dep default temporary directory
         return null;
     }
 
     /**
-     * Creates an ImageInputStream from the specified Object.
-     * The specified Object should obtain the input source
-     * such as File, or InputStream.   
+     * Creates an ImageInputStream from the specified Object. The specified
+     * Object should obtain the input source such as File, or InputStream.
      * 
-     * @param input the input Object such as File, or InputStream.   
-     * 
+     * @param input
+     *            the input Object such as File, or InputStream.
      * @return the ImageInputStream object, or null.
-     * 
-     * @throws IOException signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
-    public static ImageInputStream createImageInputStream(Object input)
-            throws IOException {
+    public static ImageInputStream createImageInputStream(Object input) throws IOException {
 
         if (input == null) {
             throw new IllegalArgumentException("input source cannot be NULL");
         }
 
-        Iterator<ImageInputStreamSpi> it = registry.getServiceProviders(ImageInputStreamSpi.class, true);
+        Iterator<ImageInputStreamSpi> it = registry.getServiceProviders(ImageInputStreamSpi.class,
+                true);
 
         while (it.hasNext()) {
             ImageInputStreamSpi spi = it.next();
@@ -132,23 +136,22 @@
     }
 
     /**
-     * Creates an ImageOutputStream using the specified Object.
-     * The specified Object should obtain the output source
-     * such as File, or OutputStream.   
+     * Creates an ImageOutputStream using the specified Object. The specified
+     * Object should obtain the output source such as File, or OutputStream.
      * 
-     * @param output the output Object such as File, or OutputStream.   
-     * 
+     * @param output
+     *            the output Object such as File, or OutputStream.
      * @return the ImageOutputStream object, or null.
-     * 
-     * @throws IOException signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
-    public static ImageOutputStream createImageOutputStream(Object output)
-            throws IOException {
+    public static ImageOutputStream createImageOutputStream(Object output) throws IOException {
         if (output == null) {
             throw new IllegalArgumentException("output destination cannot be NULL");
         }
 
-        Iterator<ImageOutputStreamSpi> it = registry.getServiceProviders(ImageOutputStreamSpi.class, true);
+        Iterator<ImageOutputStreamSpi> it = registry.getServiceProviders(
+                ImageOutputStreamSpi.class, true);
 
         while (it.hasNext()) {
             ImageOutputStreamSpi spi = it.next();
@@ -161,8 +164,8 @@
     }
 
     /**
-     * Gets the array of format names as String which can be 
-     * decoded by registered ImageReader objects.
+     * Gets the array of format names as String which can be decoded by
+     * registered ImageReader objects.
      * 
      * @return the array of format names.
      */
@@ -171,8 +174,8 @@
     }
 
     /**
-     * Gets the array of MIME types as String which can be 
-     * decoded by registered ImageReader objects.
+     * Gets the array of MIME types as String which can be decoded by registered
+     * ImageReader objects.
      * 
      * @return the array of MIME types.
      */
@@ -181,13 +184,13 @@
     }
 
     /**
-     * Gets the Iterator of registered ImageReader which are able to 
-     * decode an imput data specified by input Object.
+     * Gets the Iterator of registered ImageReader which are able to decode an
+     * input data specified by input Object.
      * 
-     * @param input the input Object with encoded data such as 
-     * ImageInputStream object.
-     * 
-     * @return the Iterator of registered ImageReader. 
+     * @param input
+     *            the input Object with encoded data such as ImageInputStream
+     *            object.
+     * @return the Iterator of registered ImageReader.
      */
     public static Iterator<ImageReader> getImageReaders(Object input) {
         if (input == null) {
@@ -201,11 +204,11 @@
     }
 
     /**
-     * Gets the Iterator of registered ImageReader which are able to 
-     * decode the specified format.
+     * Gets the Iterator of registered ImageReader which are able to decode the
+     * specified format.
      * 
-     * @param formatName the format name such as "jpeg", or "gif".
-     * 
+     * @param formatName
+     *            the format name such as "jpeg", or "gif".
      * @return the Iterator of registered ImageReader.
      */
     public static Iterator<ImageReader> getImageReadersByFormatName(String formatName) {
@@ -220,11 +223,11 @@
     }
 
     /**
-     * Gets the Iterator which lists the registered ImageReader objects that
-     * are able to decode files with the specified suffix.
+     * Gets the Iterator which lists the registered ImageReader objects that are
+     * able to decode files with the specified suffix.
      * 
-     * @param fileSuffix the file suffix such as "jpg".
-     * 
+     * @param fileSuffix
+     *            the file suffix such as "jpg".
      * @return the Iterator of registered ImageReaders.
      */
     public static Iterator<ImageReader> getImageReadersBySuffix(String fileSuffix) {
@@ -238,11 +241,11 @@
     }
 
     /**
-     * Gets the Iterator of registered ImageReader objects that
-     * are able to decode files with the specified MIME type.
+     * Gets the Iterator of registered ImageReader objects that are able to
+     * decode files with the specified MIME type.
      * 
-     * @param MIMEType the MIME type such as "image/jpeg".
-     * 
+     * @param MIMEType
+     *            the MIME type such as "image/jpeg".
      * @return the Iterator of registered ImageReaders.
      */
     public static Iterator<ImageReader> getImageReadersByMIMEType(String MIMEType) {
@@ -250,8 +253,8 @@
     }
 
     /**
-     * Gets an array of Strings giving the names of the formats supported 
-     * by registered ImageWriter objects.
+     * Gets an array of Strings giving the names of the formats supported by
+     * registered ImageWriter objects.
      * 
      * @return the array of format names.
      */
@@ -260,7 +263,7 @@
     }
 
     /**
-     * Gets an array of Strings giving the MIME types of the formats supported 
+     * Gets an array of Strings giving the MIME types of the formats supported
      * by registered ImageWriter objects.
      * 
      * @return the array of MIME types.
@@ -270,11 +273,11 @@
     }
 
     /**
-     * Gets the Iterator which lists the registered ImageReader objects that
-     * are able to encode the specified image format.
+     * Gets the Iterator which lists the registered ImageReader objects that are
+     * able to encode the specified image format.
      * 
-     * @param formatName the image format name such as "jpeg".
-     * 
+     * @param formatName
+     *            the image format name such as "jpeg".
      * @return the Iterator of registered ImageWriter.
      */
     public static Iterator<ImageWriter> getImageWritersByFormatName(String formatName) {
@@ -289,11 +292,11 @@
     }
 
     /**
-     * Gets the Iterator which lists the registered ImageReader objects that
-     * are able to encode the specified suffix.
+     * Gets the Iterator which lists the registered ImageReader objects that are
+     * able to encode the specified suffix.
      * 
-     * @param fileSuffix the file suffix such as "jpg".
-     * 
+     * @param fileSuffix
+     *            the file suffix such as "jpg".
      * @return the Iterator of registered ImageWriter.
      */
     public static Iterator<ImageWriter> getImageWritersBySuffix(String fileSuffix) {
@@ -306,11 +309,11 @@
     }
 
     /**
-     * Gets the Iterator which lists the registered ImageReader objects that
-     * are able to encode the specified MIME type.
+     * Gets the Iterator which lists the registered ImageReader objects that are
+     * able to encode the specified MIME type.
      * 
-     * @param MIMEType the MIME type such as "image/jpeg".
-     * 
+     * @param MIMEType
+     *            the MIME type such as "image/jpeg".
      * @return the Iterator of registered ImageWriter.
      */
     public static Iterator<ImageWriter> getImageWritersByMIMEType(String MIMEType) {
@@ -318,12 +321,12 @@
     }
 
     /**
-     * Gets an ImageWriter object which corresponds to the 
-     * specified ImageReader, or returns null if the specified
-     * ImageReader is not registered. 
+     * Gets an ImageWriter object which corresponds to the specified
+     * ImageReader, or returns null if the specified ImageReader is not
+     * registered.
      * 
-     * @param reader the specified ImageReader.
-     * 
+     * @param reader
+     *            the specified ImageReader.
      * @return the ImageWriter, or null.
      */
     public static ImageWriter getImageWriter(ImageReader reader) {
@@ -331,12 +334,12 @@
     }
 
     /**
-     * Gets an ImageReader object which corresponds to the 
-     * specified ImageWriter, or returns null if the specified
-     * ImageWriter is not registered. 
+     * Gets an ImageReader object which corresponds to the specified
+     * ImageWriter, or returns null if the specified ImageWriter is not
+     * registered.
      * 
-     * @param writer the registered ImageWriter object.
-     * 
+     * @param writer
+     *            the registered ImageWriter object.
      * @return the ImageReader.
      */
     public static ImageReader getImageReader(ImageWriter writer) {
@@ -344,17 +347,16 @@
     }
 
     /**
-     * Gets the Iterator of ImageWriter objects which are able to
-     * encode images with the specified ImageTypeSpecifier and
-     * format.
+     * Gets the Iterator of ImageWriter objects which are able to encode images
+     * with the specified ImageTypeSpecifier and format.
      * 
-     * @param type the ImageTypeSpecifier, which defines layout.
-     * @param formatName the format name.
-     * 
+     * @param type
+     *            the ImageTypeSpecifier, which defines layout.
+     * @param formatName
+     *            the format name.
      * @return the Iterator of ImageWriter objects.
      */
-    public static Iterator<ImageWriter> getImageWriters(ImageTypeSpecifier type,
-                                           String formatName) {
+    public static Iterator<ImageWriter> getImageWriters(ImageTypeSpecifier type, String formatName) {
         if (type == null) {
             throw new NullPointerException("type cannot be NULL");
         }
@@ -370,31 +372,31 @@
     }
 
     /**
-     * Gets the Iterator of registered ImageTranscoders which 
-     * are able to transcode the metadata of the specified
-     * ImageReader object to a suitable object for encoding 
-     * by the specified ImageWriter.
+     * Gets the Iterator of registered ImageTranscoders which are able to
+     * transcode the metadata of the specified ImageReader object to a suitable
+     * object for encoding by the specified ImageWriter.
      * 
-     * @param reader the specified ImageReader.
-     * @param writer the specified ImageWriter.
-     * 
+     * @param reader
+     *            the specified ImageReader.
+     * @param writer
+     *            the specified ImageWriter.
      * @return the Iterator of registered ImageTranscoders.
      */
     public static Iterator<ImageTranscoder> getImageTranscoders(ImageReader reader,
-                                               ImageWriter writer) {
+            ImageWriter writer) {
         throw new UnsupportedOperationException("Not supported yet");
     }
 
     /**
-     * Reads image data from the specified File and decodes it using 
-     * the appropriate registered ImageReader object. 
-     * The File is wrapped in an ImageInputStream.
+     * Reads image data from the specified File and decodes it using the
+     * appropriate registered ImageReader object. The File is wrapped in an
+     * ImageInputStream.
      * 
-     * @param input the File to be read.
-     * 
+     * @param input
+     *            the File to be read.
      * @return the BufferedImage decoded from the specified File, or null.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public static BufferedImage read(File input) throws IOException {
         if (input == null) {
@@ -406,15 +408,15 @@
     }
 
     /**
-     * Reads image data from the specified InputStream and decodes it 
-     * using an appropriate registered an ImageReader object.
+     * Reads image data from the specified InputStream and decodes it using an
+     * appropriate registered an ImageReader object.
      * 
-     * @param input the InputStream.
-     * 
-     * @return the BufferedImage decoded from the specified InputStream,
-     * or null.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param input
+     *            the InputStream.
+     * @return the BufferedImage decoded from the specified InputStream, or
+     *         null.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public static BufferedImage read(InputStream input) throws IOException {
         if (input == null) {
@@ -426,14 +428,14 @@
     }
 
     /**
-     * Reads image data from the specified URL and decodes it using 
-     * the appropriate registered ImageReader object. 
-     *  
-     * @param input the URL to be read.
+     * Reads image data from the specified URL and decodes it using the
+     * appropriate registered ImageReader object.
      * 
+     * @param input
+     *            the URL to be read.
      * @return the BufferedImage decoded from the specified URL, or null.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public static BufferedImage read(URL input) throws IOException {
         if (input == null) {
@@ -443,20 +445,20 @@
         InputStream stream = input.openStream();
         BufferedImage res = read(stream);
         stream.close();
-        
+
         return res;
     }
 
     /**
-     * Reads image data from the specified ImageInputStream and decodes it 
-     * using appropriate registered an ImageReader object.
+     * Reads image data from the specified ImageInputStream and decodes it using
+     * appropriate registered an ImageReader object.
      * 
-     * @param stream the ImageInputStream.
-     * 
-     * @return the BufferedImage decoded from the specified ImageInputStream,
-     * or null.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param stream
+     *            the ImageInputStream.
+     * @return the BufferedImage decoded from the specified ImageInputStream, or
+     *         null.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public static BufferedImage read(ImageInputStream stream) throws IOException {
         if (stream == null) {
@@ -478,25 +480,25 @@
         } catch (IOException e) {
             // Stream could be already closed, proceed silently in this case
         }
-        
+
         return res;
     }
 
     /**
-     * Writes the specified image in the specified format (using an 
-     * appropriate ImageWriter) to the specified ImageOutputStream.
+     * Writes the specified image in the specified format (using an appropriate
+     * ImageWriter) to the specified ImageOutputStream.
      * 
-     * @param im the RenderedImage.
-     * @param formatName the format name.
-     * @param output the ImageOutputStream where Image to be written.
-     * 
+     * @param im
+     *            the RenderedImage.
+     * @param formatName
+     *            the format name.
+     * @param output
+     *            the ImageOutputStream where Image to be written.
      * @return true, if Image is written successfully, false otherwise.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
-    public static boolean write(RenderedImage im,
-                                String formatName,
-                                ImageOutputStream output)
+    public static boolean write(RenderedImage im, String formatName, ImageOutputStream output)
             throws IOException {
 
         if (im == null) {
@@ -509,7 +511,8 @@
             throw new IllegalArgumentException("output cannot be NULL");
         }
 
-        Iterator<ImageWriter> it = getImageWriters(ImageTypeSpecifier.createFromRenderedImage(im), formatName);
+        Iterator<ImageWriter> it = getImageWriters(ImageTypeSpecifier.createFromRenderedImage(im),
+                formatName);
         if (it.hasNext()) {
             ImageWriter writer = it.next();
             writer.setOutput(output);
@@ -522,20 +525,20 @@
     }
 
     /**
-     * Writes the specified image in the specified format (using an 
-     * appropriate ImageWriter) to the specified File.
+     * Writes the specified image in the specified format (using an appropriate
+     * ImageWriter) to the specified File.
      * 
-     * @param im the RenderedImage.
-     * @param formatName the format name.
-     * @param output the output File where Image to be written.
-     * 
+     * @param im
+     *            the RenderedImage.
+     * @param formatName
+     *            the format name.
+     * @param output
+     *            the output File where Image to be written.
      * @return true, if Image is written successfully, false otherwise.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
-    public static boolean write(RenderedImage im,
-                                String formatName,
-                                File output)
+    public static boolean write(RenderedImage im, String formatName, File output)
             throws IOException {
 
         if (output == null) {
@@ -553,20 +556,20 @@
     }
 
     /**
-     * Writes the specified image in the specified format (using an 
-     * appropriate ImageWriter) to the specified OutputStream.
+     * Writes the specified image in the specified format (using an appropriate
+     * ImageWriter) to the specified OutputStream.
      * 
-     * @param im the RenderedImage.
-     * @param formatName the format name.
-     * @param output the OutputStream where Image is to be written.
-     * 
+     * @param im
+     *            the RenderedImage.
+     * @param formatName
+     *            the format name.
+     * @param output
+     *            the OutputStream where Image is to be written.
      * @return true, if Image is written successfully, false otherwise.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
-    public static boolean write(RenderedImage im,
-                                String formatName,
-                                OutputStream output)
+    public static boolean write(RenderedImage im, String formatName, OutputStream output)
             throws IOException {
 
         if (output == null) {
@@ -579,26 +582,28 @@
         return rt;
     }
 
-
     /**
      * Filter to match spi by format name.
      */
     static class FormatFilter implements ServiceRegistry.Filter {
-        
-        /** The name. */
+
+        /**
+         * The name.
+         */
         private String name;
 
         /**
          * Instantiates a new format filter.
          * 
-         * @param name the name
+         * @param name
+         *            the name.
          */
         public FormatFilter(String name) {
             this.name = name;
         }
 
         public boolean filter(Object provider) {
-            ImageReaderWriterSpi spi = (ImageReaderWriterSpi) provider;
+            ImageReaderWriterSpi spi = (ImageReaderWriterSpi)provider;
             return Arrays.asList(spi.getFormatNames()).contains(name);
         }
     }
@@ -608,14 +613,18 @@
      */
     static class FormatAndEncodeFilter extends FormatFilter {
 
-        /** The type. */
+        /**
+         * The type.
+         */
         private ImageTypeSpecifier type;
 
         /**
          * Instantiates a new format and encode filter.
          * 
-         * @param type the type
-         * @param name the name
+         * @param type
+         *            the type.
+         * @param name
+         *            the name.
          */
         public FormatAndEncodeFilter(ImageTypeSpecifier type, String name) {
             super(name);
@@ -624,7 +633,7 @@
 
         @Override
         public boolean filter(Object provider) {
-            ImageWriterSpi spi = (ImageWriterSpi) provider;
+            ImageWriterSpi spi = (ImageWriterSpi)provider;
             return super.filter(provider) && spi.canEncodeImage(type);
         }
     }
@@ -633,21 +642,24 @@
      * Filter to match spi by suffix.
      */
     static class SuffixFilter implements ServiceRegistry.Filter {
-        
-        /** The suf. */
+
+        /**
+         * The suf.
+         */
         private String suf;
 
         /**
          * Instantiates a new suffix filter.
          * 
-         * @param suf the suf
+         * @param suf
+         *            the suf.
          */
         public SuffixFilter(String suf) {
             this.suf = suf;
         }
 
         public boolean filter(Object provider) {
-            ImageReaderWriterSpi spi = (ImageReaderWriterSpi) provider;
+            ImageReaderWriterSpi spi = (ImageReaderWriterSpi)provider;
             return Arrays.asList(spi.getFileSuffixes()).contains(suf);
         }
     }
@@ -656,21 +668,24 @@
      * Filter to match spi by decoding possibility.
      */
     static class CanReadFilter implements ServiceRegistry.Filter {
-        
-        /** The input. */
+
+        /**
+         * The input.
+         */
         private Object input;
 
         /**
          * Instantiates a new can read filter.
          * 
-         * @param input the input
+         * @param input
+         *            the input.
          */
         public CanReadFilter(Object input) {
             this.input = input;
         }
 
         public boolean filter(Object provider) {
-            ImageReaderSpi spi = (ImageReaderSpi) provider;
+            ImageReaderSpi spi = (ImageReaderSpi)provider;
             try {
                 return spi.canDecodeInput(input);
             } catch (IOException e) {
@@ -684,13 +699,16 @@
      */
     static class SpiIteratorToWritersIteratorWrapper implements Iterator<ImageWriter> {
 
-        /** The backend. */
+        /**
+         * The backend.
+         */
         private Iterator<ImageWriterSpi> backend;
 
         /**
          * Instantiates a new spi iterator to writers iterator wrapper.
          * 
-         * @param backend the backend
+         * @param backend
+         *            the backend.
          */
         public SpiIteratorToWritersIteratorWrapper(Iterator<ImageWriterSpi> backend) {
             this.backend = backend;
@@ -699,7 +717,7 @@
         /**
          * Next.
          * 
-         * @return the image writer
+         * @return the image writer.
          */
         public ImageWriter next() {
             try {
@@ -713,7 +731,7 @@
         /**
          * Checks for next.
          * 
-         * @return true, if successful
+         * @return true, if successful.
          */
         public boolean hasNext() {
             return backend.hasNext();
@@ -723,7 +741,8 @@
          * Removes the.
          */
         public void remove() {
-            throw new UnsupportedOperationException("Use deregisterServiceprovider instead of Iterator.remove()");
+            throw new UnsupportedOperationException(
+                    "Use deregisterServiceprovider instead of Iterator.remove()");
         }
     }
 
@@ -731,14 +750,17 @@
      * Wraps spi's iterator to ImageReader iterator.
      */
     static class SpiIteratorToReadersIteratorWrapper implements Iterator<ImageReader> {
-        
-        /** The backend. */
+
+        /**
+         * The backend.
+         */
         private Iterator<ImageReaderSpi> backend;
 
         /**
          * Instantiates a new spi iterator to readers iterator wrapper.
          * 
-         * @param backend the backend
+         * @param backend
+         *            the backend.
          */
         public SpiIteratorToReadersIteratorWrapper(Iterator<ImageReaderSpi> backend) {
             this.backend = backend;
@@ -747,7 +769,7 @@
         /**
          * Next.
          * 
-         * @return the image reader
+         * @return the image reader.
          */
         public ImageReader next() {
             try {
@@ -761,7 +783,7 @@
         /**
          * Checks for next.
          * 
-         * @return true, if successful
+         * @return true, if successful.
          */
         public boolean hasNext() {
             return backend.hasNext();
@@ -771,7 +793,8 @@
          * Removes the.
          */
         public void remove() {
-            throw new UnsupportedOperationException("Use deregisterServiceprovider instead of Iterator.remove()");
+            throw new UnsupportedOperationException(
+                    "Use deregisterServiceprovider instead of Iterator.remove()");
         }
     }
 }
diff --git a/awt/javax/imageio/ImageReadParam.java b/awt/javax/imageio/ImageReadParam.java
index e67ed7d..9cc5c5f 100644
--- a/awt/javax/imageio/ImageReadParam.java
+++ b/awt/javax/imageio/ImageReadParam.java
@@ -18,6 +18,7 @@
  * @author Sergey I. Salishev
  * @version $Revision: 1.2 $
  */
+
 package javax.imageio;
 
 import java.awt.Dimension;
@@ -29,45 +30,50 @@
  */
 
 /**
- * The ImageReadParam class provides information to the ImageReader about
- * how an image is to be decoded.
+ * The ImageReadParam class provides information to the ImageReader about how an
+ * image is to be decoded.
+ * 
+ * @since Android 1.0
  */
-
 public class ImageReadParam extends IIOParam {
 
-    /** 
-     * This flag indicates if this ImageReadParam supports setting the source 
-     * rendering size.  
+    /**
+     * This flag indicates if this ImageReadParam supports setting the source
+     * rendering size.
      */
     protected boolean canSetSourceRenderSize;
-    
-    /** 
-     * The destination BufferedImage. 
+
+    /**
+     * The destination BufferedImage.
      */
     protected BufferedImage destination;
-    
-    /** The destination bands. */
+
+    /**
+     * The destination bands.
+     */
     protected int[] destinationBands;
-    
-    /** 
-     * The minimum progressive pass.  
+
+    /**
+     * The minimum progressive pass.
      */
     protected int minProgressivePass;
-    
-    /** 
-     * The number of progressive passes.  
+
+    /**
+     * The number of progressive passes.
      */
     protected int numProgressivePasses;
-    
-    /** The source render size. */
+
+    /**
+     * The source render size.
+     */
     protected Dimension sourceRenderSize;
 
     /**
-     * Returns true if this ImageReaderParam supports rendering a
-     * source image at an arbitrary size.
+     * Returns true if this ImageReaderParam supports rendering a source image
+     * at an arbitrary size.
      * 
-     * @return true if this ImageReaderParam supports rendering a
-     * source image at an arbitrary size, false otherwise.
+     * @return true, if this ImageReaderParam supports rendering a source image
+     *         at an arbitrary size, false otherwise.
      */
     public boolean canSetSourceRenderSize() {
         return canSetSourceRenderSize;
@@ -92,11 +98,9 @@
     }
 
     /**
-     * Gets the index of the maximum pass to be decoded.
-     * This method returns Integer.MAX_VALUE, if 
-     * getSourceNumProgressivePasses() method returns value
-     * that is equal to Integer.MAX_VALUE. Otherwise
-     * this method returns 
+     * Gets the index of the maximum pass to be decoded. This method returns
+     * Integer.MAX_VALUE, if getSourceNumProgressivePasses() method returns
+     * value that is equal to Integer.MAX_VALUE. Otherwise this method returns
      * getSourceMinProgressivePass() + getSourceNumProgressivePasses() - 1.
      * 
      * @return the index of the maximum pass to be decoded.
@@ -109,19 +113,19 @@
     }
 
     /**
-     * Gets the index of the minimum progressive pass that is decoded,
-     * default is 0. 
+     * Gets the index of the minimum progressive pass that is decoded, default
+     * is 0.
      * 
      * @return the index of the minimum progressive pass that is decoded,
-     * default is 0.
+     *         default is 0.
      */
     public int getSourceMinProgressivePass() {
         return minProgressivePass;
     }
 
     /**
-     * Gets the number of progressive passes.
-     * The default value is Integer.MAX_VALUE. 
+     * Gets the number of progressive passes. The default value is
+     * Integer.MAX_VALUE.
      * 
      * @return the number of progressive passes.
      */
@@ -130,8 +134,8 @@
     }
 
     /**
-     * Gets the dimension of source image which will be rendered
-     * during decoding process.
+     * Gets the dimension of source image which will be rendered during decoding
+     * process.
      * 
      * @return the source render size.
      */
@@ -140,11 +144,12 @@
     }
 
     /**
-     * Sets the specified destination image.
-     * This image will be used by read, readAll, and readRaster methods,
-     * and a reference to it will be returned by those methods.
+     * Sets the specified destination image. This image will be used by read,
+     * readAll, and readRaster methods, and a reference to it will be returned
+     * by those methods.
      * 
-     * @param destination the destination image.
+     * @param destination
+     *            the destination image.
      */
     public void setDestination(BufferedImage destination) {
         this.destination = destination;
@@ -153,7 +158,8 @@
     /**
      * Sets the indices of the destination bands.
      * 
-     * @param destinationBands the indices of the destination bands.
+     * @param destinationBands
+     *            the indices of the destination bands.
      */
     public void setDestinationBands(int[] destinationBands) {
         this.destinationBands = destinationBands;
@@ -167,8 +173,10 @@
     /**
      * Sets the source progressive passes.
      * 
-     * @param minPass the index of the minimum pass to be decoded.
-     * @param numPasses the number of passes to be decoded.
+     * @param minPass
+     *            the index of the minimum pass to be decoded.
+     * @param numPasses
+     *            the number of passes to be decoded.
      */
     public void setSourceProgressivePasses(int minPass, int numPasses) {
         minProgressivePass = minPass;
@@ -176,18 +184,18 @@
     }
 
     /**
-     * Sets the dimension size of source image if an
-     * image can be rendered at an arbitrary size.
+     * Sets the dimension size of source image if an image can be rendered at an
+     * arbitrary size.
      * 
-     * @param size the size of rendered image.
-     * 
-     * @throws UnsupportedOperationException the unsupported operation exception
+     * @param size
+     *            the size of rendered image.
+     * @throws UnsupportedOperationException
+     *             the unsupported operation exception.
      */
     public void setSourceRenderSize(Dimension size) throws UnsupportedOperationException {
         if (!canSetSourceRenderSize) {
             throw new UnsupportedOperationException("can't set source renderer size");
         }
-        sourceRenderSize = size;        
+        sourceRenderSize = size;
     }
 }
-
diff --git a/awt/javax/imageio/ImageReader.java b/awt/javax/imageio/ImageReader.java
index 780de26..cf282ed 100644
--- a/awt/javax/imageio/ImageReader.java
+++ b/awt/javax/imageio/ImageReader.java
@@ -18,6 +18,7 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio;
 
 import javax.imageio.spi.ImageReaderSpi;
@@ -37,56 +38,77 @@
 import java.awt.*;
 
 /**
- * The ImageReader class is an abstract class for decoding images.
- * ImageReader objects are instantiated by the service provider 
- * interface, ImageReaderSpi class, for the specific format. 
- * ImageReaderSpi class should be registered with the IIORegistry, 
- * which uses them for format recognition and presentation of available 
- * format readers and writers.
+ * The ImageReader class is an abstract class for decoding images. ImageReader
+ * objects are instantiated by the service provider interface, ImageReaderSpi
+ * class, for the specific format. ImageReaderSpi class should be registered
+ * with the IIORegistry, which uses them for format recognition and presentation
+ * of available format readers and writers.
+ * 
+ * @since Android 1.0
  */
 public abstract class ImageReader {
 
-    /** The originating provider. */
+    /**
+     * The originating provider.
+     */
     protected ImageReaderSpi originatingProvider;
 
-    /** The input object such as ImageInputStream. */
+    /**
+     * The input object such as ImageInputStream.
+     */
     protected Object input;
 
-    /** The seek forward only. */
+    /**
+     * The seek forward only.
+     */
     protected boolean seekForwardOnly;
 
-    /** 
-     * The ignore metadata flag indicates whether current input source 
-     * has been marked as metadata is allowed to be ignored by setInput. 
+    /**
+     * The ignore metadata flag indicates whether current input source has been
+     * marked as metadata is allowed to be ignored by setInput.
      */
     protected boolean ignoreMetadata;
 
-    /** The minimum index. */
+    /**
+     * The minimum index.
+     */
     protected int minIndex;
 
-    /** The available locales. */
+    /**
+     * The available locales.
+     */
     protected Locale[] availableLocales;
 
-    /** The locale. */
+    /**
+     * The locale.
+     */
     protected Locale locale;
 
-    /** The list of warning listeners. */
+    /**
+     * The list of warning listeners.
+     */
     protected List<IIOReadWarningListener> warningListeners;
 
-    /** The list of warning locales. */
+    /**
+     * The list of warning locales.
+     */
     protected List<Locale> warningLocales;
 
-    /** The list of progress listeners. */
+    /**
+     * The list of progress listeners.
+     */
     protected List<IIOReadProgressListener> progressListeners;
 
-    /** The list of update listeners. */
+    /**
+     * The list of update listeners.
+     */
     protected List<IIOReadUpdateListener> updateListeners;
 
     /**
      * Instantiates a new ImageReader.
      * 
-     * @param originatingProvider the ImageReaderSpi which 
-     * instanties this ImageReader.
+     * @param originatingProvider
+     *            the ImageReaderSpi which instantiates this ImageReader.
      */
     protected ImageReader(ImageReaderSpi originatingProvider) {
         this.originatingProvider = originatingProvider;
@@ -96,15 +118,15 @@
      * Gets the format name of this input source.
      * 
      * @return the format name of this input source.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public String getFormatName() throws IOException {
         return originatingProvider.getFormatNames()[0];
     }
 
     /**
-     * Gets the ImageReaderSpi which instantiated this ImageReader. 
+     * Gets the ImageReaderSpi which instantiated this ImageReader.
      * 
      * @return the ImageReaderSpi.
      */
@@ -113,14 +135,17 @@
     }
 
     /**
-     * Sets the specified Object as the input source of this ImageReader. 
+     * Sets the specified Object as the input source of this ImageReader.
      * 
-     * @param input the input source, it can 
-     * be an ImageInputStream or other supported objects.
-     * @param seekForwardOnly indicates whether the stream must
-     * be read sequentially from its current starting point.
-     * @param ignoreMetadata parameter which indicates
-     * if metadata may be ignored during reads or not.
+     * @param input
+     *            the input source, it can be an ImageInputStream or other
+     *            supported objects.
+     * @param seekForwardOnly
+     *            indicates whether the stream must be read sequentially from
+     *            its current starting point.
+     * @param ignoreMetadata
+     *            parameter which indicates if metadata may be ignored during
+     *            reads or not.
      */
     public void setInput(Object input, boolean seekForwardOnly, boolean ignoreMetadata) {
         if (input != null) {
@@ -137,9 +162,9 @@
     /**
      * Checks if is supported.
      * 
-     * @param input the input
-     * 
-     * @return true, if is supported
+     * @param input
+     *            the input.
+     * @return true, if is supported.
      */
     private boolean isSupported(Object input) {
         ImageReaderSpi spi = getOriginatingProvider();
@@ -158,10 +183,12 @@
      * Sets the specified Object as the input source of this ImageReader.
      * Metadata is not ignored.
      * 
-     * @param input the input source, it can 
-     * be an ImageInputStream or other supported objects.
-     * @param seekForwardOnly indicates whether the stream must
-     * be read sequentially from its current starting point.
+     * @param input
+     *            the input source, it can be an ImageInputStream or other
+     *            supported objects.
+     * @param seekForwardOnly
+     *            indicates whether the stream must be read sequentially from
+     *            its current starting point.
      */
     public void setInput(Object input, boolean seekForwardOnly) {
         setInput(input, seekForwardOnly, false);
@@ -171,8 +198,8 @@
      * Sets the specified Object as the input source of this ImageReader.
      * Metadata is not ignored and forward seeking is not required.
      * 
-     * @param input the input source, it can 
-     * be ImageInputStream or other objects.
+     * @param input
+     *            the input source, it can be ImageInputStream or other objects.
      */
     public void setInput(Object input) {
         setInput(input, false, false);
@@ -181,8 +208,7 @@
     /**
      * Gets the input source object of this ImageReader, or returns null.
      * 
-     * @return the the input source object such as ImageInputStream,
-     * or null.
+     * @return the input source object such as ImageInputStream, or null.
      */
     public Object getInput() {
         return input;
@@ -191,32 +217,31 @@
     /**
      * Checks if the input source supports only forward reading, or not.
      * 
-     * @return true, if the input source supports only forward reading, 
-     * false otherwise.
+     * @return true, if the input source supports only forward reading, false
+     *         otherwise.
      */
     public boolean isSeekForwardOnly() {
         return seekForwardOnly;
     }
 
     /**
-     * Returns true if the current input source allows 
-     * to metadata to be ignored by passing true as 
-     * the ignoreMetadata argument to the setInput method.
+     * Returns true if the current input source allows to metadata to be ignored
+     * by passing true as the ignoreMetadata argument to the setInput method.
      * 
-     * @return true, if true if the current input source allows 
-     * to metadata to be ignored by passing true as 
-     * the ignoreMetadata argument to the setInput method.
+     * @return true, if the current input source allows to metadata to be
+     *         ignored by passing true as the ignoreMetadata argument to the
+     *         setInput method.
      */
     public boolean isIgnoringMetadata() {
         return ignoreMetadata;
     }
 
     /**
-     * Gets the minimum valid index for reading an image, thumbnail, 
-     * or image metadata. 
+     * Gets the minimum valid index for reading an image, thumbnail, or image
+     * metadata.
      * 
-     * @return the minimum valid index for reading an image, thumbnail, 
-     * or image metadata.
+     * @return the minimum valid index for reading an image, thumbnail, or image
+     *         metadata.
      */
     public int getMinIndex() {
         return minIndex;
@@ -234,7 +259,8 @@
     /**
      * Sets the locale to this ImageReader.
      * 
-     * @param locale the Locale.
+     * @param locale
+     *            the Locale.
      */
     public void setLocale(Locale locale) {
         throw new UnsupportedOperationException("Not implemented yet");
@@ -252,89 +278,88 @@
     /**
      * Gets the number of images available in the current input source.
      * 
-     * @param allowSearch the parameter which indicates what
-     * a search is required; if false, the reader may return -1  
-     * without searching.
-     * 
+     * @param allowSearch
+     *            the parameter which indicates what a search is required; if
+     *            false, the reader may return -1 without searching.
      * @return the number of images.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public abstract int getNumImages(boolean allowSearch) throws IOException;
 
     /**
      * Gets the width of the specified image in input source.
      * 
-     * @param imageIndex the image index.
-     * 
+     * @param imageIndex
+     *            the image index.
      * @return the width in pixels.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public abstract int getWidth(int imageIndex) throws IOException;
 
     /**
      * Gets the height of the specified image in input source.
      * 
-     * @param imageIndex the image index.
-     * 
+     * @param imageIndex
+     *            the image index.
      * @return the height in pixels.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public abstract int getHeight(int imageIndex) throws IOException;
 
     /**
-     * Checks if the storage format of the specified image places 
-     * an impediment on random pixels access or not. 
+     * Checks if the storage format of the specified image places an impediment
+     * on random pixels access or not.
      * 
-     * @param imageIndex the image's index.
-     * 
-     * @return true, if the storage format of the specified image places 
-     * an impediment on random pixels access, false otherwise.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param imageIndex
+     *            the image's index.
+     * @return true, if the storage format of the specified image places an
+     *         impediment on random pixels access, false otherwise.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public boolean isRandomAccessEasy(int imageIndex) throws IOException {
-        return false; //def
+        return false; // def
     }
 
     /**
      * Gets the aspect ratio (width devided by height) of the image.
      * 
-     * @param imageIndex the image index.
-     * 
+     * @param imageIndex
+     *            the image index.
      * @return the aspect ratio of the image.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public float getAspectRatio(int imageIndex) throws IOException {
-        return (float) getWidth(imageIndex) / getHeight(imageIndex);
+        return (float)getWidth(imageIndex) / getHeight(imageIndex);
     }
 
     /**
-     * Gets an ImageTypeSpecifier which indicates the type of the 
-     * specified image.
+     * Gets an ImageTypeSpecifier which indicates the type of the specified
+     * image.
      * 
-     * @param imageIndex the image's index.
-     * 
+     * @param imageIndex
+     *            the image's index.
      * @return the ImageTypeSpecifier.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public ImageTypeSpecifier getRawImageType(int imageIndex) throws IOException {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Gets an Iterator of ImageTypeSpecifier objects which are associated
-     * with image types that may be used when decoding specified image.
+     * Gets an Iterator of ImageTypeSpecifier objects which are associated with
+     * image types that may be used when decoding specified image.
      * 
-     * @param imageIndex the image index.
-     * 
+     * @param imageIndex
+     *            the image index.
      * @return an Iterator of ImageTypeSpecifier objects.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public abstract Iterator<ImageTypeSpecifier> getImageTypes(int imageIndex) throws IOException;
 
@@ -351,21 +376,22 @@
      * Gets an IIOMetadata object for this input source.
      * 
      * @return the IIOMetadata.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public abstract IIOMetadata getStreamMetadata() throws IOException;
 
     /**
      * Gets an IIOMetadata object for this input source.
      * 
-     * @param formatName the desired metadata format to be used in the 
-     * returned IIOMetadata object.
-     * @param nodeNames the node names of the document.
-     * 
+     * @param formatName
+     *            the desired metadata format to be used in the returned
+     *            IIOMetadata object.
+     * @param nodeNames
+     *            the node names of the document.
      * @return the IIOMetadata.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public IIOMetadata getStreamMetadata(String formatName, Set<String> nodeNames)
             throws IOException {
@@ -375,83 +401,86 @@
     /**
      * Gets the image metadata of the specified image in input source.
      * 
-     * @param imageIndex the image index.
-     * 
+     * @param imageIndex
+     *            the image index.
      * @return the IIOMetadata.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public abstract IIOMetadata getImageMetadata(int imageIndex) throws IOException;
 
     /**
      * Gets the image metadata of the specified image input source.
      * 
-     * @param imageIndex the image index.
-     * @param formatName the desired metadata format to be used in the 
-     * returned IIOMetadata object.
-     * @param nodeNames the node names which can be contained in
-     * the document.
-     * 
+     * @param imageIndex
+     *            the image index.
+     * @param formatName
+     *            the desired metadata format to be used in the returned
+     *            IIOMetadata object.
+     * @param nodeNames
+     *            the node names which can be contained in the document.
      * @return the IIOMetadata.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
-    public IIOMetadata getImageMetadata(int imageIndex, String formatName,
-                                        Set<String> nodeNames) throws IOException {
+    public IIOMetadata getImageMetadata(int imageIndex, String formatName, Set<String> nodeNames)
+            throws IOException {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Reads the specified image and returns it as a BufferedImage
-     * using the default ImageReadParam.
-     *  
-     * @param imageIndex the image index.
+     * Reads the specified image and returns it as a BufferedImage using the
+     * default ImageReadParam.
      * 
+     * @param imageIndex
+     *            the image index.
      * @return the BufferedImage.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public BufferedImage read(int imageIndex) throws IOException {
         return read(imageIndex, null);
     }
 
     /**
-     * Reads the specified image and returns it as a BufferedImage
-     * using the specified ImageReadParam.
+     * Reads the specified image and returns it as a BufferedImage using the
+     * specified ImageReadParam.
      * 
-     * @param imageIndex the image index.
-     * @param param the ImageReadParam.
-     * 
+     * @param imageIndex
+     *            the image index.
+     * @param param
+     *            the ImageReadParam.
      * @return the BufferedImage.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public abstract BufferedImage read(int imageIndex, ImageReadParam param) throws IOException;
 
     /**
      * Reads the specified image and returns an IIOImage with this image,
-     * thumbnails, and metadata for this image, using 
-     * the specified ImageReadParam.
+     * thumbnails, and metadata for this image, using the specified
+     * ImageReadParam.
      * 
-     * @param imageIndex the image index.
-     * @param param the ImageReadParam.
-     * 
+     * @param imageIndex
+     *            the image index.
+     * @param param
+     *            the ImageReadParam.
      * @return the IIOImage.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public IIOImage readAll(int imageIndex, ImageReadParam param) throws IOException {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Returns an Iterator of IIOImages from the input source. 
+     * Returns an Iterator of IIOImages from the input source.
      * 
-     * @param params the Iterator of ImageReadParam objects.
-     * 
+     * @param params
+     *            the Iterator of ImageReadParam objects.
      * @return the iterator of IIOImages.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public Iterator<IIOImage> readAll(Iterator<? extends ImageReadParam> params) throws IOException {
         throw new UnsupportedOperationException("Not implemented yet");
@@ -460,23 +489,23 @@
     /**
      * Checks whether or not this plug-in supports reading a Raster.
      * 
-     * @return true, if this plug-in supports reading a Raster,
-     * false otherwise.
+     * @return true, if this plug-in supports reading a Raster, false otherwise.
      */
     public boolean canReadRaster() {
-        return false; //def
+        return false; // def
     }
 
     /**
-     * Reads a new Raster object which contains the raw pixel data from 
-     * the image. 
+     * Reads a new Raster object which contains the raw pixel data from the
+     * image.
      * 
-     * @param imageIndex the image index.
-     * @param param the ImageReadParam.
-     * 
+     * @param imageIndex
+     *            the image index.
+     * @param param
+     *            the ImageReadParam.
      * @return the Raster.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public Raster readRaster(int imageIndex, ImageReadParam param) throws IOException {
         throw new UnsupportedOperationException("Unsupported");
@@ -485,220 +514,226 @@
     /**
      * Checks if the specified image has tiles or not.
      * 
-     * @param imageIndex the image's index.
-     * 
-     * @return true, if the specified image has tiles,
-     * false otherwise.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param imageIndex
+     *            the image's index.
+     * @return true, if the specified image has tiles, false otherwise.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public boolean isImageTiled(int imageIndex) throws IOException {
-        return false; //def
+        return false; // def
     }
 
     /**
      * Gets the tile width in the specified image.
      * 
-     * @param imageIndex the image's index.
-     * 
+     * @param imageIndex
+     *            the image's index.
      * @return the tile width.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public int getTileWidth(int imageIndex) throws IOException {
-        return getWidth(imageIndex); //def
+        return getWidth(imageIndex); // def
     }
 
     /**
      * Gets the tile height in the specified image.
      * 
-     * @param imageIndex the image's index.
-     * 
+     * @param imageIndex
+     *            the image's index.
      * @return the tile height.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public int getTileHeight(int imageIndex) throws IOException {
-        return getHeight(imageIndex); //def
+        return getHeight(imageIndex); // def
     }
 
     /**
-     * Gets the X coordinate of the upper left corner of the tile grid in the 
+     * Gets the X coordinate of the upper left corner of the tile grid in the
      * specified image.
      * 
-     * @param imageIndex the image's index.
-     * 
+     * @param imageIndex
+     *            the image's index.
      * @return the X coordinate of the upper left corner of the tile grid.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public int getTileGridXOffset(int imageIndex) throws IOException {
-        return 0; //def
+        return 0; // def
     }
 
     /**
-     * Gets the Y coordinate of the upper left corner of the tile grid in the 
+     * Gets the Y coordinate of the upper left corner of the tile grid in the
      * specified image.
      * 
-     * @param imageIndex the image's index.
-     * 
+     * @param imageIndex
+     *            the image's index.
      * @return the Y coordinate of the upper left corner of the tile grid.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public int getTileGridYOffset(int imageIndex) throws IOException {
-        return 0; //def
+        return 0; // def
     }
 
     /**
-     * Reads the tile specified by the tileX and tileY parameters
-     * of the specified image and returns it as a BufferedImage. 
+     * Reads the tile specified by the tileX and tileY parameters of the
+     * specified image and returns it as a BufferedImage.
      * 
-     * @param imageIndex the image index.
-     * @param tileX the X index of tile.
-     * @param tileY the Y index of tile.
-     * 
+     * @param imageIndex
+     *            the image index.
+     * @param tileX
+     *            the X index of tile.
+     * @param tileY
+     *            the Y index of tile.
      * @return the BufferedImage.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public BufferedImage readTile(int imageIndex, int tileX, int tileY) throws IOException {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Reads the tile specified by the tileX and tileY parameters
-     * of the specified image and returns it as a Raster. 
+     * Reads the tile specified by the tileX and tileY parameters of the
+     * specified image and returns it as a Raster.
      * 
-     * @param imageIndex the image index.
-     * @param tileX the X index of tile.
-     * @param tileY the Y index of tile.
-     * 
+     * @param imageIndex
+     *            the image index.
+     * @param tileX
+     *            the X index of tile.
+     * @param tileY
+     *            the Y index of tile.
      * @return the Raster.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public Raster readTileRaster(int imageIndex, int tileX, int tileY) throws IOException {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Reads the specified image using the specified 
-     * ImageReadParam and returns it as a RenderedImage.
+     * Reads the specified image using the specified ImageReadParam and returns
+     * it as a RenderedImage.
      * 
-     * @param imageIndex the image index.
-     * @param param the ImageReadParam.
-     * 
+     * @param imageIndex
+     *            the image index.
+     * @param param
+     *            the ImageReadParam.
      * @return the RenderedImage.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
-    public RenderedImage readAsRenderedImage(int imageIndex, ImageReadParam param) throws IOException {
+    public RenderedImage readAsRenderedImage(int imageIndex, ImageReadParam param)
+            throws IOException {
         return read(imageIndex, param);
     }
 
     /**
-     * Returns true if the image format supported by this reader 
-     * supports thumbnail preview images.
+     * Returns true if the image format supported by this reader supports
+     * thumbnail preview images.
      * 
-     * @return true if the image format supported by this reader 
-     * supports thumbnail preview images, false otherwise.
+     * @return true, if the image format supported by this reader supports
+     *         thumbnail preview images, false otherwise.
      */
     public boolean readerSupportsThumbnails() {
-        return false; //def
+        return false; // def
     }
 
     /**
      * Checks if the specified image has thumbnails or not.
      * 
-     * @param imageIndex the image's index.
-     * 
-     * @return true, if the specified image has thumbnails,
-     * false otherwise.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param imageIndex
+     *            the image's index.
+     * @return true, if the specified image has thumbnails, false otherwise.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public boolean hasThumbnails(int imageIndex) throws IOException {
-        return getNumThumbnails(imageIndex) > 0; //def
+        return getNumThumbnails(imageIndex) > 0; // def
     }
 
     /**
      * Gets the number of thumbnails for the specified image.
      * 
-     * @param imageIndex the image's index.
-     * 
+     * @param imageIndex
+     *            the image's index.
      * @return the number of thumbnails.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public int getNumThumbnails(int imageIndex) throws IOException {
-        return 0; //def
+        return 0; // def
     }
 
     /**
      * Gets the width of the specified thumbnail for the specified image.
      * 
-     * @param imageIndex the image's index.
-     * @param thumbnailIndex the thumbnail's index.
-     * 
+     * @param imageIndex
+     *            the image's index.
+     * @param thumbnailIndex
+     *            the thumbnail's index.
      * @return the thumbnail width.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public int getThumbnailWidth(int imageIndex, int thumbnailIndex) throws IOException {
-        return readThumbnail(imageIndex, thumbnailIndex).getWidth();  //def
+        return readThumbnail(imageIndex, thumbnailIndex).getWidth(); // def
     }
 
     /**
      * Gets the height of the specified thumbnail for the specified image.
      * 
-     * @param imageIndex the image's index.
-     * @param thumbnailIndex the thumbnail's index.
-     * 
+     * @param imageIndex
+     *            the image's index.
+     * @param thumbnailIndex
+     *            the thumbnail's index.
      * @return the thumbnail height.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public int getThumbnailHeight(int imageIndex, int thumbnailIndex) throws IOException {
-        return readThumbnail(imageIndex, thumbnailIndex).getHeight();  //def
+        return readThumbnail(imageIndex, thumbnailIndex).getHeight(); // def
     }
 
     /**
-     * Reads the thumbnail image for the specified image
-     * as a BufferedImage.
-     *  
-     * @param imageIndex the image index.
-     * @param thumbnailIndex the thumbnail index.
+     * Reads the thumbnail image for the specified image as a BufferedImage.
      * 
+     * @param imageIndex
+     *            the image index.
+     * @param thumbnailIndex
+     *            the thumbnail index.
      * @return the BufferedImage.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public BufferedImage readThumbnail(int imageIndex, int thumbnailIndex) throws IOException {
-        throw new UnsupportedOperationException("Unsupported"); //def
+        throw new UnsupportedOperationException("Unsupported"); // def
     }
 
     /**
-     * Requests an abort operation for current reading operation. 
+     * Requests an abort operation for current reading operation.
      */
     public void abort() {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Checks whether or not a request to abort the current read operation 
-     * has been made successfully.
+     * Checks whether or not a request to abort the current read operation has
+     * been made successfully.
      * 
-     * @return true, if the request to abort the current read operation 
-     * has been made successfully, false otherwise.
+     * @return true, if the request to abort the current read operation has been
+     *         made successfully, false otherwise.
      */
     protected boolean abortRequested() {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Clears all previous abort request, and abortRequested returns false
-     * after calling this method.
+     * Clears all previous abort request, and abortRequested returns false after
+     * calling this method.
      */
     protected void clearAbortRequest() {
         throw new UnsupportedOperationException("Not implemented yet");
@@ -707,7 +742,8 @@
     /**
      * Adds the IIOReadWarningListener.
      * 
-     * @param listener the IIOReadWarningListener.
+     * @param listener
+     *            the IIOReadWarningListener.
      */
     public void addIIOReadWarningListener(IIOReadWarningListener listener) {
         throw new UnsupportedOperationException("Not implemented yet");
@@ -716,7 +752,8 @@
     /**
      * Removes the specified IIOReadWarningListener.
      * 
-     * @param listener the IIOReadWarningListener to be removed.
+     * @param listener
+     *            the IIOReadWarningListener to be removed.
      */
     public void removeIIOReadWarningListener(IIOReadWarningListener listener) {
         throw new UnsupportedOperationException("Not implemented yet");
@@ -732,7 +769,8 @@
     /**
      * Adds the IIOReadProgressListener.
      * 
-     * @param listener the IIOReadProgressListener.
+     * @param listener
+     *            the IIOReadProgressListener.
      */
     public void addIIOReadProgressListener(IIOReadProgressListener listener) {
         throw new UnsupportedOperationException("Not implemented yet");
@@ -741,7 +779,8 @@
     /**
      * Removes the specified IIOReadProgressListener.
      * 
-     * @param listener the IIOReadProgressListener to be removed.
+     * @param listener
+     *            the IIOReadProgressListener to be removed.
      */
     public void removeIIOReadProgressListener(IIOReadProgressListener listener) {
         throw new UnsupportedOperationException("Not implemented yet");
@@ -757,7 +796,8 @@
     /**
      * Adds the IIOReadUpdateListener.
      * 
-     * @param listener the IIOReadUpdateListener.
+     * @param listener
+     *            the IIOReadUpdateListener.
      */
     public void addIIOReadUpdateListener(IIOReadUpdateListener listener) {
         throw new UnsupportedOperationException("Not implemented yet");
@@ -766,7 +806,8 @@
     /**
      * Removes the specified IIOReadUpdateListener.
      * 
-     * @param listener the IIOReadUpdateListener to be removed.
+     * @param listener
+     *            the IIOReadUpdateListener to be removed.
      */
     public void removeIIOReadUpdateListener(IIOReadUpdateListener listener) {
         throw new UnsupportedOperationException("Not implemented yet");
@@ -780,229 +821,243 @@
     }
 
     /**
-     * Processes the start of an sequence of image reads
-     * by calling the sequenceStarted method on all registered 
-     * IIOReadProgressListeners. 
+     * Processes the start of an sequence of image reads by calling the
+     * sequenceStarted method on all registered IIOReadProgressListeners.
      * 
-     * @param minIndex the minimum index.
+     * @param minIndex
+     *            the minimum index.
      */
     protected void processSequenceStarted(int minIndex) {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Processes the completion of an sequence of image reads
-     * by calling sequenceComplete method on all registered 
-     * IIOReadProgressListeners. 
+     * Processes the completion of an sequence of image reads by calling
+     * sequenceComplete method on all registered IIOReadProgressListeners.
      */
     protected void processSequenceComplete() {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Processes the start of an image read by calling the imageStarted
-     * method on all registered IIOReadProgressListeners.
+     * Processes the start of an image read by calling the imageStarted method
+     * on all registered IIOReadProgressListeners.
      * 
-     * @param imageIndex the image index.
+     * @param imageIndex
+     *            the image index.
      */
     protected void processImageStarted(int imageIndex) {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Processes the current percentage of image completion by calling 
-     * the imageProgress method on all registered IIOReadProgressListeners.
+     * Processes the current percentage of image completion by calling the
+     * imageProgress method on all registered IIOReadProgressListeners.
      * 
-     * @param percentageDone the percentage done.
+     * @param percentageDone
+     *            the percentage done.
      */
     protected void processImageProgress(float percentageDone) {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Processes image completion by calling the imageComplete method
-     * on all registered IIOReadProgressListeners. 
+     * Processes image completion by calling the imageComplete method on all
+     * registered IIOReadProgressListeners.
      */
     protected void processImageComplete() {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Processes the start of a thumbnail read by calling the
-     * thumbnailStarted method on all registered IIOReadProgressListeners. 
+     * Processes the start of a thumbnail read by calling the thumbnailStarted
+     * method on all registered IIOReadProgressListeners.
      * 
-     * @param imageIndex the image index.
-     * @param thumbnailIndex the thumbnail index.
+     * @param imageIndex
+     *            the image index.
+     * @param thumbnailIndex
+     *            the thumbnail index.
      */
     protected void processThumbnailStarted(int imageIndex, int thumbnailIndex) {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Processes the current percentage of thumbnail completion 
-     * by calling the thumbnailProgress method on all registered 
-     * IIOReadProgressListeners.
+     * Processes the current percentage of thumbnail completion by calling the
+     * thumbnailProgress method on all registered IIOReadProgressListeners.
      * 
-     * @param percentageDone the percentage done.
+     * @param percentageDone
+     *            the percentage done.
      */
     protected void processThumbnailProgress(float percentageDone) {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Processes the completion of a thumbnail read 
-     * by calling the thumbnailComplete method 
-     * on all registered IIOReadProgressListeners. 
+     * Processes the completion of a thumbnail read by calling the
+     * thumbnailComplete method on all registered IIOReadProgressListeners.
      */
     protected void processThumbnailComplete() {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Processes a read aborted event by calling the readAborted 
-     * method on all registered IIOReadProgressListeners.
+     * Processes a read aborted event by calling the readAborted method on all
+     * registered IIOReadProgressListeners.
      */
     protected void processReadAborted() {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Processes the beginning of a progressive pass by calling 
-     * the passStarted method on all registered IIOReadUpdateListeners.
+     * Processes the beginning of a progressive pass by calling the passStarted
+     * method on all registered IIOReadUpdateListeners.
      * 
-     * @param theImage the image to be updated.
-     * @param pass the current pass index.
-     * @param minPass the minimum pass index.
-     * @param maxPass the maximum pass index.
-     * @param minX the X coordinate of of the upper left pixel. 
-     * @param minY the Y coordinate of of the upper left pixel.
-     * @param periodX the horizontal separation between pixels.
-     * @param periodY the vertical separation between pixels.
-     * @param bands the number of affected bands.
+     * @param theImage
+     *            the image to be updated.
+     * @param pass
+     *            the current pass index.
+     * @param minPass
+     *            the minimum pass index.
+     * @param maxPass
+     *            the maximum pass index.
+     * @param minX
+     *            the X coordinate of of the upper left pixel.
+     * @param minY
+     *            the Y coordinate of of the upper left pixel.
+     * @param periodX
+     *            the horizontal separation between pixels.
+     * @param periodY
+     *            the vertical separation between pixels.
+     * @param bands
+     *            the number of affected bands.
      */
-    protected void processPassStarted(BufferedImage theImage,
-                                  int pass,
-                                  int minPass,
-                                  int maxPass,
-                                  int minX,
-                                  int minY,
-                                  int periodX,
-                                  int periodY,
-                                  int[] bands) {
+    protected void processPassStarted(BufferedImage theImage, int pass, int minPass, int maxPass,
+            int minX, int minY, int periodX, int periodY, int[] bands) {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Processes the update of a set of samples by calling 
-     * the imageUpdate method on all registered IIOReadUpdateListeners.  
+     * Processes the update of a set of samples by calling the imageUpdate
+     * method on all registered IIOReadUpdateListeners.
      * 
-     * @param theImage the image to be updated.
-     * @param minX the X coordinate of the upper left pixel.
-     * @param minY the Y coordinate of the upper left pixel.
-     * @param width the width of updated area.
-     * @param height the height of updated area.
-     * @param periodX the horizontal separation between pixels.
-     * @param periodY the vertical separation between pixels.
-     * @param bands the number of affected bands.
+     * @param theImage
+     *            the image to be updated.
+     * @param minX
+     *            the X coordinate of the upper left pixel.
+     * @param minY
+     *            the Y coordinate of the upper left pixel.
+     * @param width
+     *            the width of updated area.
+     * @param height
+     *            the height of updated area.
+     * @param periodX
+     *            the horizontal separation between pixels.
+     * @param periodY
+     *            the vertical separation between pixels.
+     * @param bands
+     *            the number of affected bands.
      */
-    protected void processImageUpdate(BufferedImage theImage,
-                                  int minX,
-                                  int minY,
-                                  int width,
-                                  int height,
-                                  int periodX,
-                                  int periodY,
-                                  int[] bands) {
+    protected void processImageUpdate(BufferedImage theImage, int minX, int minY, int width,
+            int height, int periodX, int periodY, int[] bands) {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Processes the end of a progressive pass by calling passComplete
-     * method of registered IIOReadUpdateListeners.
+     * Processes the end of a progressive pass by calling passComplete method of
+     * registered IIOReadUpdateListeners.
      * 
-     * @param theImage the image to be updated.
+     * @param theImage
+     *            the image to be updated.
      */
     protected void processPassComplete(BufferedImage theImage) {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Processes the beginning of a thumbnail progressive pass
-     * by calling the thumbnailPassStarted method on all 
-     * registered IIOReadUpdateListeners.
+     * Processes the beginning of a thumbnail progressive pass by calling the
+     * thumbnailPassStarted method on all registered IIOReadUpdateListeners.
      * 
-     * @param theThumbnail the the thumbnail to be updated.
-     * @param pass the current pass index.
-     * @param minPass the minimum pass index.
-     * @param maxPass the maximum pass index.
-     * @param minX the X coordinate of the upper left pixel. 
-     * @param minY the Y coordinate of the upper left pixel.
-     * @param periodX the horizontal separation between pixels.
-     * @param periodY the vertical separation between pixels.
-     * @param bands the number of affected bands.
+     * @param theThumbnail
+     *            the thumbnail to be updated.
+     * @param pass
+     *            the current pass index.
+     * @param minPass
+     *            the minimum pass index.
+     * @param maxPass
+     *            the maximum pass index.
+     * @param minX
+     *            the X coordinate of the upper left pixel.
+     * @param minY
+     *            the Y coordinate of the upper left pixel.
+     * @param periodX
+     *            the horizontal separation between pixels.
+     * @param periodY
+     *            the vertical separation between pixels.
+     * @param bands
+     *            the number of affected bands.
      */
-    protected void processThumbnailPassStarted(BufferedImage theThumbnail,
-                                           int pass,
-                                           int minPass,
-                                           int maxPass,
-                                           int minX,
-                                           int minY,
-                                           int periodX,
-                                           int periodY,
-                                           int[] bands) {
+    protected void processThumbnailPassStarted(BufferedImage theThumbnail, int pass, int minPass,
+            int maxPass, int minX, int minY, int periodX, int periodY, int[] bands) {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Processes the update of a set of samples in a thumbnail 
-     * image by calling the thumbnailUpdate method on all
-     * registered IIOReadUpdateListeners. 
+     * Processes the update of a set of samples in a thumbnail image by calling
+     * the thumbnailUpdate method on all registered IIOReadUpdateListeners.
      * 
-     * @param theThumbnail the the thumbnail to be updated.
-     * @param minX the X coordinate of the upper left pixel. 
-     * @param minY the Y coordinate of the upper left pixel.
-     * @param periodX the horizontal separation between pixels.
-     * @param periodY the vertical separation between pixels.
-     * @param bands the number of affected bands.
+     * @param theThumbnail
+     *            the thumbnail to be updated.
+     * @param minX
+     *            the X coordinate of the upper left pixel.
+     * @param minY
+     *            the Y coordinate of the upper left pixel.
+     * @param width
+     *            the total width of the updated area.
+     * @param height
+     *            the total height of the updated area.
+     * @param periodX
+     *            the horizontal separation between pixels.
+     * @param periodY
+     *            the vertical separation between pixels.
+     * @param bands
+     *            the number of affected bands.
      */
-    protected void processThumbnailUpdate(BufferedImage theThumbnail,
-                                      int minX,
-                                      int minY,
-                                      int width,
-                                      int height,
-                                      int periodX,
-                                      int periodY,
-                                       int[] bands) {
+    protected void processThumbnailUpdate(BufferedImage theThumbnail, int minX, int minY,
+            int width, int height, int periodX, int periodY, int[] bands) {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Processes the end of a thumbnail progressive pass 
-     * by calling the thumbnailPassComplete method
-     * on all registered IIOReadUpdateListeners. 
+     * Processes the end of a thumbnail progressive pass by calling the
+     * thumbnailPassComplete method on all registered IIOReadUpdateListeners.
      * 
-     * @param theThumbnail the thumbnail to be updated.
+     * @param theThumbnail
+     *            the thumbnail to be updated.
      */
     protected void processThumbnailPassComplete(BufferedImage theThumbnail) {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Processes a warning message by calling warningOccurred method
-     * of registered IIOReadWarningListeners.
+     * Processes a warning message by calling warningOccurred method of
+     * registered IIOReadWarningListeners.
      * 
-     * @param warning the warning.
+     * @param warning
+     *            the warning.
      */
     protected void processWarningOccurred(String warning) {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Processes a warning by calling the warningOccurred method 
-     * of on all registered IIOReadWarningListeners.
+     * Processes a warning by calling the warningOccurred method of on all
+     * registered IIOReadWarningListeners.
      * 
-     * @param baseName the base name of ResourceBundles.
-     * @param keyword the keyword to index the warning among ResourceBundles.
+     * @param baseName
+     *            the base name of ResourceBundles.
+     * @param keyword
+     *            the keyword to index the warning among ResourceBundles.
      */
     protected void processWarningOccurred(String baseName, String keyword) {
         throw new UnsupportedOperationException("Not implemented yet");
@@ -1029,13 +1084,15 @@
     }
 
     /**
-     * Gets the region of source image that should be read with the 
-     * specified width, height and ImageReadParam. 
+     * Gets the region of source image that should be read with the specified
+     * width, height and ImageReadParam.
      * 
-     * @param param the ImageReadParam object, or null.
-     * @param srcWidth the source image's width.
-     * @param srcHeight the source image's  height.
-     * 
+     * @param param
+     *            the ImageReadParam object, or null.
+     * @param srcWidth
+     *            the source image's width.
+     * @param srcHeight
+     *            the source image's height.
      * @return the Rectangle of source region.
      */
     protected static Rectangle getSourceRegion(ImageReadParam param, int srcWidth, int srcHeight) {
@@ -1043,58 +1100,63 @@
     }
 
     /**
-     * Computes the specified source region and the specified destination 
-     * region with the specified the width and height of the source image,
-     * an optional destination image, and an ImageReadParam. 
+     * Computes the specified source region and the specified destination region
+     * with the specified the width and height of the source image, an optional
+     * destination image, and an ImageReadParam.
      * 
-     * @param param the an ImageReadParam object, or null.
-     * @param srcWidth the source image's width.
-     * @param srcHeight the source image's height.
-     * @param image the destination image.
-     * @param srcRegion the source region.
-     * @param destRegion the destination region.
+     * @param param
+     *            the an ImageReadParam object, or null.
+     * @param srcWidth
+     *            the source image's width.
+     * @param srcHeight
+     *            the source image's height.
+     * @param image
+     *            the destination image.
+     * @param srcRegion
+     *            the source region.
+     * @param destRegion
+     *            the destination region.
      */
-    protected static void computeRegions(ImageReadParam param,
-                                     int srcWidth,
-                                     int srcHeight,
-                                     BufferedImage image,
-                                     Rectangle srcRegion,
-                                     Rectangle destRegion) {
+    protected static void computeRegions(ImageReadParam param, int srcWidth, int srcHeight,
+            BufferedImage image, Rectangle srcRegion, Rectangle destRegion) {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Checks the validity of the source and destination band and is called
-     * when the reader knows the number of bands of the source image and 
-     * the number of bands of the destination image. 
+     * Checks the validity of the source and destination band and is called when
+     * the reader knows the number of bands of the source image and the number
+     * of bands of the destination image.
      * 
-     * @param param the ImageReadParam for reading the Image.
-     * @param numSrcBands the number of bands in the source.
-     * @param numDstBands the number of bands in the destination.
+     * @param param
+     *            the ImageReadParam for reading the Image.
+     * @param numSrcBands
+     *            the number of bands in the source.
+     * @param numDstBands
+     *            the number of bands in the destination.
      */
-    protected static void checkReadParamBandSettings(ImageReadParam param,
-                                                 int numSrcBands,
-                                                 int numDstBands) {
+    protected static void checkReadParamBandSettings(ImageReadParam param, int numSrcBands,
+            int numDstBands) {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Gets the destination image where the decoded data is written. 
+     * Gets the destination image where the decoded data is written.
      * 
-     * @param param the ImageReadParam.
-     * @param imageTypes the iterator of ImageTypeSpecifier objects.
-     * @param width the width of the image being decoded.
-     * @param height the height of the image being decoded.
-     * 
+     * @param param
+     *            the ImageReadParam.
+     * @param imageTypes
+     *            the iterator of ImageTypeSpecifier objects.
+     * @param width
+     *            the width of the image being decoded.
+     * @param height
+     *            the height of the image being decoded.
      * @return the BufferedImage where decoded pixels should be written.
-     * 
-     * @throws IIOException the IIOException is thrown if 
-     * there is no suitable ImageTypeSpecifier.
+     * @throws IIOException
+     *             the IIOException is thrown if there is no suitable
+     *             ImageTypeSpecifier.
      */
-    protected static BufferedImage getDestination(ImageReadParam param, Iterator<ImageTypeSpecifier> imageTypes,
-                                              int width,
-                                              int height)
-                                       throws IIOException {
+    protected static BufferedImage getDestination(ImageReadParam param,
+            Iterator<ImageTypeSpecifier> imageTypes, int width, int height) throws IIOException {
         throw new UnsupportedOperationException("Not implemented yet");
     }
 }
diff --git a/awt/javax/imageio/ImageTranscoder.java b/awt/javax/imageio/ImageTranscoder.java
index 1a0de76..632d890 100644
--- a/awt/javax/imageio/ImageTranscoder.java
+++ b/awt/javax/imageio/ImageTranscoder.java
@@ -18,43 +18,50 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio;
 
 import javax.imageio.metadata.IIOMetadata;
 import javax.imageio.ImageTypeSpecifier;
 
 /**
- * The ImageTranscoder interface is to be implemented by classes that
- * perform image transcoding operations, that is, take images written
- * in one format and write them in another format using
- * read/write operations. Some image data can be lost in such processes.
- * The ImageTranscoder interface converts metadata objects (IIOMetadata)
- * of ImageReader to apropriate metadata object for ImageWriter.
+ * The ImageTranscoder interface is to be implemented by classes that perform
+ * image transcoding operations, that is, take images written in one format and
+ * write them in another format using read/write operations. Some image data can
+ * be lost in such processes. The ImageTranscoder interface converts metadata
+ * objects (IIOMetadata) of ImageReader to appropriate metadata object for
+ * ImageWriter.
+ * 
+ * @since Android 1.0
  */
 public interface ImageTranscoder {
-    
+
     /**
      * Converts the specified IIOMetadata object using the specified
      * ImageWriteParam for obtaining writer's metadata structure.
      * 
-     * @param inData the IIOMetadata.
-     * @param param the ImageWriteParam.
-     * 
+     * @param inData
+     *            the IIOMetadata.
+     * @param param
+     *            the ImageWriteParam.
      * @return the IIOMetadata, or null.
      */
     IIOMetadata convertStreamMetadata(IIOMetadata inData, ImageWriteParam param);
 
     /**
      * Converts the specified IIOMetadata object using the specified
-     * ImageWriteParam for obtaining writer's metadata structure 
-     * and ImageTypeSpecifier object for obtaining the layout and 
-     * color information of the image for this metadata.
+     * ImageWriteParam for obtaining writer's metadata structure and
+     * ImageTypeSpecifier object for obtaining the layout and color information
+     * of the image for this metadata.
      * 
-     * @param inData the IIOMetadata.
-     * @param imageType the ImageTypeSpecifier.
-     * @param param the ImageWriteParam.
-     * 
+     * @param inData
+     *            the IIOMetadata.
+     * @param imageType
+     *            the ImageTypeSpecifier.
+     * @param param
+     *            the ImageWriteParam.
      * @return the IIOMetadata, or null.
      */
-    IIOMetadata convertImageMetadata(IIOMetadata inData, ImageTypeSpecifier imageType, ImageWriteParam param);
+    IIOMetadata convertImageMetadata(IIOMetadata inData, ImageTypeSpecifier imageType,
+            ImageWriteParam param);
 }
diff --git a/awt/javax/imageio/ImageTypeSpecifier.java b/awt/javax/imageio/ImageTypeSpecifier.java
index c93f269..505b1c4 100644
--- a/awt/javax/imageio/ImageTypeSpecifier.java
+++ b/awt/javax/imageio/ImageTypeSpecifier.java
@@ -18,6 +18,7 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio;
 
 import java.awt.image.ColorModel;
@@ -27,27 +28,31 @@
 import java.awt.color.ColorSpace;
 
 /**
- * The ImageTypeSpecifier class performs conversion operations
- * on the SampleModel and the ColorModel of an image.
+ * The ImageTypeSpecifier class performs conversion operations on the
+ * SampleModel and the ColorModel of an image.
+ * 
+ * @since Android 1.0
  */
 public class ImageTypeSpecifier {
-    
-    /** 
+
+    /**
      * The ColorModel of this ImageTypeSpecifier.
      */
     protected ColorModel colorModel;
-    
-    /** 
-     * The SampleModel of this ImageTypeSpecifier. 
+
+    /**
+     * The SampleModel of this ImageTypeSpecifier.
      */
     protected SampleModel sampleModel;
 
     /**
-     * Instantiates a new ImageTypeSpecifier with the specified
-     * ColorModel and SampleModel objects.
+     * Instantiates a new ImageTypeSpecifier with the specified ColorModel and
+     * SampleModel objects.
      * 
-     * @param colorModel the ColorModel.
-     * @param sampleModel the SampleModel.
+     * @param colorModel
+     *            the ColorModel.
+     * @param sampleModel
+     *            the SampleModel.
      */
     public ImageTypeSpecifier(ColorModel colorModel, SampleModel sampleModel) {
         if (colorModel == null) {
@@ -65,10 +70,10 @@
     }
 
     /**
-     * Instantiates a new ImageTypeSpecifier using the specified 
-     * RenderedImage.
+     * Instantiates a new ImageTypeSpecifier using the specified RenderedImage.
      * 
-     * @param renderedImage the RenderedImage.
+     * @param renderedImage
+     *            the RenderedImage.
      */
     public ImageTypeSpecifier(RenderedImage renderedImage) {
         if (renderedImage == null) {
@@ -79,136 +84,139 @@
     }
 
     /**
-     * Creates an ImageTypeSpecifier with the specified
-     * DirectColorModel and a packed SampleModel.
+     * Creates an ImageTypeSpecifier with the specified DirectColorModel and a
+     * packed SampleModel.
      * 
-     * @param colorSpace the ColorSpace.
-     * @param redMask the red mask.
-     * @param greenMask the green mask.
-     * @param blueMask the blue mask.
-     * @param alphaMask the alpha mask.
-     * @param transferType the transfer type.
-     * @param isAlphaPremultiplied the parameter indicates
-     * if the color channel is premultiplied by alpha.
-     * 
+     * @param colorSpace
+     *            the ColorSpace.
+     * @param redMask
+     *            the red mask.
+     * @param greenMask
+     *            the green mask.
+     * @param blueMask
+     *            the blue mask.
+     * @param alphaMask
+     *            the alpha mask.
+     * @param transferType
+     *            the transfer type.
+     * @param isAlphaPremultiplied
+     *            the parameter indicates if the color channel is pre-multiplied
+     *            by alpha.
      * @return the ImageTypeSpecifier.
      */
-    public static ImageTypeSpecifier createPacked(ColorSpace colorSpace,
-                                                  int redMask,
-                                                  int greenMask,
-                                                  int blueMask,
-                                                  int alphaMask,
-                                                  int transferType,
-                                                  boolean isAlphaPremultiplied) {
+    public static ImageTypeSpecifier createPacked(ColorSpace colorSpace, int redMask,
+            int greenMask, int blueMask, int alphaMask, int transferType,
+            boolean isAlphaPremultiplied) {
         throw new UnsupportedOperationException("Not supported yet");
     }
 
     /**
-     * Creates an ImageTypeSpecifier with specified
-     * ComponentColorModel and a PixelInterleavedSampleModel.
+     * Creates an ImageTypeSpecifier with specified ComponentColorModel and a
+     * PixelInterleavedSampleModel.
      * 
-     * @param colorSpace the ColorSpace.
-     * @param bandOffsets the band offsets.
-     * @param dataType the data type.
-     * @param hasAlpha the parameter indicates if alpha channel
-     * is needed.
-     * @param isAlphaPremultiplied the parameter indicates
-     * if the color channel is premultiplied by alpha.
-     * 
+     * @param colorSpace
+     *            the ColorSpace.
+     * @param bandOffsets
+     *            the band offsets.
+     * @param dataType
+     *            the data type.
+     * @param hasAlpha
+     *            the parameter indicates if alpha channel is needed.
+     * @param isAlphaPremultiplied
+     *            the parameter indicates if the color channel is pre-multiplied
+     *            by alpha.
      * @return the ImageTypeSpecifier.
      */
-    public static ImageTypeSpecifier createInterleaved(ColorSpace colorSpace,
-                                                       int[] bandOffsets,
-                                                       int dataType,
-                                                       boolean hasAlpha,
-                                                       boolean isAlphaPremultiplied) {
+    public static ImageTypeSpecifier createInterleaved(ColorSpace colorSpace, int[] bandOffsets,
+            int dataType, boolean hasAlpha, boolean isAlphaPremultiplied) {
         throw new UnsupportedOperationException("Not supported yet");
     }
 
-
     /**
-     * Creates a ImageTypeSpecifier for a image with a 
-     * BandedSampleModel and a ComponentColorModel.
+     * Creates a ImageTypeSpecifier for a image with a BandedSampleModel and a
+     * ComponentColorModel.
      * 
-     * @param colorSpace the ColorSpace.
-     * @param bankIndices the bank indices.
-     * @param bandOffsets the band offsets.
-     * @param dataType the data type.
-     * @param hasAlpha the parameter indicates a presence of alpha channel.
-     * @param isAlphaPremultiplied the parameter indicates whether
-     * or not color channel is alpha premultiplied.
-     * 
+     * @param colorSpace
+     *            the ColorSpace.
+     * @param bankIndices
+     *            the bank indices.
+     * @param bandOffsets
+     *            the band offsets.
+     * @param dataType
+     *            the data type.
+     * @param hasAlpha
+     *            the parameter indicates a presence of alpha channel.
+     * @param isAlphaPremultiplied
+     *            the parameter indicates whether or not color channel is alpha
+     *            pre-multiplied.
      * @return the image type specifier
      */
-    public static ImageTypeSpecifier createBanded(ColorSpace colorSpace,
-                                                  int[] bankIndices,
-                                                  int[] bandOffsets,
-                                                  int dataType,
-                                                  boolean hasAlpha,
-                                                  boolean isAlphaPremultiplied) {
+    public static ImageTypeSpecifier createBanded(ColorSpace colorSpace, int[] bankIndices,
+            int[] bandOffsets, int dataType, boolean hasAlpha, boolean isAlphaPremultiplied) {
         throw new UnsupportedOperationException("Not supported yet");
     }
 
     /**
      * Creates a ImageTypeSpecifier for a grayscale image.
      * 
-     * @param bits the number of bits per gray value.
-     * @param dataType the data type.
-     * @param isSigned a signed flag.
-     * 
+     * @param bits
+     *            the number of bits per gray value.
+     * @param dataType
+     *            the data type.
+     * @param isSigned
+     *            a signed flag.
      * @return the ImageTypeSpecifier.
      */
-    public static ImageTypeSpecifier createGrayscale(int bits,
-                                                     int dataType,
-                                                     boolean isSigned) {
+    public static ImageTypeSpecifier createGrayscale(int bits, int dataType, boolean isSigned) {
         throw new UnsupportedOperationException("Not supported yet");
     }
 
     /**
      * Creates a ImageTypeSpecifier for a grayscale image.
      * 
-     * @param bits the number of bits per gray value.
-     * @param dataType the data type.
-     * @param isSigned a signed flag.
-     * @param isAlphaPremultiplied the parameter indicates
-     * if color channel is premultiplied by alpha, or not.
-     * 
+     * @param bits
+     *            the number of bits per gray value.
+     * @param dataType
+     *            the data type.
+     * @param isSigned
+     *            a signed flag.
+     * @param isAlphaPremultiplied
+     *            the parameter indicates if color channel is pre-multiplied by
+     *            alpha, or not.
      * @return the ImageTypeSpecifier.
      */
-    public static ImageTypeSpecifier createGrayscale(int bits,
-                                                     int dataType,
-                                                     boolean isSigned,
-                                                     boolean isAlphaPremultiplied) {
+    public static ImageTypeSpecifier createGrayscale(int bits, int dataType, boolean isSigned,
+            boolean isAlphaPremultiplied) {
         throw new UnsupportedOperationException("Not supported yet");
     }
 
     /**
      * Creates a ImageTypeSpecifier with the indexed image format.
      * 
-     * @param redLUT the red values of indecies.
-     * @param greenLUT the green values of indecies.
-     * @param blueLUT the blue values of indecies.
-     * @param alphaLUT the alpha values of indecies.
-     * @param bits the bits number for each index.
-     * @param dataType the data type.
-     * 
+     * @param redLUT
+     *            the red values of indices.
+     * @param greenLUT
+     *            the green values of indices.
+     * @param blueLUT
+     *            the blue values of indices.
+     * @param alphaLUT
+     *            the alpha values of indices.
+     * @param bits
+     *            the bits number for each index.
+     * @param dataType
+     *            the data type.
      * @return the ImageTypeSpecifier.
      */
-    public static ImageTypeSpecifier createIndexed(byte[] redLUT,
-                                                   byte[] greenLUT,
-                                                   byte[] blueLUT,
-                                                   byte[] alphaLUT,
-                                                   int bits,
-                                                   int dataType) {
+    public static ImageTypeSpecifier createIndexed(byte[] redLUT, byte[] greenLUT, byte[] blueLUT,
+            byte[] alphaLUT, int bits, int dataType) {
         throw new UnsupportedOperationException("Not supported yet");
     }
 
     /**
-     * Creates the ImageTypeSpecifier from 
-     * the specified buffered image type.
+     * Creates the ImageTypeSpecifier from the specified buffered image type.
      * 
-     * @param bufferedImageType the buffered image type.
-     * 
+     * @param bufferedImageType
+     *            the buffered image type.
      * @return the ImageTypeSpecifier.
      */
     public static ImageTypeSpecifier createFromBufferedImageType(int bufferedImageType) {
@@ -216,11 +224,10 @@
     }
 
     /**
-     * Creates the ImageTypeSpecifier from 
-     * the specified RenderedImage.
+     * Creates the ImageTypeSpecifier from the specified RenderedImage.
      * 
-     * @param image the RenderedImage.
-     * 
+     * @param image
+     *            the RenderedImage.
      * @return the ImageTypeSpecifier.
      */
     public static ImageTypeSpecifier createFromRenderedImage(RenderedImage image) {
@@ -242,7 +249,7 @@
     /**
      * Gets the number of components.
      * 
-     * @return the number of components
+     * @return the number of components.
      */
     public int getNumComponents() {
         return colorModel.getNumComponents();
@@ -251,7 +258,7 @@
     /**
      * Gets the number of bands.
      * 
-     * @return the number of bands
+     * @return the number of bands.
      */
     public int getNumBands() {
         return sampleModel.getNumBands();
@@ -260,8 +267,8 @@
     /**
      * Gets the number of bits per the specified band.
      * 
-     * @param band the index of band.
-     * 
+     * @param band
+     *            the index of band.
      * @return the number of bits per the specified band.
      */
     public int getBitsPerBand(int band) {
@@ -283,13 +290,14 @@
     /**
      * Gets a compatible SampleModel with the specified width and height.
      * 
-     * @param width the width.
-     * @param height the height.
-     * 
+     * @param width
+     *            the width.
+     * @param height
+     *            the height.
      * @return the SampleModel.
      */
     public SampleModel getSampleModel(int width, int height) {
-        if ((long)width*height > Integer.MAX_VALUE) {
+        if ((long)width * height > Integer.MAX_VALUE) {
             throw new IllegalArgumentException("width * height > Integer.MAX_VALUE");
         }
         return sampleModel.createCompatibleSampleModel(width, height);
@@ -298,20 +306,21 @@
     /**
      * Gets the ColorModel associated with this ImageTypeSpecifier.
      * 
-     * @return the ColorModel associated with this ImageTypeSpecifier. 
+     * @return the ColorModel associated with this ImageTypeSpecifier.
      */
     public ColorModel getColorModel() {
         return colorModel;
     }
 
     /**
-     * Creates the BufferedImage with the specified width and height 
-     * and the ColorMadel and SampleModel which are specified by this 
+     * Creates the BufferedImage with the specified width and height and the
+     * ColorMadel and SampleModel which are specified by this
      * ImageTypeSpecifier.
      * 
-     * @param width the width of the BufferedImage.
-     * @param height the height of the BufferedImage.
-     * 
+     * @param width
+     *            the width of the BufferedImage.
+     * @param height
+     *            the height of the BufferedImage.
      * @return the BufferedImage.
      */
     public BufferedImage createBufferedImage(int width, int height) {
@@ -319,19 +328,18 @@
     }
 
     /**
-     * Compares this ImageTypeSpecifier object with the specified 
-     * object.
+     * Compares this ImageTypeSpecifier object with the specified object.
      * 
-     * @param o the Object to be compared.
-     * 
-     * @return true, if the object is an ImageTypeSpecifier with the same
-     * data as this ImageTypeSpecifier, false otherwise.
+     * @param o
+     *            the Object to be compared.
+     * @return true, if the object is an ImageTypeSpecifier with the same data
+     *         as this ImageTypeSpecifier, false otherwise.
      */
     @Override
     public boolean equals(Object o) {
         boolean rt = false;
         if (o instanceof ImageTypeSpecifier) {
-            ImageTypeSpecifier ts = (ImageTypeSpecifier) o;
+            ImageTypeSpecifier ts = (ImageTypeSpecifier)o;
             rt = colorModel.equals(ts.colorModel) && sampleModel.equals(ts.sampleModel);
         }
         return rt;
diff --git a/awt/javax/imageio/ImageWriteParam.java b/awt/javax/imageio/ImageWriteParam.java
index d32fa59..d661889 100644
--- a/awt/javax/imageio/ImageWriteParam.java
+++ b/awt/javax/imageio/ImageWriteParam.java
@@ -18,103 +18,141 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio;
 
 import java.util.Locale;
 import java.awt.*;
 
 /**
- * The ImageWriteParam class provides information to an ImageWriter 
- * about how an image is to be encoded.
+ * The ImageWriteParam class provides information to an ImageWriter about how an
+ * image is to be encoded.
+ * 
+ * @since Android 1.0
  */
 public class ImageWriteParam extends IIOParam {
 
-    /** 
-     * The Constant MODE_DISABLED indicates that 
-     * stream is not tiled, progressive, or compressed.
+    /**
+     * The Constant MODE_DISABLED indicates that stream is not tiled,
+     * progressive, or compressed.
      */
     public static final int MODE_DISABLED = 0;
-    
-    /** 
-     * The Constant MODE_DEFAULT indicates that the stream will be tiled, 
-     * progressive, or compressed according to the plug-in's default. 
+
+    /**
+     * The Constant MODE_DEFAULT indicates that the stream will be tiled,
+     * progressive, or compressed according to the plug-in's default.
      */
     public static final int MODE_DEFAULT = 1;
-    
-    /** 
+
+    /**
      * The Constant MODE_EXPLICIT indicates that the stream will be tiled,
-     * progressive, or compressed according to current settings
-     * which are defined by set methods. 
+     * progressive, or compressed according to current settings which are
+     * defined by set methods.
      */
     public static final int MODE_EXPLICIT = 2;
-    
-    /** 
-     * The Constant MODE_COPY_FROM_METADATA indicates that the stream
-     * will be tiled, progressive, or compressed according to
-     * stream or image metadata. 
+
+    /**
+     * The Constant MODE_COPY_FROM_METADATA indicates that the stream will be
+     * tiled, progressive, or compressed according to stream or image metadata.
      */
     public static final int MODE_COPY_FROM_METADATA = 3;
-    
-    /** Whether the ImageWriter can write tiles. */
+
+    /**
+     * Whether the ImageWriter can write tiles.
+     */
     protected boolean canWriteTiles = false;
-    
-    /** The tiling mode. */
+
+    /**
+     * The tiling mode.
+     */
     protected int tilingMode = MODE_COPY_FROM_METADATA;
-    
-    /** The preferred tile sizes. */
+
+    /**
+     * The preferred tile sizes.
+     */
     protected Dimension[] preferredTileSizes = null;
-    
-    /** The tiling set. */
+
+    /**
+     * The tiling set.
+     */
     protected boolean tilingSet = false;
-    
-    /** The tile width. */
+
+    /**
+     * The tile width.
+     */
     protected int tileWidth = 0;
-    
-    /** The tile height. */
+
+    /**
+     * The tile height.
+     */
     protected int tileHeight = 0;
-    
-    /** Whether the ImageWriter can offset tiles. */
+
+    /**
+     * Whether the ImageWriter can offset tiles.
+     */
     protected boolean canOffsetTiles = false;
-    
-    /** The tile grid x offset. */
+
+    /**
+     * The tile grid x offset.
+     */
     protected int tileGridXOffset = 0;
-    
-    /** The tile grid y offset. */
+
+    /**
+     * The tile grid y offset.
+     */
     protected int tileGridYOffset = 0;
-    
-    /** Whether the ImageWriter can write in progressive mode. */
+
+    /**
+     * Whether the ImageWriter can write in progressive mode.
+     */
     protected boolean canWriteProgressive = false;
-    
-    /** The progressive mode. */
+
+    /**
+     * The progressive mode.
+     */
     protected int progressiveMode = MODE_COPY_FROM_METADATA;
-    
-    /** Whether the ImageWriter can write in compressed mode. */
+
+    /**
+     * Whether the ImageWriter can write in compressed mode.
+     */
     protected boolean canWriteCompressed = false;
-    
-    /** The compression mode. */
+
+    /**
+     * The compression mode.
+     */
     protected int compressionMode = MODE_COPY_FROM_METADATA;
-    
-    /** The compression types. */
+
+    /**
+     * The compression types.
+     */
     protected String[] compressionTypes = null;
-    
-    /** The compression type. */
+
+    /**
+     * The compression type.
+     */
     protected String compressionType = null;
-    
-    /** The compression quality. */
+
+    /**
+     * The compression quality.
+     */
     protected float compressionQuality = 1.0f;
-    
-    /** The locale. */
+
+    /**
+     * The locale.
+     */
     protected Locale locale = null;
 
     /**
      * Instantiates a new ImageWriteParam.
      */
-    protected ImageWriteParam() {}
+    protected ImageWriteParam() {
+    }
 
     /**
      * Instantiates a new ImageWriteParam with the specified Locale.
      * 
-     * @param locale the Locale.
+     * @param locale
+     *            the Locale.
      */
     public ImageWriteParam(Locale locale) {
         this.locale = locale;
@@ -122,7 +160,7 @@
     }
 
     /**
-     * Gets the mode for writing the stream in a progressive sequence. 
+     * Gets the mode for writing the stream in a progressive sequence.
      * 
      * @return the current progressive mode.
      */
@@ -134,24 +172,24 @@
     }
 
     /**
-     * Returns true if images can be written using 
-     * increasing quality passes by progressive.  
+     * Returns true if images can be written using increasing quality passes by
+     * progressive.
      * 
-     * @return true if images can be written using 
-     * increasing quality passes by progressive, false otherwise.
+     * @return true if images can be written using increasing quality passes by
+     *         progressive, false otherwise.
      */
     public boolean canWriteProgressive() {
         return canWriteProgressive;
     }
 
     /**
-     * Sets the progressive mode which defines whether the stream 
-     * contains a progressive sequence of increasing quality
-     * during writing. The progressive mode should be one of
-     * the following values: MODE_DISABLED, MODE_DEFAULT, or
-     * MODE_COPY_FROM_METADATA.
+     * Sets the progressive mode which defines whether the stream contains a
+     * progressive sequence of increasing quality during writing. The
+     * progressive mode should be one of the following values: MODE_DISABLED,
+     * MODE_DEFAULT, or MODE_COPY_FROM_METADATA.
      * 
-     * @param mode the new progressive mode.
+     * @param mode
+     *            the new progressive mode.
      */
     public void setProgressiveMode(int mode) {
         if (canWriteProgressive()) {
@@ -164,22 +202,21 @@
     }
 
     /**
-     * Returns true if the writer can use tiles with non zero 
-     * grid offsets while writing. 
+     * Returns true if the writer can use tiles with non zero grid offsets while
+     * writing.
      * 
-     * @return true if the writer can use tiles with non zero 
-     * grid offsets while writing, false otherwise.
+     * @return true, if the writer can use tiles with non zero grid offsets
+     *         while writing, false otherwise.
      */
     public boolean canOffsetTiles() {
         return canOffsetTiles;
     }
 
     /**
-     * Returns true if this writer can write images with 
-     * compression.  
+     * Returns true if this writer can write images with compression.
      * 
-     * @return true, true if this writer can write images with 
-     * compression, false otherwise.
+     * @return true, if this writer can write images with compression, false
+     *         otherwise.
      */
     public boolean canWriteCompressed() {
         return canWriteCompressed;
@@ -188,7 +225,7 @@
     /**
      * Returns true if the writer can write tiles.
      * 
-     * @return true if the writer can write tiles, false otherwise.
+     * @return true, if the writer can write tiles, false otherwise.
      */
     public boolean canWriteTiles() {
         return canWriteTiles;
@@ -247,8 +284,7 @@
     /**
      * Gets the current compression type, or returns null.
      * 
-     * @return the current compression type, or returns null 
-     * if it is not set.
+     * @return the current compression type, or returns null if it is not set.
      */
     public String getCompressionType() {
         checkWriteCompressed();
@@ -257,14 +293,12 @@
     }
 
     /**
-     * Gets a bit rate which represents an estimate of the number of bits 
-     * of output data for each bit of input image data with the specified 
-     * quality.
+     * Gets a bit rate which represents an estimate of the number of bits of
+     * output data for each bit of input image data with the specified quality.
      * 
-     * @param quality the quality.
-     * 
-     * @return an estimate of the bit rate, or -1.0F if there is no 
-     * estimate. 
+     * @param quality
+     *            the quality.
+     * @return an estimate of the bit rate, or -1.0F if there is no estimate.
      */
     public float getBitRate(float quality) {
         checkWriteCompressed();
@@ -301,8 +335,7 @@
     }
 
     /**
-     * Gets an array of floats which decribe 
-     * compression quality levels. 
+     * Gets an array of floats which describes compression quality levels.
      * 
      * @return the array of compression quality values.
      */
@@ -323,7 +356,7 @@
     }
 
     /**
-     * Gets the current compression type using the current Locale. 
+     * Gets the current compression type using the current Locale.
      * 
      * @return the current compression type using the current Locale.
      */
@@ -377,8 +410,8 @@
     }
 
     /**
-     * Gets an array of Dimensions giving the sizes of the tiles as 
-     * they are encoded in the output file or stream. 
+     * Gets an array of Dimensions giving the sizes of the tiles as they are
+     * encoded in the output file or stream.
      * 
      * @return the preferred tile sizes.
      */
@@ -420,11 +453,10 @@
     }
 
     /**
-     * Gets the tile height in an image as it is written to the 
-     * output stream.
+     * Gets the tile height in an image as it is written to the output stream.
      * 
-     * @return the tile height in an image as it is written to the 
-     * output stream.
+     * @return the tile height in an image as it is written to the output
+     *         stream.
      */
     public int getTileHeight() {
         checkTiling();
@@ -434,11 +466,9 @@
     }
 
     /**
-     * Gets the tile width in an image as it is written to the 
-     * output stream.
+     * Gets the tile width in an image as it is written to the output stream.
      * 
-     * @return the tile width in an image as it is written to the 
-     * output stream.
+     * @return the tile width in an image as it is written to the output stream.
      */
     public int getTileWidth() {
         checkTiling();
@@ -448,11 +478,10 @@
     }
 
     /**
-     * Checks if the current compression type has lossless 
-     * compression or not. 
+     * Checks if the current compression type has lossless compression or not.
      * 
-     * @return true, if the current compression type has lossless 
-     * compression, false otherwise.
+     * @return true, if the current compression type has lossless compression,
+     *         false otherwise.
      */
     public boolean isCompressionLossless() {
         checkWriteCompressed();
@@ -472,12 +501,12 @@
     }
 
     /**
-     * Sets the compression mode to the specified value.
-     * The specified mode can be one of the predefined
-     * constants: MODE_DEFAULT, MODE_DISABLED, MODE_EXPLICIT, 
-     * or MODE_COPY_FROM_METADATA.
-     *  
-     * @param mode the new compression mode to be set.
+     * Sets the compression mode to the specified value. The specified mode can
+     * be one of the predefined constants: MODE_DEFAULT, MODE_DISABLED,
+     * MODE_EXPLICIT, or MODE_COPY_FROM_METADATA.
+     * 
+     * @param mode
+     *            the new compression mode to be set.
      */
     public void setCompressionMode(int mode) {
         checkWriteCompressed();
@@ -502,8 +531,8 @@
     /**
      * Sets the compression quality. The value should be between 0 and 1.
      * 
-     * @param quality the new compression quality, 
-     * float value between 0 and 1. 
+     * @param quality
+     *            the new compression quality, float value between 0 and 1.
      */
     public void setCompressionQuality(float quality) {
         checkWriteCompressed();
@@ -516,11 +545,11 @@
     }
 
     /**
-     * Sets the compression type. The specified string
-     * should be one of the values returned 
-     * by getCompressionTypes method.
+     * Sets the compression type. The specified string should be one of the
+     * values returned by getCompressionTypes method.
      * 
-     * @param compressionType the new compression type.
+     * @param compressionType
+     *            the new compression type.
      */
     public void setCompressionType(String compressionType) {
         checkWriteCompressed();
@@ -547,13 +576,17 @@
     }
 
     /**
-     * Sets the instruction that tiling should be performed for 
-     * the image in the output stream with the specified parameters. 
+     * Sets the instruction that tiling should be performed for the image in the
+     * output stream with the specified parameters.
      * 
-     * @param tileWidth the tile's width.
-     * @param tileHeight the tile's height.
-     * @param tileGridXOffset the tile grid's x offset.
-     * @param tileGridYOffset the tile grid's y offset.
+     * @param tileWidth
+     *            the tile's width.
+     * @param tileHeight
+     *            the tile's height.
+     * @param tileGridXOffset
+     *            the tile grid's x offset.
+     * @param tileGridYOffset
+     *            the tile grid's y offset.
      */
     public void setTiling(int tileWidth, int tileHeight, int tileGridXOffset, int tileGridYOffset) {
         checkTiling();
@@ -563,19 +596,17 @@
             throw new UnsupportedOperationException("Can't offset tiles!");
         }
 
-        if (tileWidth <=0 || tileHeight <= 0) {
+        if (tileWidth <= 0 || tileHeight <= 0) {
             throw new IllegalArgumentException("tile dimensions are non-positive!");
         }
 
         Dimension preferredTileSizes[] = getPreferredTileSizes();
         if (preferredTileSizes != null) {
-            for (int i = 0; i < preferredTileSizes.length; i+=2) {
+            for (int i = 0; i < preferredTileSizes.length; i += 2) {
                 Dimension minSize = preferredTileSizes[i];
-                Dimension maxSize = preferredTileSizes[i+1];
-                if (
-                        tileWidth < minSize.width || tileWidth > maxSize.width ||
-                        tileHeight < minSize.height || tileHeight > maxSize.height
-                ) {
+                Dimension maxSize = preferredTileSizes[i + 1];
+                if (tileWidth < minSize.width || tileWidth > maxSize.width
+                        || tileHeight < minSize.height || tileHeight > maxSize.height) {
                     throw new IllegalArgumentException("Illegal tile size!");
                 }
             }
@@ -603,11 +634,12 @@
     }
 
     /**
-     * Sets the tiling mode. The specified mode should be one of the 
-     * following values: MODE_DISABLED, MODE_DEFAULT, MODE_EXPLICIT,
-     * or MODE_COPY_FROM_METADATA.
+     * Sets the tiling mode. The specified mode should be one of the following
+     * values: MODE_DISABLED, MODE_DEFAULT, MODE_EXPLICIT, or
+     * MODE_COPY_FROM_METADATA.
      * 
-     * @param mode the new tiling mode.
+     * @param mode
+     *            the new tiling mode.
      */
     public void setTilingMode(int mode) {
         checkTiling();
@@ -630,4 +662,3 @@
         }
     }
 }
-
diff --git a/awt/javax/imageio/ImageWriter.java b/awt/javax/imageio/ImageWriter.java
index d6119b0..86879e0 100644
--- a/awt/javax/imageio/ImageWriter.java
+++ b/awt/javax/imageio/ImageWriter.java
@@ -18,6 +18,7 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio;
 
 import java.awt.Dimension;
@@ -40,34 +41,49 @@
 import javax.imageio.spi.ImageWriterSpi;
 
 /**
- * The ImageWriter class is an abstract class for encoding images.
- * ImageWriter objects are instantiated by the service provider 
- * interface, ImageWriterSpi class, for the specific format. 
- * ImageWriterSpi class should be registered with the IIORegistry, 
- * which uses them for format recognition and presentation of available 
- * format readers and writers.
+ * The ImageWriter class is an abstract class for encoding images. ImageWriter
+ * objects are instantiated by the service provider interface, ImageWriterSpi
+ * class, for the specific format. ImageWriterSpi class should be registered
+ * with the IIORegistry, which uses them for format recognition and presentation
+ * of available format readers and writers.
+ * 
+ * @since Android 1.0
  */
 public abstract class ImageWriter implements ImageTranscoder {
 
-    /** The available locales. */
+    /**
+     * The available locales.
+     */
     protected Locale[] availableLocales;
-    
-    /** The locale. */
+
+    /**
+     * The locale.
+     */
     protected Locale locale;
-    
-    /** The originating provider. */
+
+    /**
+     * The originating provider.
+     */
     protected ImageWriterSpi originatingProvider;
-    
-    /** The output. */
+
+    /**
+     * The output.
+     */
     protected Object output;
-    
-    /** The progress listeners. */
+
+    /**
+     * The progress listeners.
+     */
     protected List<IIOWriteProgressListener> progressListeners;
-    
-    /** The warning listeners. */
+
+    /**
+     * The warning listeners.
+     */
     protected List<IIOWriteWarningListener> warningListeners;
-    
-    /** The warning locales. */
+
+    /**
+     * The warning locales.
+     */
     protected List<Locale> warningLocales;
 
     // Indicates that abort operation is requested
@@ -78,22 +94,21 @@
     /**
      * Instantiates a new ImageWriter.
      * 
-     * @param originatingProvider the ImageWriterSpi which 
-     * instanties this ImageWriter.
+     * @param originatingProvider
+     *            the ImageWriterSpi which instantiates this ImageWriter.
      */
     protected ImageWriter(ImageWriterSpi originatingProvider) {
         this.originatingProvider = originatingProvider;
     }
 
     public abstract IIOMetadata convertStreamMetadata(IIOMetadata iioMetadata,
-                                             ImageWriteParam imageWriteParam);
+            ImageWriteParam imageWriteParam);
 
     public abstract IIOMetadata convertImageMetadata(IIOMetadata iioMetadata,
-                                            ImageTypeSpecifier imageTypeSpecifier,
-                                            ImageWriteParam imageWriteParam);
+            ImageTypeSpecifier imageTypeSpecifier, ImageWriteParam imageWriteParam);
 
     /**
-     * Gets the ImageWriterSpi which instantiated this ImageWriter. 
+     * Gets the ImageWriterSpi which instantiated this ImageWriter.
      * 
      * @return the ImageWriterSpi.
      */
@@ -102,10 +117,11 @@
     }
 
     /**
-     * Processes the start of an image read by calling their imageStarted
-     * method of registered IIOWriteProgressListeners.
+     * Processes the start of an image read by calling their imageStarted method
+     * of registered IIOWriteProgressListeners.
      * 
-     * @param imageIndex the image index.
+     * @param imageIndex
+     *            the image index.
      */
     protected void processImageStarted(int imageIndex) {
         if (null != progressListeners) {
@@ -116,10 +132,11 @@
     }
 
     /**
-     * Processes the current percentage of image completion by calling 
+     * Processes the current percentage of image completion by calling
      * imageProgress method of registered IIOWriteProgressListener.
      * 
-     * @param percentageDone the percentage done.
+     * @param percentageDone
+     *            the percentage done.
      */
     protected void processImageProgress(float percentageDone) {
         if (null != progressListeners) {
@@ -130,8 +147,8 @@
     }
 
     /**
-     * Processes image completion by calling imageComplete method
-     * of registered IIOWriteProgressListeners. 
+     * Processes image completion by calling imageComplete method of registered
+     * IIOWriteProgressListeners.
      */
     protected void processImageComplete() {
         if (null != progressListeners) {
@@ -142,11 +159,13 @@
     }
 
     /**
-     * Processes a warning message by calling warningOccurred method
-     * of registered IIOWriteWarningListeners.
+     * Processes a warning message by calling warningOccurred method of
+     * registered IIOWriteWarningListeners.
      * 
-     * @param imageIndex the image index.
-     * @param warning the warning.
+     * @param imageIndex
+     *            the image index.
+     * @param warning
+     *            the warning.
      */
     protected void processWarningOccurred(int imageIndex, String warning) {
         if (null == warning) {
@@ -160,13 +179,15 @@
     }
 
     /**
-     * Processes a warning message by calling warningOccurred method
-     * of registered IIOWriteWarningListeners with string from 
-     * ResourceBundle.
+     * Processes a warning message by calling warningOccurred method of
+     * registered IIOWriteWarningListeners with string from ResourceBundle.
      * 
-     * @param imageIndex the image index.
-     * @param bundle the name of ResourceBundle.
-     * @param key the keyword.
+     * @param imageIndex
+     *            the image index.
+     * @param bundle
+     *            the name of ResourceBundle.
+     * @param key
+     *            the keyword.
      */
     protected void processWarningOccurred(int imageIndex, String bundle, String key) {
         if (warningListeners != null) { // Don't check the parameters
@@ -180,17 +201,18 @@
             throw new IllegalArgumentException("keyword == null!");
         }
 
-        // Get the context class loader and try to locate the bundle with it first
-        ClassLoader contextClassloader = AccessController.doPrivileged(
-                new PrivilegedAction<ClassLoader>() {
+        // Get the context class loader and try to locate the bundle with it
+        // first
+        ClassLoader contextClassloader = AccessController
+                .doPrivileged(new PrivilegedAction<ClassLoader>() {
                     public ClassLoader run() {
                         return Thread.currentThread().getContextClassLoader();
                     }
-        });
+                });
 
         // Iterate through both listeners and locales
         int n = warningListeners.size();
-        for (int i=0; i < n; i++) {
+        for (int i = 0; i < n; i++) {
             IIOWriteWarningListener listener = warningListeners.get(i);
             Locale locale = warningLocales.get(i);
 
@@ -218,10 +240,11 @@
     }
 
     /**
-     * Sets the specified Object to the output of this ImageWriter. 
+     * Sets the specified Object to the output of this ImageWriter.
      * 
-     * @param output the Object which represents destination, it can 
-     * be ImageOutputStream or other objects.
+     * @param output
+     *            the Object which represents destination, it can be
+     *            ImageOutputStream or other objects.
      */
     public void setOutput(Object output) {
         if (output != null) {
@@ -244,26 +267,26 @@
     }
 
     /**
-     * Writes a completed image stream that contains the specified image, 
+     * Writes a completed image stream that contains the specified image,
      * default metadata, and thumbnails to the output.
      * 
-     * @param image the specified image to be written.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred
-     * during writting.
+     * @param image
+     *            the specified image to be written.
+     * @throws IOException
+     *             if an I/O exception has occurred during writing.
      */
     public void write(IIOImage image) throws IOException {
         write(null, image, null);
     }
 
     /**
-     * Writes a completed image stream that contains the specified 
-     * rendered image, default metadata, and thumbnails to the output.
+     * Writes a completed image stream that contains the specified rendered
+     * image, default metadata, and thumbnails to the output.
      * 
-     * @param image the specified RenderedImage to be written.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred
-     * during writting.
+     * @param image
+     *            the specified RenderedImage to be written.
+     * @throws IOException
+     *             if an I/O exception has occurred during writing.
      */
     public void write(RenderedImage image) throws IOException {
         write(null, new IIOImage(image, null, null), null);
@@ -273,16 +296,18 @@
      * Writes a completed image stream that contains the specified image,
      * metadata and thumbnails to the output.
      * 
-     * @param streamMetadata the stream metadata, or null.
-     * @param image the specified image to be written, if
-     * canWriteRaster() method returns false, then Image must contain 
-     * only RenderedImage.
-     * @param param the ImageWriteParam, or null.
-     * 
-     * @throws IOException - if an error occurs during writing.
+     * @param streamMetadata
+     *            the stream metadata, or null.
+     * @param image
+     *            the specified image to be written, if canWriteRaster() method
+     *            returns false, then Image must contain only RenderedImage.
+     * @param param
+     *            the ImageWriteParam, or null.
+     * @throws IOException
+     *             if an error occurs during writing.
      */
-    public abstract void write(IIOMetadata streamMetadata,
-                               IIOImage image, ImageWriteParam param) throws IOException;
+    public abstract void write(IIOMetadata streamMetadata, IIOImage image, ImageWriteParam param)
+            throws IOException;
 
     /**
      * Disposes of any resources.
@@ -292,26 +317,26 @@
     }
 
     /**
-     * Requests an abort operation for current writing operation. 
+     * Requests an abort operation for current writing operation.
      */
     public synchronized void abort() {
         aborted = true;
     }
 
     /**
-     * Checks whether or not a request to abort the current write operation 
-     * has been made successfully.
+     * Checks whether or not a request to abort the current write operation has
+     * been made successfully.
      * 
-     * @return true, if the request to abort the current write operation 
-     * has been made successfully, false otherwise.
+     * @return true, if the request to abort the current write operation has
+     *         been made successfully, false otherwise.
      */
     protected synchronized boolean abortRequested() {
         return aborted;
     }
 
     /**
-     * Clears all previous abort request, and abortRequested returns false
-     * after calling this method.
+     * Clears all previous abort request, and abortRequested returns false after
+     * calling this method.
      */
     protected synchronized void clearAbortRequest() {
         aborted = false;
@@ -320,7 +345,8 @@
     /**
      * Adds the IIOWriteProgressListener listener.
      * 
-     * @param listener the IIOWriteProgressListener listener.
+     * @param listener
+     *            the IIOWriteProgressListener listener.
      */
     public void addIIOWriteProgressListener(IIOWriteProgressListener listener) {
         if (listener == null) {
@@ -337,7 +363,8 @@
     /**
      * Adds the IIOWriteWarningListener.
      * 
-     * @param listener the IIOWriteWarningListener listener.
+     * @param listener
+     *            the IIOWriteWarningListener listener.
      */
     public void addIIOWriteWarningListener(IIOWriteWarningListener listener) {
         if (listener == null) {
@@ -356,8 +383,8 @@
     /**
      * Gets the output object that was set by setOutput method.
      * 
-     * @return the output object such as ImageOutputStream, or null if
-     * it is not set.
+     * @return the output object such as ImageOutputStream, or null if it is not
+     *         set.
      */
     public Object getOutput() {
         return output;
@@ -366,7 +393,7 @@
     /**
      * Check output return false.
      * 
-     * @return true, if successful
+     * @return true, if successful.
      */
     private final boolean checkOutputReturnFalse() {
         if (getOutput() == null) {
@@ -385,124 +412,122 @@
         throw new UnsupportedOperationException("Unsupported write variant!");
     }
 
-
     /**
-     * Returns true if a new empty image can be inserted at 
-     * the specified index. 
+     * Returns true if a new empty image can be inserted at the specified index.
      * 
-     * @param imageIndex the specified index of image.
-     * 
-     * @return true if a new empty image can be inserted at 
-     * the specified index, false otherwise.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param imageIndex
+     *            the specified index of image.
+     * @return true if a new empty image can be inserted at the specified index,
+     *         false otherwise.
+     * @throws IOException
+     *             Signals that an I/O exception has occurred.
      */
     public boolean canInsertEmpty(int imageIndex) throws IOException {
         return checkOutputReturnFalse();
     }
 
     /**
-     * Returns true if a new image can be inserted at the specified index. 
+     * Returns true if a new image can be inserted at the specified index.
      * 
-     * @param imageIndex the specified index of image.
-     * 
-     * @return true if a new image can be inserted at the specified index, 
-     * false otherwise.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param imageIndex
+     *            the specified index of image.
+     * @return true if a new image can be inserted at the specified index, false
+     *         otherwise.
+     * @throws IOException
+     *             Signals that an I/O exception has occurred.
      */
     public boolean canInsertImage(int imageIndex) throws IOException {
         return checkOutputReturnFalse();
     }
 
     /**
-     * Returnes true if the image with the specified index can be removed.
+     * Returns true if the image with the specified index can be removed.
      * 
-     * @param imageIndex the specified index of image.
-     * 
-     * @return true if the image with the specified index can be removed,
-     * false otherwise.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param imageIndex
+     *            the specified index of image.
+     * @return true if the image with the specified index can be removed, false
+     *         otherwise.
+     * @throws IOException
+     *             Signals that an I/O exception has occurred.
      */
     public boolean canRemoveImage(int imageIndex) throws IOException {
         return checkOutputReturnFalse();
     }
 
     /**
-     * Returns true if metadata of the image with the specified index
-     * can be replaced.
+     * Returns true if metadata of the image with the specified index can be
+     * replaced.
      * 
-     * @param imageIndex the specified image index.
-     * 
-     * @return true if metadata of the image with the specified index
-     * can be replaced, false otherwise.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param imageIndex
+     *            the specified image index.
+     * @return true if metadata of the image with the specified index can be
+     *         replaced, false otherwise.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public boolean canReplaceImageMetadata(int imageIndex) throws IOException {
         return checkOutputReturnFalse();
     }
 
     /**
-     * Returns true if pixels of the image with the specified index 
-     * can be replaced by the replacePixels  methods.
+     * Returns true if pixels of the image with the specified index can be
+     * replaced by the replacePixels methods.
      * 
-     * @param imageIndex the image's index.
-     * 
-     * @return true if pixels of the image with the specified index 
-     * can be replaced by the replacePixels  methods, false otherwise.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param imageIndex
+     *            the image's index.
+     * @return true if pixels of the image with the specified index can be
+     *         replaced by the replacePixels methods, false otherwise.
+     * @throws IOException
+     *             Signals that an I/O exception has occurred.
      */
     public boolean canReplacePixels(int imageIndex) throws IOException {
         return checkOutputReturnFalse();
     }
 
     /**
-     * Returns true if the stream metadata presented in the output
-     * can be removed.
+     * Returns true if the stream metadata presented in the output can be
+     * removed.
      * 
-     * @return true if the stream metadata presented in the output
-     * can be removed, false otherwise.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @return true if the stream metadata presented in the output can be
+     *         removed, false otherwise.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public boolean canReplaceStreamMetadata() throws IOException {
         return checkOutputReturnFalse();
     }
 
     /**
-     * Returns true if the writing of a complete image stream which
-     * contains a single image is supported with undefined pixel 
-     * values and associated metadata and thumbnails to the output. 
+     * Returns true if the writing of a complete image stream which contains a
+     * single image is supported with undefined pixel values and associated
+     * metadata and thumbnails to the output.
      * 
-     * @return true if the writing of a complete image stream which
-     * contains a single image is supported, false otherwise.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @return true if the writing of a complete image stream which contains a
+     *         single image is supported, false otherwise.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public boolean canWriteEmpty() throws IOException {
         return checkOutputReturnFalse();
     }
 
     /**
-     * Returns true if the methods which taken an IIOImageParameter 
-     * can deal with a Raster source image.
+     * Returns true if the methods which taken an IIOImageParameter can deal
+     * with a Raster source image.
      * 
-     * @return true if the methods which taken an IIOImageParameter 
-     * can deal with a Raster source image, false otherwise.
+     * @return true if the methods which taken an IIOImageParameter can deal
+     *         with a Raster source image, false otherwise.
      */
     public boolean canWriteRasters() {
         return false;
     }
 
     /**
-     * Returns true if the writer can add an image to stream that
-     * already contains header information.
+     * Returns true if the writer can add an image to stream that already
+     * contains header information.
      * 
-     * @return if the writer can add an image to stream that
-     * already contains header information, false otherwise.
+     * @return if the writer can add an image to stream that already contains
+     *         header information, false otherwise.
      */
     public boolean canWriteSequence() {
         return false;
@@ -511,16 +536,18 @@
     /**
      * Ends the insertion of a new image.
      * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public void endInsertEmpty() throws IOException {
         unsupportedOperation();
     }
 
     /**
-     * Ends the repalce pixels operation.
+     * Ends the replace pixels operation.
      * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public void endReplacePixels() throws IOException {
         unsupportedOperation();
@@ -529,7 +556,8 @@
     /**
      * Ends an empty write operation.
      * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public void endWriteEmpty() throws IOException {
         unsupportedOperation();
@@ -538,7 +566,8 @@
     /**
      * Ends the sequence of write operations.
      * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public void endWriteSequence() throws IOException {
         unsupportedOperation();
@@ -558,25 +587,24 @@
     }
 
     /**
-     * Gets an IIOMetadata object that contains default values 
-     * for encoding an image with the specified type. 
+     * Gets an IIOMetadata object that contains default values for encoding an
+     * image with the specified type.
      * 
-     * @param imageType the ImageTypeSpecifier.
-     * @param param the ImageWriteParam.
-     * 
+     * @param imageType
+     *            the ImageTypeSpecifier.
+     * @param param
+     *            the ImageWriteParam.
      * @return the IIOMetadata object.
      */
-    public abstract IIOMetadata getDefaultImageMetadata(
-            ImageTypeSpecifier imageType,
-            ImageWriteParam param
-    );
+    public abstract IIOMetadata getDefaultImageMetadata(ImageTypeSpecifier imageType,
+            ImageWriteParam param);
 
     /**
-     * Gets an IIOMetadata object that contains default values 
-     * for encoding a stream of images.
+     * Gets an IIOMetadata object that contains default values for encoding a
+     * stream of images.
      * 
-     * @param param the ImageWriteParam.
-     * 
+     * @param param
+     *            the ImageWriteParam.
      * @return the IIOMetadata object.
      */
     public abstract IIOMetadata getDefaultStreamMetadata(ImageWriteParam param);
@@ -591,9 +619,8 @@
     }
 
     /**
-     * Gets the default write param.
-     * Gets a new ImageWriteParam object for this ImageWriter with the
-     * current Locale.
+     * Gets the default write param. Gets a new ImageWriteParam object for this
+     * ImageWriter with the current Locale.
      * 
      * @return a new ImageWriteParam object for this ImageWriter.
      */
@@ -602,124 +629,131 @@
     }
 
     /**
-     * Gets the number of thumbnails suported by the format 
-     * being written with supported image type, image write 
-     * parameters, stream, and image metadata objects.
+     * Gets the number of thumbnails supported by the format being written with
+     * supported image type, image write parameters, stream, and image metadata
+     * objects.
      * 
-     * @param imageType the ImageTypeSpecifier.
-     * @param param the image's parameters.
-     * @param streamMetadata the stream metadata.
-     * @param imageMetadata the image metadata.
-     * 
-     * @return the number of thumbnails supported
+     * @param imageType
+     *            the ImageTypeSpecifier.
+     * @param param
+     *            the image's parameters.
+     * @param streamMetadata
+     *            the stream metadata.
+     * @param imageMetadata
+     *            the image metadata.
+     * @return the number of thumbnails supported.
      */
-    public int getNumThumbnailsSupported(
-            ImageTypeSpecifier imageType,
-            ImageWriteParam param,
-            IIOMetadata streamMetadata,
-            IIOMetadata imageMetadata
-    ) {
+    public int getNumThumbnailsSupported(ImageTypeSpecifier imageType, ImageWriteParam param,
+            IIOMetadata streamMetadata, IIOMetadata imageMetadata) {
         return 0;
     }
 
     /**
-     * Gets the preferred thumbnail sizes.
-     * Gets an array of Dimensions with the sizes for thumbnail images 
-     * as they are encoded in the output file or stream. 
+     * Gets the preferred thumbnail sizes. Gets an array of Dimensions with the
+     * sizes for thumbnail images as they are encoded in the output file or
+     * stream.
      * 
-     * @param imageType the ImageTypeSpecifier.
-     * @param param the ImageWriteParam.
-     * @param streamMetadata the stream metadata.
-     * @param imageMetadata the image metadata.
-     * 
-     * @return the preferred thumbnail sizes
+     * @param imageType
+     *            the ImageTypeSpecifier.
+     * @param param
+     *            the ImageWriteParam.
+     * @param streamMetadata
+     *            the stream metadata.
+     * @param imageMetadata
+     *            the image metadata.
+     * @return the preferred thumbnail sizes.
      */
-    public Dimension[] getPreferredThumbnailSizes(
-            ImageTypeSpecifier imageType,
-            ImageWriteParam param,
-            IIOMetadata streamMetadata,
-            IIOMetadata imageMetadata
-    ) {
+    public Dimension[] getPreferredThumbnailSizes(ImageTypeSpecifier imageType,
+            ImageWriteParam param, IIOMetadata streamMetadata, IIOMetadata imageMetadata) {
         return null;
     }
 
     /**
-     * Prepares insertion of an empty image by requesting the insertion of 
-     * a new image into an existing image stream.
+     * Prepares insertion of an empty image by requesting the insertion of a new
+     * image into an existing image stream.
      * 
-     * @param imageIndex the image index.
-     * @param imageType the image type.
-     * @param width the width of the image.
-     * @param height the height of the image.
-     * @param imageMetadata the image metadata, or null.
-     * @param thumbnails the array thumbnails for this image, or null.
-     * @param param the ImageWriteParam, or null.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param imageIndex
+     *            the image index.
+     * @param imageType
+     *            the image type.
+     * @param width
+     *            the width of the image.
+     * @param height
+     *            the height of the image.
+     * @param imageMetadata
+     *            the image metadata, or null.
+     * @param thumbnails
+     *            the array thumbnails for this image, or null.
+     * @param param
+     *            the ImageWriteParam, or null.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
-    public void prepareInsertEmpty(
-            int imageIndex, ImageTypeSpecifier imageType,
-            int width, int height,
-            IIOMetadata imageMetadata, List<? extends BufferedImage> thumbnails,
-            ImageWriteParam param
-    ) throws IOException {
+    public void prepareInsertEmpty(int imageIndex, ImageTypeSpecifier imageType, int width,
+            int height, IIOMetadata imageMetadata, List<? extends BufferedImage> thumbnails,
+            ImageWriteParam param) throws IOException {
         unsupportedOperation();
     }
 
     /**
-     * Prepares the writer to call the replacePixels method for the
-     * specified region. 
+     * Prepares the writer to call the replacePixels method for the specified
+     * region.
      * 
-     * @param imageIndex the image's index.
-     * @param region the specified region.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param imageIndex
+     *            the image's index.
+     * @param region
+     *            the specified region.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public void prepareReplacePixels(int imageIndex, Rectangle region) throws IOException {
         unsupportedOperation();
     }
 
     /**
-     * Prepares the writer for writing an empty image by beginning the 
-     * process of writing a complete image stream that contains a single image 
-     * with undefined pixel values, metadata and thumbnails, 
-     * to the output. 
+     * Prepares the writer for writing an empty image by beginning the process
+     * of writing a complete image stream that contains a single image with
+     * undefined pixel values, metadata and thumbnails, to the output.
      * 
-     * @param streamMetadata the stream metadata.
-     * @param imageType the image type.
-     * @param width the width of the image.
-     * @param height the height of the image.
-     * @param imageMetadata the image's metadata, or null.
-     * @param thumbnails the image's thumbnails, or null.
-     * @param param the image's parameters, or null.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param streamMetadata
+     *            the stream metadata.
+     * @param imageType
+     *            the image type.
+     * @param width
+     *            the width of the image.
+     * @param height
+     *            the height of the image.
+     * @param imageMetadata
+     *            the image's metadata, or null.
+     * @param thumbnails
+     *            the image's thumbnails, or null.
+     * @param param
+     *            the image's parameters, or null.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
-    public void prepareWriteEmpty(
-            IIOMetadata streamMetadata, ImageTypeSpecifier imageType,
-            int width, int height,
-            IIOMetadata imageMetadata, List<? extends BufferedImage> thumbnails,
-            ImageWriteParam param
-    ) throws IOException {
+    public void prepareWriteEmpty(IIOMetadata streamMetadata, ImageTypeSpecifier imageType,
+            int width, int height, IIOMetadata imageMetadata,
+            List<? extends BufferedImage> thumbnails, ImageWriteParam param) throws IOException {
         unsupportedOperation();
     }
 
     /**
-     * Prepares a stream to accept calls of writeToSequence method 
-     * using the metadata object. 
+     * Prepares a stream to accept calls of writeToSequence method using the
+     * metadata object.
      * 
-     * @param streamMetadata the stream metadata.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param streamMetadata
+     *            the stream metadata.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public void prepareWriteSequence(IIOMetadata streamMetadata) throws IOException {
         unsupportedOperation();
     }
 
     /**
-     * Processes the completion of a thumbnail read 
-     * by calling their thumbnailComplete method 
-     * of registered IIOWriteProgressListeners. 
+     * Processes the completion of a thumbnail read by calling their
+     * thumbnailComplete method of registered IIOWriteProgressListeners.
      */
     protected void processThumbnailComplete() {
         if (progressListeners != null) {
@@ -730,11 +764,11 @@
     }
 
     /**
-     * Processes the current percentage of thumbnail completion 
-     * by calling their thumbnailProgress method of registered 
-     * IIOWriteProgressListeners.
+     * Processes the current percentage of thumbnail completion by calling their
+     * thumbnailProgress method of registered IIOWriteProgressListeners.
      * 
-     * @param percentageDone the percentage done.
+     * @param percentageDone
+     *            the percentage done.
      */
     protected void processThumbnailProgress(float percentageDone) {
         if (progressListeners != null) {
@@ -745,11 +779,13 @@
     }
 
     /**
-     * Processes the start of a thumbnail read by calling 
-     * thumbnailStarted method of registered IIOWriteProgressListeners. 
+     * Processes the start of a thumbnail read by calling thumbnailStarted
+     * method of registered IIOWriteProgressListeners.
      * 
-     * @param imageIndex the image index.
-     * @param thumbnailIndex the thumbnail index.
+     * @param imageIndex
+     *            the image index.
+     * @param thumbnailIndex
+     *            the thumbnail index.
      */
     protected void processThumbnailStarted(int imageIndex, int thumbnailIndex) {
         if (progressListeners != null) {
@@ -760,7 +796,7 @@
     }
 
     /**
-     * Processes that the writing has been aborted by calling writeAborted 
+     * Processes that the writing has been aborted by calling writeAborted
      * method of registered IIOWriteProgressListeners.
      */
     protected void processWriteAborted() {
@@ -789,8 +825,8 @@
     /**
      * Removes the specified IIOWriteProgressListener listener.
      * 
-     * @param listener the registered IIOWriteProgressListener 
-     * to be removed.
+     * @param listener
+     *            the registered IIOWriteProgressListener to be removed.
      */
     public void removeIIOWriteProgressListener(IIOWriteProgressListener listener) {
         if (progressListeners != null && listener != null) {
@@ -803,8 +839,8 @@
     /**
      * Removes the specified IIOWriteWarningListener listener.
      * 
-     * @param listener the registered IIOWriteWarningListener listener
-     * to be removed.
+     * @param listener
+     *            the registered IIOWriteWarningListener listener to be removed.
      */
     public void removeIIOWriteWarningListener(IIOWriteWarningListener listener) {
         if (warningListeners == null || listener == null) {
@@ -826,9 +862,10 @@
     /**
      * Removes the image with the specified index from the stream.
      * 
-     * @param imageIndex the image's index.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param imageIndex
+     *            the image's index.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public void removeImage(int imageIndex) throws IOException {
         unsupportedOperation();
@@ -837,36 +874,42 @@
     /**
      * Replaces image metadata of the image with specified index.
      * 
-     * @param imageIndex the image's index.
-     * @param imageMetadata the image metadata.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param imageIndex
+     *            the image's index.
+     * @param imageMetadata
+     *            the image metadata.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public void replaceImageMetadata(int imageIndex, IIOMetadata imageMetadata) throws IOException {
         unsupportedOperation();
     }
 
     /**
-     * Replaces a part of an image presented in the output
-     * with the specified RenderedImage.
+     * Replaces a part of an image presented in the output with the specified
+     * RenderedImage.
      * 
-     * @param image the RenderedImage.
-     * @param param the ImageWriteParam.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param image
+     *            the RenderedImage.
+     * @param param
+     *            the ImageWriteParam.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public void replacePixels(RenderedImage image, ImageWriteParam param) throws IOException {
         unsupportedOperation();
     }
 
     /**
-     * Replaces a part of an image presented in the output
-     * with the specified Raster.
+     * Replaces a part of an image presented in the output with the specified
+     * Raster.
      * 
-     * @param raster the Raster.
-     * @param param the ImageWriteParam.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param raster
+     *            the Raster.
+     * @param param
+     *            the ImageWriteParam.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public void replacePixels(Raster raster, ImageWriteParam param) throws IOException {
         unsupportedOperation();
@@ -875,9 +918,10 @@
     /**
      * Replaces the stream metadata of the output with new IIOMetadata.
      * 
-     * @param streamMetadata the new stream metadata.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param streamMetadata
+     *            the new stream metadata.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public void replaceStreamMetadata(IIOMetadata streamMetadata) throws IOException {
         unsupportedOperation();
@@ -886,7 +930,8 @@
     /**
      * Sets the locale of this ImageWriter.
      * 
-     * @param locale the new locale.
+     * @param locale
+     *            the new locale.
      */
     public void setLocale(Locale locale) {
         if (locale == null) {
@@ -924,26 +969,31 @@
     }
 
     /**
-     * Inserts image into existing output stream. 
+     * Inserts image into existing output stream.
      * 
-     * @param imageIndex the image index where an image will be written.
-     * @param image the specified image to be written.
-     * @param param the ImageWriteParam, or null.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param imageIndex
+     *            the image index where an image will be written.
+     * @param image
+     *            the specified image to be written.
+     * @param param
+     *            the ImageWriteParam, or null.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
-    public void writeInsert(int imageIndex, IIOImage image, ImageWriteParam param) throws IOException {
+    public void writeInsert(int imageIndex, IIOImage image, ImageWriteParam param)
+            throws IOException {
         unsupportedOperation();
     }
 
     /**
      * Writes the specified image to the sequence.
      * 
-     * @param image the image to be written.
-     * @param param the ImageWriteParam, or null.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred 
-     * during writting.
+     * @param image
+     *            the image to be written.
+     * @param param
+     *            the ImageWriteParam, or null.
+     * @throws IOException
+     *             if an I/O exception has occurred during writing.
      */
     public void writeToSequence(IIOImage image, ImageWriteParam param) throws IOException {
         unsupportedOperation();
diff --git a/awt/javax/imageio/event/IIOReadProgressListener.java b/awt/javax/imageio/event/IIOReadProgressListener.java
index 3d65807..2944896 100644
--- a/awt/javax/imageio/event/IIOReadProgressListener.java
+++ b/awt/javax/imageio/event/IIOReadProgressListener.java
@@ -18,86 +18,104 @@
  * @author Sergey I. Salishev
  * @version $Revision: 1.2 $
  */
+
 package javax.imageio.event;
 
 import java.util.EventListener;
 import javax.imageio.ImageReader;
 
 /**
- * The IIOReadProgressListener interface notifies callers 
- * about the progress of the image and thumbnail reading methods.
+ * The IIOReadProgressListener interface notifies callers about the progress of
+ * the image and thumbnail reading methods.
+ * 
+ * @since Android 1.0
  */
 public interface IIOReadProgressListener extends EventListener {
 
     /**
-     * Notifies this listener that the image reading has been completed. 
+     * Notifies this listener that the image reading has been completed.
      * 
-     * @param source the ImageReader object which calls this method.
+     * @param source
+     *            the ImageReader object which calls this method.
      */
     void imageComplete(ImageReader source);
-    
+
     /**
      * Notifies this listener about the degree of completion of the read call.
      * 
-     * @param source the ImageReader object which calls this method.
-     * @param percentageDone the percentage of decoding done.
+     * @param source
+     *            the ImageReader object which calls this method.
+     * @param percentageDone
+     *            the percentage of decoding done.
      */
     void imageProgress(ImageReader source, float percentageDone);
-    
+
     /**
-     * Notifies this listener that an image read operation has been started. 
+     * Notifies this listener that an image read operation has been started.
      * 
-     * @param source the ImageReader object which calls this method.
-     * @param imageIndex the index of the image in an input file or 
-     * stream to be read.
+     * @param source
+     *            the ImageReader object which calls this method.
+     * @param imageIndex
+     *            the index of the image in an input file or stream to be read.
      */
     void imageStarted(ImageReader source, int imageIndex);
-    
+
     /**
      * Notifies this listener that a read operation has been aborted.
      * 
-     * @param source the ImageReader object which calls this method.
+     * @param source
+     *            the ImageReader object which calls this method.
      */
     void readAborted(ImageReader source);
-    
+
     /**
-     * Notifies this listener that a sequence of read operations has been completed. 
+     * Notifies this listener that a sequence of read operations has been
+     * completed.
      * 
-     * @param source the ImageReader object which calls this method.
+     * @param source
+     *            the ImageReader object which calls this method.
      */
     void sequenceComplete(ImageReader source);
-    
+
     /**
-     * Notifies this listener that a sequence of read operation has been started. 
+     * Notifies this listener that a sequence of read operation has been
+     * started.
      * 
-     * @param source the ImageReader object which calls this method.
-     * @param minIndex the index of the first image to be read.
+     * @param source
+     *            the ImageReader object which calls this method.
+     * @param minIndex
+     *            the index of the first image to be read.
      */
     void sequenceStarted(ImageReader source, int minIndex);
-    
+
     /**
      * Notifies that a thumbnail read operation has been completed.
      * 
-     * @param source the ImageReader object which calls this method.
+     * @param source
+     *            the ImageReader object which calls this method.
      */
     void thumbnailComplete(ImageReader source);
-    
+
     /**
      * Notifies this listener about the degree of completion of the read call.
      * 
-     * @param source the ImageReader object which calls this method.
-     * @param percentageDone the percentage of decoding done.
+     * @param source
+     *            the ImageReader object which calls this method.
+     * @param percentageDone
+     *            the percentage of decoding done.
      */
     void thumbnailProgress(ImageReader source, float percentageDone);
-    
+
     /**
-     * Notifies this listener that a thumbnail reading operation has been started. 
+     * Notifies this listener that a thumbnail reading operation has been
+     * started.
      * 
-     * @param source the ImageReader object which calls this method.
-     * @param imageIndex the index of the image in an input file or 
-     * stream to be read.
-     * @param thumbnailIndex the index of the thumbnail to be read.
+     * @param source
+     *            the ImageReader object which calls this method.
+     * @param imageIndex
+     *            the index of the image in an input file or stream to be read.
+     * @param thumbnailIndex
+     *            the index of the thumbnail to be read.
      */
     void thumbnailStarted(ImageReader source, int imageIndex, int thumbnailIndex);
 }
-
diff --git a/awt/javax/imageio/event/IIOReadUpdateListener.java b/awt/javax/imageio/event/IIOReadUpdateListener.java
index ce5e2f1..49bdbcb 100644
--- a/awt/javax/imageio/event/IIOReadUpdateListener.java
+++ b/awt/javax/imageio/event/IIOReadUpdateListener.java
@@ -18,6 +18,7 @@
  * @author Sergey I. Salishev
  * @version $Revision: 1.2 $
  */
+
 package javax.imageio.event;
 
 import java.awt.image.BufferedImage;
@@ -30,109 +31,152 @@
  */
 
 /**
- * The IIOReadUpdateListener interface provides functionality 
- * to receive notification of pixel updates during image and thumbnail 
- * reading operations.
+ * The IIOReadUpdateListener interface provides functionality to receive
+ * notification of pixel updates during image and thumbnail reading operations.
+ * 
+ * @since Android 1.0
  */
 public interface IIOReadUpdateListener extends EventListener {
 
     /**
-     * Notifies this listener that the specified area of the image has been updated. 
-     * 
-     * @param source the ImageReader object which calls this method.
-     * @param theImage the image to be updated.
-     * @param minX the minimum X coordinate of the pixels in the updated area.
-     * @param minY the minimum Y coordinate of the pixels in the updated area.
-     * @param width the width of updated area.
-     * @param height the height of updated area.
-     * @param periodX the horizontal spacing period between updated 
-     * pixels, if it equals 1, there is no space between pixels. 
-     * @param periodY the vertical spacing period between updated 
-     * pixels, if it equals 1, there is no space between pixels.
-     * @param bands the array of int values indicating the bands being updated.
-     */
-    void imageUpdate(ImageReader source, BufferedImage theImage, int minX,
-            int minY, int width, int height, int periodX, int periodY,
-            int[] bands);
-    
-    /**
-     * Notifies this listener that the current read operation has completed a 
-     * progressive pass.
-     * 
-     * @param source the ImageReader object which calls this method.
-     * @param theImage the image to be updated.
-     */
-    void passComplete(ImageReader source, BufferedImage theImage);
-    
-    /**
-     * Notifies this listener that the current read operation has begun 
-     * a progressive pass.
-     * 
-     * @param source the ImageReader object which calls this method.
-     * @param theImage the image to be updated.
-     * @param pass the numer of the pass.
-     * @param minPass the index of the first pass that will be decoded.
-     * @param maxPass the index of the last pass that will be decoded.
-     * @param minX the minimum X coordinate of the pixels in the updated area.
-     * @param minY the minimum Y coordinate of the pixels in the updated area.
-     * @param periodX the horizontal spacing period between updated 
-     * pixels, if it equals 1, there is no space between pixels. 
-      * @param periodY the vertical spacing period between updated 
-     * pixels, if it equals 1, there is no space between pixels.
-     * @param bands the array of int values indicating the bands being updated.
-     */
-    void passStarted(ImageReader source, BufferedImage theImage, int pass,
-            int minPass, int maxPass, int minX, int minY, int periodX,
-            int periodY, int[] bands);
-
-    /**
-     * Notifies this listener that the current thumbnail read operation has  
-     * completed a progressive pass.
-     * 
-     * @param source the ImageReader object which calls this method.
-     * @param theImage the thumbnail to be updated.
-     */
-    void thumbnailPassComplete(ImageReader source, BufferedImage theImage);
-    
-    /**
-     * Notifies this listener that the current thumbnail read operation has  
-     * begun a progressive pass.
-     * 
-     * @param source the ImageReader object which calls this method.
-     * @param theThumbnail the thumbnail to be updated.
-     * @param pass the numer of the pass.
-     * @param minPass the index of the first pass that will be decoded.
-     * @param maxPass the index of the last pass that will be decoded.
-     * @param minX the minimum X coordinate of the pixels in the updated area.
-     * @param minY the minimum Y coordinate of the pixels in the updated area.
-     * @param periodX the horizontal spacing period between updated 
-     * pixels, if it equals 1, there is no space between pixels. 
-     * @param periodY the vertical spacing period between updated 
-     * pixels, if it equals 1, there is no space between pixels.
-     * @param bands the array of int values indicating the bands being updated.
-     */
-    void thumbnailPassStarted(ImageReader source, BufferedImage theThumbnail,
-            int pass, int minPass, int maxPass, int minX, int minY,
-            int periodX, int periodY, int[] bands);
-    
-    /**
-     * Notifies this listener that a specified area of a thumbnail image has been 
+     * Notifies this listener that the specified area of the image has been
      * updated.
      * 
-     * @param source the ImageReader object which calls this method.
-     * @param theThumbnail the thumbnail to be updated.
-     * @param minX the minimum X coordinate of the pixels in the updated area.
-     * @param minY the minimum Y coordinate of the pixels in the updated area.
-     * @param width the width of updated area.
-     * @param height the height of updated area.
-     * @param periodX the horizontal spacing period between updated 
-     * pixels, if it equals 1, there is no space between pixels. 
-     * @param periodY the vertical spacing period between updated 
-     * pixels, if it equals 1, there is no space between pixels.
-     * @param bands the array of int values indicating the bands being updated.
+     * @param source
+     *            the ImageReader object which calls this method.
+     * @param theImage
+     *            the image to be updated.
+     * @param minX
+     *            the minimum X coordinate of the pixels in the updated area.
+     * @param minY
+     *            the minimum Y coordinate of the pixels in the updated area.
+     * @param width
+     *            the width of updated area.
+     * @param height
+     *            the height of updated area.
+     * @param periodX
+     *            the horizontal spacing period between updated pixels, if it
+     *            equals 1, there is no space between pixels.
+     * @param periodY
+     *            the vertical spacing period between updated pixels, if it
+     *            equals 1, there is no space between pixels.
+     * @param bands
+     *            the array of integer values indicating the bands being
+     *            updated.
      */
-    void thumbnailUpdate(ImageReader source, BufferedImage theThumbnail,
-            int minX, int minY, int width, int height, int periodX,
-            int periodY, int[] bands);
-}
+    void imageUpdate(ImageReader source, BufferedImage theImage, int minX, int minY, int width,
+            int height, int periodX, int periodY, int[] bands);
 
+    /**
+     * Notifies this listener that the current read operation has completed a
+     * progressive pass.
+     * 
+     * @param source
+     *            the ImageReader object which calls this method.
+     * @param theImage
+     *            the image to be updated.
+     */
+    void passComplete(ImageReader source, BufferedImage theImage);
+
+    /**
+     * Notifies this listener that the current read operation has begun a
+     * progressive pass.
+     * 
+     * @param source
+     *            the ImageReader object which calls this method.
+     * @param theImage
+     *            the image to be updated.
+     * @param pass
+     *            the number of the pass.
+     * @param minPass
+     *            the index of the first pass that will be decoded.
+     * @param maxPass
+     *            the index of the last pass that will be decoded.
+     * @param minX
+     *            the minimum X coordinate of the pixels in the updated area.
+     * @param minY
+     *            the minimum Y coordinate of the pixels in the updated area.
+     * @param periodX
+     *            the horizontal spacing period between updated pixels, if it
+     *            equals 1, there is no space between pixels.
+     * @param periodY
+     *            the vertical spacing period between updated pixels, if it
+     *            equals 1, there is no space between pixels.
+     * @param bands
+     *            the array of integer values indicating the bands being
+     *            updated.
+     */
+    void passStarted(ImageReader source, BufferedImage theImage, int pass, int minPass,
+            int maxPass, int minX, int minY, int periodX, int periodY, int[] bands);
+
+    /**
+     * Notifies this listener that the current thumbnail read operation has
+     * completed a progressive pass.
+     * 
+     * @param source
+     *            the ImageReader object which calls this method.
+     * @param theImage
+     *            the thumbnail to be updated.
+     */
+    void thumbnailPassComplete(ImageReader source, BufferedImage theImage);
+
+    /**
+     * Notifies this listener that the current thumbnail read operation has
+     * begun a progressive pass.
+     * 
+     * @param source
+     *            the ImageReader object which calls this method.
+     * @param theThumbnail
+     *            the thumbnail to be updated.
+     * @param pass
+     *            the number of the pass.
+     * @param minPass
+     *            the index of the first pass that will be decoded.
+     * @param maxPass
+     *            the index of the last pass that will be decoded.
+     * @param minX
+     *            the minimum X coordinate of the pixels in the updated area.
+     * @param minY
+     *            the minimum Y coordinate of the pixels in the updated area.
+     * @param periodX
+     *            the horizontal spacing period between updated pixels, if it
+     *            equals 1, there is no space between pixels.
+     * @param periodY
+     *            the vertical spacing period between updated pixels, if it
+     *            equals 1, there is no space between pixels.
+     * @param bands
+     *            the array of integer values indicating the bands being
+     *            updated.
+     */
+    void thumbnailPassStarted(ImageReader source, BufferedImage theThumbnail, int pass,
+            int minPass, int maxPass, int minX, int minY, int periodX, int periodY, int[] bands);
+
+    /**
+     * Notifies this listener that a specified area of a thumbnail image has
+     * been updated.
+     * 
+     * @param source
+     *            the ImageReader object which calls this method.
+     * @param theThumbnail
+     *            the thumbnail to be updated.
+     * @param minX
+     *            the minimum X coordinate of the pixels in the updated area.
+     * @param minY
+     *            the minimum Y coordinate of the pixels in the updated area.
+     * @param width
+     *            the width of updated area.
+     * @param height
+     *            the height of updated area.
+     * @param periodX
+     *            the horizontal spacing period between updated pixels, if it
+     *            equals 1, there is no space between pixels.
+     * @param periodY
+     *            the vertical spacing period between updated pixels, if it
+     *            equals 1, there is no space between pixels.
+     * @param bands
+     *            the array of integer values indicating the bands being
+     *            updated.
+     */
+    void thumbnailUpdate(ImageReader source, BufferedImage theThumbnail, int minX, int minY,
+            int width, int height, int periodX, int periodY, int[] bands);
+}
diff --git a/awt/javax/imageio/event/IIOReadWarningListener.java b/awt/javax/imageio/event/IIOReadWarningListener.java
index 92fa275..318a5df 100644
--- a/awt/javax/imageio/event/IIOReadWarningListener.java
+++ b/awt/javax/imageio/event/IIOReadWarningListener.java
@@ -18,6 +18,7 @@
  * @author Sergey I. Salishev
  * @version $Revision: 1.2 $
  */
+
 package javax.imageio.event;
 
 import java.util.EventListener;
@@ -29,18 +30,20 @@
  */
 
 /**
- * The IIOReadWarningListener provides methods to receive notification
- * of warning messages generated by image 
- * and thumbnail reading methods.
+ * The IIOReadWarningListener provides methods to receive notification of
+ * warning messages generated by image and thumbnail reading methods.
+ * 
+ * @since Android 1.0
  */
 public interface IIOReadWarningListener extends EventListener {
 
     /**
-     * Notifies this listener about a warning (non-fatal error) during decoding. 
+     * Notifies this listener about a warning (non-fatal error) during decoding.
      * 
-     * @param source the ImageReader object which calls this method.
-     * @param warning the string describing the warning.
+     * @param source
+     *            the ImageReader object which calls this method.
+     * @param warning
+     *            the string describing the warning.
      */
     public void warningOccurred(ImageReader source, String warning);
 }
-
diff --git a/awt/javax/imageio/event/IIOWriteProgressListener.java b/awt/javax/imageio/event/IIOWriteProgressListener.java
index 19ae495..4a2c595 100644
--- a/awt/javax/imageio/event/IIOWriteProgressListener.java
+++ b/awt/javax/imageio/event/IIOWriteProgressListener.java
@@ -18,69 +18,84 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio.event;
 
 import javax.imageio.ImageWriter;
 import java.util.EventListener;
 
 /**
- * The IIOWriteProgressListener interface provides methods to 
- * receive notification about the progress of the image and 
- * thumbnail writing methods.
+ * The IIOWriteProgressListener interface provides methods to receive
+ * notification about the progress of the image and thumbnail writing methods.
+ * 
+ * @since Android 1.0
  */
 public interface IIOWriteProgressListener extends EventListener {
-    
+
     /**
-     * Notifies this listener that an image write operation has been started. 
+     * Notifies this listener that an image write operation has been started.
      * 
-     * @param source the ImageWriter object which calls this method.
-     * @param imageIndex the index of the image being written.
+     * @param source
+     *            the ImageWriter object which calls this method.
+     * @param imageIndex
+     *            the index of the image being written.
      */
     void imageStarted(ImageWriter source, int imageIndex);
-    
+
     /**
      * Notifies this listener about the degree of completion of the write call.
      * 
-     * @param source the ImageWriter object which calls this method.
-     * @param percentageDone the percentage of encoding done.
+     * @param source
+     *            the ImageWriter object which calls this method.
+     * @param percentageDone
+     *            the percentage of encoding done.
      */
     void imageProgress(ImageWriter source, float percentageDone);
-    
+
     /**
-     * Notifies this listener that the image writing has been completed. 
+     * Notifies this listener that the image writing has been completed.
      * 
-     * @param source the ImageWriter object which calls this method.
+     * @param source
+     *            the ImageWriter object which calls this method.
      */
     void imageComplete(ImageWriter source);
-    
+
     /**
-     * Notifies this listener that a thumbnail write operation has been started. 
+     * Notifies this listener that a thumbnail write operation has been started.
      * 
-     * @param source the ImageWriter object which calls this method.
-     * @param imageIndex the index of the image being written.
-     * @param thumbnailIndex the index of the thumbnail being written.
+     * @param source
+     *            the ImageWriter object which calls this method.
+     * @param imageIndex
+     *            the index of the image being written.
+     * @param thumbnailIndex
+     *            the index of the thumbnail being written.
      */
     void thumbnailStarted(ImageWriter source, int imageIndex, int thumbnailIndex);
-    
+
     /**
      * Notifies this listener about the degree of completion of the write call.
      * 
-     * @param source the ImageWriter object which calls this method.
-     * @param percentageDone the percentage of encoding done.
+     * @param source
+     *            the ImageWriter object which calls this method.
+     * @param percentageDone
+     *            the percentage of encoding done.
      */
     void thumbnailProgress(ImageWriter source, float percentageDone);
-    
+
     /**
-     * Notifies this listener that a thumbnail write operation has been completed.
+     * Notifies this listener that a thumbnail write operation has been
+     * completed.
      * 
-     * @param source the ImageWriter object which calls this method.
+     * @param source
+     *            the ImageWriter object which calls this method.
      */
     void thumbnailComplete(ImageWriter source);
-    
+
     /**
      * Notifies this listener that writing operation has been aborted.
      * 
-     * @param source the ImageWriter object which calls this method.
+     * @param source
+     *            the ImageWriter object which calls this method.
      */
     void writeAborted(ImageWriter source);
 }
diff --git a/awt/javax/imageio/event/IIOWriteWarningListener.java b/awt/javax/imageio/event/IIOWriteWarningListener.java
index f530d25..8ee41cd 100644
--- a/awt/javax/imageio/event/IIOWriteWarningListener.java
+++ b/awt/javax/imageio/event/IIOWriteWarningListener.java
@@ -18,23 +18,29 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio.event;
 
 import javax.imageio.ImageWriter;
 import java.util.EventListener;
 
 /**
- * The IIOWriteWarningListener provides methods to receive notification
- * of warnings generated by image and thumbnail writing methods.
+ * The IIOWriteWarningListener provides methods to receive notification of
+ * warnings generated by image and thumbnail writing methods.
+ * 
+ * @since Android 1.0
  */
 public interface IIOWriteWarningListener extends EventListener {
-    
+
     /**
-     * Notifies this listener about a warning (non-fatal error) during encoding. 
+     * Notifies this listener about a warning (non-fatal error) during encoding.
      * 
-     * @param source the ImageWriter object which calls this method.
-     * @param imageIndex the index of the image generating the warning.
-     * @param warning the string describing the warning.
+     * @param source
+     *            the ImageWriter object which calls this method.
+     * @param imageIndex
+     *            the index of the image generating the warning.
+     * @param warning
+     *            the string describing the warning.
      */
     void warningOccurred(ImageWriter source, int imageIndex, String warning);
 }
diff --git a/awt/javax/imageio/event/package.html b/awt/javax/imageio/event/package.html
new file mode 100644
index 0000000..c2fe39f
--- /dev/null
+++ b/awt/javax/imageio/event/package.html
@@ -0,0 +1,8 @@
+<html>
+  <body>
+    <p>
+      This package provides interfaces to handle events which can be fired during the reading or writing of images.
+    </p>
+  @since Android 1.0
+  </body>
+</html>
diff --git a/awt/javax/imageio/metadata/IIOInvalidTreeException.java b/awt/javax/imageio/metadata/IIOInvalidTreeException.java
index 8690b2b..ba90657 100644
--- a/awt/javax/imageio/metadata/IIOInvalidTreeException.java
+++ b/awt/javax/imageio/metadata/IIOInvalidTreeException.java
@@ -21,21 +21,26 @@
 import javax.imageio.IIOException;
 
 /**
- * The IIOInvalidTreeException provides notification about
- * fails of IIOMetadataNodes tree parsing by IIOMetadata object. 
+ * The IIOInvalidTreeException provides notification about fails of
+ * IIOMetadataNodes tree parsing by IIOMetadata object.
+ * 
+ * @since Android 1.0
  */
 public class IIOInvalidTreeException extends IIOException {
-    
-    /** The offending node. */
+
+    /**
+     * The offending node.
+     */
     protected Node offendingNode = null;
 
     /**
-     * Instantiates an IIOInvalidTreeException with the
-     * specified detailed message and specified offending
-     * Node.
+     * Instantiates an IIOInvalidTreeException with the specified detailed
+     * message and specified offending Node.
      * 
-     * @param message the detailed message.
-     * @param offendingNode the offending node.
+     * @param message
+     *            the detailed message.
+     * @param offendingNode
+     *            the offending node.
      */
     public IIOInvalidTreeException(String message, Node offendingNode) {
         super(message);
@@ -43,13 +48,15 @@
     }
 
     /**
-     * Instantiates a new IIOInvalidTreeException with the
-     * specified detailed message and specified offending
-     * Node.
+     * Instantiates a new IIOInvalidTreeException with the specified detailed
+     * message and specified offending Node.
      * 
-     * @param message the detailed message.
-     * @param cause the cause of this exception.
-     * @param offendingNode the offending node
+     * @param message
+     *            the detailed message.
+     * @param cause
+     *            the cause of this exception.
+     * @param offendingNode
+     *            the offending node.
      */
     public IIOInvalidTreeException(String message, Throwable cause, Node offendingNode) {
         super(message, cause);
diff --git a/awt/javax/imageio/metadata/IIOMetadata.java b/awt/javax/imageio/metadata/IIOMetadata.java
index f2387cc..96cebf9 100644
--- a/awt/javax/imageio/metadata/IIOMetadata.java
+++ b/awt/javax/imageio/metadata/IIOMetadata.java
@@ -14,6 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
+
 package javax.imageio.metadata;
 
 import java.util.ArrayList;
@@ -22,73 +23,90 @@
 import org.w3c.dom.Node;
 
 /**
- * The Class IIOMetadata represents the metadata (bundled with an image)
- * as a Dom-type tree.
+ * The class IIOMetadata represents the metadata (bundled with an image) as a
+ * Dom-type tree.
+ * 
+ * @since Android 1.0
  */
 public abstract class IIOMetadata {
 
-    /** Whether the standard metadata format is supported. */
+    /**
+     * Whether the standard metadata format is supported.
+     */
     protected boolean standardFormatSupported;
-    
-    /** The native metadata format name. */
+
+    /**
+     * The native metadata format name.
+     */
     protected String nativeMetadataFormatName;
-    
-    /** The native metadata format class name. */
+
+    /**
+     * The native metadata format class name.
+     */
     protected String nativeMetadataFormatClassName;
-    
-    /** The extra metadata format names. */
+
+    /**
+     * The extra metadata format names.
+     */
     protected String[] extraMetadataFormatNames;
-    
-    /** The extra metadata format class names. */
+
+    /**
+     * The extra metadata format class names.
+     */
     protected String[] extraMetadataFormatClassNames;
-    
-    /** The default controller. */
+
+    /**
+     * The default controller.
+     */
     protected IIOMetadataController defaultController;
-    
-    /** The controller. */
+
+    /**
+     * The controller.
+     */
     protected IIOMetadataController controller;
 
     /**
      * Instantiates a new IIOMetadata with no data set.
      */
-    protected IIOMetadata() {}
+    protected IIOMetadata() {
+    }
 
     /**
      * Instantiates a new IIOMetadata with the specified data parameters.
      * 
-     * @param standardMetadataFormatSupported whether the standard metadata format is supported
-     * @param nativeMetadataFormatName the native metadata format name
-     * @param nativeMetadataFormatClassName the native metadata format class name
-     * @param extraMetadataFormatNames the extra metadata format names
-     * @param extraMetadataFormatClassNames the extra metadata format class names
+     * @param standardMetadataFormatSupported
+     *            whether the standard metadata format is supported.
+     * @param nativeMetadataFormatName
+     *            the native metadata format name.
+     * @param nativeMetadataFormatClassName
+     *            the native metadata format class name.
+     * @param extraMetadataFormatNames
+     *            the extra metadata format names.
+     * @param extraMetadataFormatClassNames
+     *            the extra metadata format class names.
      */
-    protected IIOMetadata(boolean standardMetadataFormatSupported,
-                          String nativeMetadataFormatName,
-                          String nativeMetadataFormatClassName,
-                          String[] extraMetadataFormatNames,
-                          String[] extraMetadataFormatClassNames) {
+    protected IIOMetadata(boolean standardMetadataFormatSupported, String nativeMetadataFormatName,
+            String nativeMetadataFormatClassName, String[] extraMetadataFormatNames,
+            String[] extraMetadataFormatClassNames) {
         standardFormatSupported = standardMetadataFormatSupported;
         this.nativeMetadataFormatName = nativeMetadataFormatName;
         this.nativeMetadataFormatClassName = nativeMetadataFormatClassName;
         if (extraMetadataFormatNames == null) {
             if (extraMetadataFormatClassNames != null) {
                 throw new IllegalArgumentException(
-                        "extraMetadataFormatNames == null && extraMetadataFormatClassNames != null!"
-                );
+                        "extraMetadataFormatNames == null && extraMetadataFormatClassNames != null!");
             }
         } else {
             if (extraMetadataFormatClassNames == null) {
                 throw new IllegalArgumentException(
-                        "extraMetadataFormatNames != null && extraMetadataFormatClassNames == null!"
-                );
+                        "extraMetadataFormatNames != null && extraMetadataFormatClassNames == null!");
             }
             if (extraMetadataFormatNames.length == 0) {
                 throw new IllegalArgumentException("extraMetadataFormatNames.length == 0!");
             }
             if (extraMetadataFormatClassNames.length != extraMetadataFormatNames.length) {
                 throw new IllegalArgumentException(
-                        "extraMetadataFormatClassNames.length != extraMetadataFormatNames.length!"
-                );
+                        "extraMetadataFormatClassNames.length != extraMetadataFormatNames.length!");
             }
             this.extraMetadataFormatNames = extraMetadataFormatNames.clone();
             this.extraMetadataFormatClassNames = extraMetadataFormatClassNames.clone();
@@ -98,30 +116,32 @@
     /**
      * Gets the metadata as tree-type document.
      * 
-     * @param formatName the format name
-     * 
-     * @return the node in tree format
+     * @param formatName
+     *            the format name.
+     * @return the node in tree format.
      */
     public abstract Node getAsTree(String formatName);
-    
+
     /**
      * Checks if the metadata is read only.
      * 
      * @return true, if the metadata is read only.
      */
     public abstract boolean isReadOnly();
-    
+
     /**
      * Merges the specified tree with this metadata tree.
      * 
-     * @param formatName the format of the specified tree
-     * @param root the root node of the metadata tree
-     * 
-     * @throws IIOInvalidTreeException if the specified tree
-     * is incompatible with the this metadata tree.
+     * @param formatName
+     *            the format of the specified tree.
+     * @param root
+     *            the root node of the metadata tree.
+     * @throws IIOInvalidTreeException
+     *             if the specified tree is incompatible with the this metadata
+     *             tree.
      */
     public abstract void mergeTree(String formatName, Node root) throws IIOInvalidTreeException;
-    
+
     /**
      * Resets the controller.
      */
@@ -130,7 +150,7 @@
     /**
      * Gets the controller associated with this metadata document.
      * 
-     * @return the controller
+     * @return the controller.
      */
     public IIOMetadataController getController() {
         return controller;
@@ -139,7 +159,7 @@
     /**
      * Checks whether this metadata has a controller.
      * 
-     * @return true, if this metadata has a controller
+     * @return true, if this metadata has a controller.
      */
     public boolean hasController() {
         return getController() != null;
@@ -148,7 +168,7 @@
     /**
      * Activate the controller.
      * 
-     * @return true, if successful
+     * @return true, if successful.
      */
     public boolean activateController() {
         if (!hasController()) {
@@ -160,7 +180,7 @@
     /**
      * Gets the default controller.
      * 
-     * @return the default controller
+     * @return the default controller.
      */
     public IIOMetadataController getDefaultController() {
         return defaultController;
@@ -169,7 +189,7 @@
     /**
      * Gets the extra metadata format names.
      * 
-     * @return the extra metadata format names
+     * @return the extra metadata format names.
      */
     public String[] getExtraMetadataFormatNames() {
         return extraMetadataFormatNames == null ? null : extraMetadataFormatNames.clone();
@@ -178,23 +198,20 @@
     /**
      * Gets the metadata format.
      * 
-     * @param formatName the format name
-     * 
-     * @return the metadata format
+     * @param formatName
+     *            the format name.
+     * @return the metadata format.
      */
     public IIOMetadataFormat getMetadataFormat(String formatName) {
-        return IIOMetadataUtils.instantiateMetadataFormat(
-                formatName,
-                standardFormatSupported,
-                nativeMetadataFormatName, nativeMetadataFormatClassName,
-                extraMetadataFormatNames, extraMetadataFormatClassNames
-        );
+        return IIOMetadataUtils.instantiateMetadataFormat(formatName, standardFormatSupported,
+                nativeMetadataFormatName, nativeMetadataFormatClassName, extraMetadataFormatNames,
+                extraMetadataFormatClassNames);
     }
 
     /**
      * Gets the native metadata format name.
      * 
-     * @return the native metadata format name
+     * @return the native metadata format name.
      */
     public String getNativeMetadataFormatName() {
         return nativeMetadataFormatName;
@@ -203,7 +220,7 @@
     /**
      * Checks if the standard metadata format is supported.
      * 
-     * @return true, if the standard metadata format is supported
+     * @return true, if the standard metadata format is supported.
      */
     public boolean isStandardMetadataFormatSupported() {
         return standardFormatSupported;
@@ -212,7 +229,7 @@
     /**
      * Gets the metadata format names.
      * 
-     * @return the metadata format names
+     * @return the metadata format names.
      */
     public String[] getMetadataFormatNames() {
         ArrayList<String> res = new ArrayList<String>();
@@ -239,7 +256,7 @@
     /**
      * Gets the standard chroma node.
      * 
-     * @return the standard chroma node
+     * @return the standard chroma node.
      */
     protected IIOMetadataNode getStandardChromaNode() {
         return null;
@@ -248,7 +265,7 @@
     /**
      * Gets the standard compression node.
      * 
-     * @return the standard compression node
+     * @return the standard compression node.
      */
     protected IIOMetadataNode getStandardCompressionNode() {
         return null;
@@ -257,7 +274,7 @@
     /**
      * Gets the standard data node.
      * 
-     * @return the standard data node
+     * @return the standard data node.
      */
     protected IIOMetadataNode getStandardDataNode() {
         return null;
@@ -266,7 +283,7 @@
     /**
      * Gets the standard dimension node.
      * 
-     * @return the standard dimension node
+     * @return the standard dimension node.
      */
     protected IIOMetadataNode getStandardDimensionNode() {
         return null;
@@ -275,7 +292,7 @@
     /**
      * Gets the standard document node.
      * 
-     * @return the standard document node
+     * @return the standard document node.
      */
     protected IIOMetadataNode getStandardDocumentNode() {
         return null;
@@ -284,7 +301,7 @@
     /**
      * Gets the standard text node.
      * 
-     * @return the standard text node
+     * @return the standard text node.
      */
     protected IIOMetadataNode getStandardTextNode() {
         return null;
@@ -293,7 +310,7 @@
     /**
      * Gets the standard tile node.
      * 
-     * @return the standard tile node
+     * @return the standard tile node.
      */
     protected IIOMetadataNode getStandardTileNode() {
         return null;
@@ -302,7 +319,7 @@
     /**
      * Gets the standard transparency node.
      * 
-     * @return the standard transparency node
+     * @return the standard transparency node.
      */
     protected IIOMetadataNode getStandardTransparencyNode() {
         return null;
@@ -311,7 +328,7 @@
     /**
      * Gets the metadata as a tree in standard format.
      * 
-     * @return the metadata as a tree in standard format
+     * @return the metadata as a tree in standard format.
      */
     protected final IIOMetadataNode getStandardTree() {
         // Create root node
@@ -342,14 +359,15 @@
         if ((node = getStandardTransparencyNode()) != null) {
             root.appendChild(node);
         }
-        
+
         return root;
     }
 
     /**
      * Sets the controller.
      * 
-     * @param controller the new controller
+     * @param controller
+     *            the new controller.
      */
     public void setController(IIOMetadataController controller) {
         this.controller = controller;
@@ -358,11 +376,13 @@
     /**
      * Sets the from tree.
      * 
-     * @param formatName the name of the metatdata format of the from tree
-     * @param root the root node of the from tree
-     * 
-     * @throws IIOInvalidTreeException if the tree or its format is not compatible with 
-     * this metadata.
+     * @param formatName
+     *            the name of the metatdata format of the from tree.
+     * @param root
+     *            the root node of the from tree.
+     * @throws IIOInvalidTreeException
+     *             if the tree or its format is not compatible with this
+     *             metadata.
      */
     public void setFromTree(String formatName, Node root) throws IIOInvalidTreeException {
         reset();
diff --git a/awt/javax/imageio/metadata/IIOMetadataController.java b/awt/javax/imageio/metadata/IIOMetadataController.java
index dfd4e5c..1405948 100644
--- a/awt/javax/imageio/metadata/IIOMetadataController.java
+++ b/awt/javax/imageio/metadata/IIOMetadataController.java
@@ -18,6 +18,7 @@
  * @author Sergey I. Salishev
  * @version $Revision: 1.2 $
  */
+
 package javax.imageio.metadata;
 
 /* 
@@ -26,20 +27,20 @@
  */
 
 /**
- * The IIOMetadataController interface provides a method for 
- * implementing objects to activate the controller without 
- * defining how the controller obtains values.
+ * The IIOMetadataController interface provides a method for implementing
+ * objects to activate the controller without defining how the controller
+ * obtains values.
+ * 
+ * @since Android 1.0
  */
 public interface IIOMetadataController {
 
     /**
      * Activates a controller.
      * 
-     * @param metadata the metadata to be modified.
-     * 
-     * @return true if the IIOMetadata has been modified, 
-     * false otherwise.
+     * @param metadata
+     *            the metadata to be modified.
+     * @return true, if the IIOMetadata has been modified, false otherwise.
      */
     public boolean activate(IIOMetadata metadata);
 }
-
diff --git a/awt/javax/imageio/metadata/IIOMetadataFormat.java b/awt/javax/imageio/metadata/IIOMetadataFormat.java
index 9e246b4..0e7e697 100644
--- a/awt/javax/imageio/metadata/IIOMetadataFormat.java
+++ b/awt/javax/imageio/metadata/IIOMetadataFormat.java
@@ -21,327 +21,384 @@
 import java.util.Locale;
 
 /**
- * The Interface IIOMetadataFormat is implemented by classes that 
- * describe the rules and allowed elements for a metadata document
- * tree.
+ * The Interface IIOMetadataFormat is implemented by classes that describe the
+ * rules and allowed elements for a metadata document tree.
+ * 
+ * @since Android 1.0
  */
 public interface IIOMetadataFormat {
 
-    /** The CHILD_POLICY_EMPTY. */
+    /**
+     * The CHILD_POLICY_EMPTY.
+     */
     int CHILD_POLICY_EMPTY = 0;
-    
-    /** The CHILD_POLICY_ALL. */
-    int CHILD_POLICY_ALL = 1;
-    
-    /** The CHILD_POLICY_SOME. */
-    int CHILD_POLICY_SOME = 2;
-    
-    /** The CHILD_POLICY_CHOICE. */
-    int CHILD_POLICY_CHOICE = 3;
-    
-    /** The CHILD_POLICY_SEQUENCE. */
-    int CHILD_POLICY_SEQUENCE = 4;
-    
-    /** The CHILD_POLICY_REPEAT. */
-    int CHILD_POLICY_REPEAT = 5;
-    
-    /** The maximum value for the child policy. */
-    int CHILD_POLICY_MAX = CHILD_POLICY_REPEAT;
-
-    /** The DATATYPE_STRING. */
-    int DATATYPE_STRING = 0;
-    
-    /** The DATATYPE_BOOLEAN. */
-    int DATATYPE_BOOLEAN = 1;
-    
-    /** The DATATYPE_INTEGER. */
-    int DATATYPE_INTEGER = 2;
-    
-    /** The DATATYPE_FLOAT. */
-    int DATATYPE_FLOAT = 3;
-    
-    /** The DATATYPE_DOUBLE. */
-    int DATATYPE_DOUBLE = 4;
-
-    /** The VALUE_NONE. */
-    int VALUE_NONE = 0;
-    
-    /** The VALUE_ARBITRARY. */
-    int VALUE_ARBITRARY = 1;
-    
-    /** The VALUE_RANGE. */
-    int VALUE_RANGE = 2;
-    
-    /** The VALUE_RANGE_MIN_INCLUSIVE_MASK. */
-    int VALUE_RANGE_MIN_INCLUSIVE_MASK = 4;
-    
-    /** The VALUE_RANGE_MAX_INCLUSIVE_MASK. */
-    int VALUE_RANGE_MAX_INCLUSIVE_MASK = 8;
-    
-    /** The VALUE_ENUMERATION. */
-    int VALUE_ENUMERATION = 16;
-    
-    /** The VALUE_LIST. */
-    int VALUE_LIST = 32;
-    
-    /** The VALUE_RANGE_MIN_INCLUSIVE. */
-    int VALUE_RANGE_MIN_INCLUSIVE = VALUE_RANGE | VALUE_RANGE_MIN_INCLUSIVE_MASK;
-    
-    /** The VALUE_RANGE_MAX_INCLUSIVE. */
-    int VALUE_RANGE_MAX_INCLUSIVE = VALUE_RANGE | VALUE_RANGE_MAX_INCLUSIVE_MASK;
-    
-    /** The VALUE_RANGE_MIN_MAX_INCLUSIVE. */
-    int VALUE_RANGE_MIN_MAX_INCLUSIVE =
-            VALUE_RANGE | VALUE_RANGE_MIN_INCLUSIVE_MASK | VALUE_RANGE_MAX_INCLUSIVE_MASK;
 
     /**
-     * Tells whether the specified element is allowed for the specified 
-     * image type.
+     * The CHILD_POLICY_ALL.
+     */
+    int CHILD_POLICY_ALL = 1;
+
+    /**
+     * The CHILD_POLICY_SOME.
+     */
+    int CHILD_POLICY_SOME = 2;
+
+    /**
+     * The CHILD_POLICY_CHOICE.
+     */
+    int CHILD_POLICY_CHOICE = 3;
+
+    /**
+     * The CHILD_POLICY_SEQUENCE.
+     */
+    int CHILD_POLICY_SEQUENCE = 4;
+
+    /**
+     * The CHILD_POLICY_REPEAT.
+     */
+    int CHILD_POLICY_REPEAT = 5;
+
+    /**
+     * The maximum value for the child policy.
+     */
+    int CHILD_POLICY_MAX = CHILD_POLICY_REPEAT;
+
+    /**
+     * The DATATYPE_STRING.
+     */
+    int DATATYPE_STRING = 0;
+
+    /**
+     * The DATATYPE_BOOLEAN.
+     */
+    int DATATYPE_BOOLEAN = 1;
+
+    /**
+     * The DATATYPE_INTEGER.
+     */
+    int DATATYPE_INTEGER = 2;
+
+    /**
+     * The DATATYPE_FLOAT.
+     */
+    int DATATYPE_FLOAT = 3;
+
+    /**
+     * The DATATYPE_DOUBLE.
+     */
+    int DATATYPE_DOUBLE = 4;
+
+    /**
+     * The VALUE_NONE.
+     */
+    int VALUE_NONE = 0;
+
+    /**
+     * The VALUE_ARBITRARY.
+     */
+    int VALUE_ARBITRARY = 1;
+
+    /**
+     * The VALUE_RANGE.
+     */
+    int VALUE_RANGE = 2;
+
+    /**
+     * The VALUE_RANGE_MIN_INCLUSIVE_MASK.
+     */
+    int VALUE_RANGE_MIN_INCLUSIVE_MASK = 4;
+
+    /**
+     * The VALUE_RANGE_MAX_INCLUSIVE_MASK.
+     */
+    int VALUE_RANGE_MAX_INCLUSIVE_MASK = 8;
+
+    /**
+     * The VALUE_ENUMERATION.
+     */
+    int VALUE_ENUMERATION = 16;
+
+    /**
+     * The VALUE_LIST.
+     */
+    int VALUE_LIST = 32;
+
+    /**
+     * The VALUE_RANGE_MIN_INCLUSIVE.
+     */
+    int VALUE_RANGE_MIN_INCLUSIVE = VALUE_RANGE | VALUE_RANGE_MIN_INCLUSIVE_MASK;
+
+    /**
+     * The VALUE_RANGE_MAX_INCLUSIVE.
+     */
+    int VALUE_RANGE_MAX_INCLUSIVE = VALUE_RANGE | VALUE_RANGE_MAX_INCLUSIVE_MASK;
+
+    /**
+     * The VALUE_RANGE_MIN_MAX_INCLUSIVE.
+     */
+    int VALUE_RANGE_MIN_MAX_INCLUSIVE = VALUE_RANGE | VALUE_RANGE_MIN_INCLUSIVE_MASK
+            | VALUE_RANGE_MAX_INCLUSIVE_MASK;
+
+    /**
+     * Tells whether the specified element is allowed for the specified image
+     * type.
      * 
-     * @param elementName the element name
-     * @param imageType the image type
-     * 
-     * @return true, if the specified element is allowed for the specified 
-     * image type
+     * @param elementName
+     *            the element name.
+     * @param imageType
+     *            the image type.
+     * @return true, if the specified element is allowed for the specified image
+     *         type.
      */
     boolean canNodeAppear(String elementName, ImageTypeSpecifier imageType);
 
     /**
      * Gets data type of the specified attribute of the specified element.
      * 
-     * @param elementName the element name
-     * @param attrName the attribute name
-     * 
-     * @return the attribute's data type
+     * @param elementName
+     *            the element name.
+     * @param attrName
+     *            the attribute name.
+     * @return the attribute's data type.
      */
     int getAttributeDataType(String elementName, String attrName);
-    
+
     /**
-     * Gets the default value of the specified attribute of the specified element.
+     * Gets the default value of the specified attribute of the specified
+     * element.
      * 
-     * @param elementName the element name
-     * @param attrName the attribute name
-     * 
-     * @return the attribute's default value
+     * @param elementName
+     *            the element name.
+     * @param attrName
+     *            the attribute name.
+     * @return the attribute's default value.
      */
     String getAttributeDefaultValue(String elementName, String attrName);
-    
+
     /**
      * Gets the user-friendly description of the attribute.
      * 
-     * @param elementName the element name
-     * @param attrName the attribute name
-     * @param locale the locale giving the desired language for the
-     * description
-     * 
-     * @return the attribute description
+     * @param elementName
+     *            the element name.
+     * @param attrName
+     *            the attribute name.
+     * @param locale
+     *            the locale giving the desired language for the description.
+     * @return the attribute description.
      */
     String getAttributeDescription(String elementName, String attrName, Locale locale);
-    
+
     /**
      * Gets the attribute enumerations.
      * 
-     * @param elementName the element name
-     * @param attrName the attribute name
-     * 
-     * @return the attribute enumerations
+     * @param elementName
+     *            the element name.
+     * @param attrName
+     *            the attribute name.
+     * @return the attribute enumerations.
      */
     String[] getAttributeEnumerations(String elementName, String attrName);
-    
+
     /**
      * Gets the maximum length of the attribute list.
      * 
-     * @param elementName the element name
-     * @param attrName the attribute name
-     * 
-     * @return the maximum length of the attribute list
+     * @param elementName
+     *            the element name.
+     * @param attrName
+     *            the attribute name.
+     * @return the maximum length of the attribute list.
      */
     int getAttributeListMaxLength(String elementName, String attrName);
-    
+
     /**
      * Gets the minimum length of the attribute list.
      * 
-     * @param elementName the element name
-     * @param attrName the attribute name
-     * 
-     * @return the minimum length of the attribute list
+     * @param elementName
+     *            the element name.
+     * @param attrName
+     *            the attribute name.
+     * @return the minimum length of the attribute list.
      */
     int getAttributeListMinLength(String elementName, String attrName);
-    
+
     /**
      * Gets the maximum value allowed for the attribute.
      * 
-     * @param elementName the element name
-     * @param attrName the attribute name
-     * 
-     * @return the maximum value allowed for the attribute
+     * @param elementName
+     *            the element name.
+     * @param attrName
+     *            the attribute name.
+     * @return the maximum value allowed for the attribute.
      */
     String getAttributeMaxValue(String elementName, String attrName);
-    
+
     /**
      * Gets the minimum value allowed for the attribute.
      * 
-     * @param elementName the element name
-     * @param attrName the attribute name
-     * 
-     * @return the minimum value allowed for the attribute
+     * @param elementName
+     *            the element name.
+     * @param attrName
+     *            the attribute name.
+     * @return the minimum value allowed for the attribute.
      */
     String getAttributeMinValue(String elementName, String attrName);
-    
+
     /**
      * Gets the attribute names allowed for the specified element.
      * 
-     * @param elementName the element name
-     * 
-     * @return the attribute names
+     * @param elementName
+     *            the element name.
+     * @return the attribute names.
      */
     String[] getAttributeNames(String elementName);
-    
+
     /**
      * Gets the attribute value type.
      * 
-     * @param elementName the element name
-     * @param attrName the attribute name
-     * 
-     * @return the attribute value type
+     * @param elementName
+     *            the element name.
+     * @param attrName
+     *            the attribute name.
+     * @return the attribute value type.
      */
     int getAttributeValueType(String elementName, String attrName);
-    
+
     /**
-     * Checks whether the specified attribute is required 
-     * for the specified element.
+     * Checks whether the specified attribute is required for the specified
+     * element.
      * 
-     * @param elementName the element name
-     * @param attrName the attribute name
-     * 
-     * @return true, if the specified attribute is required for the 
-     * specified element
+     * @param elementName
+     *            the element name.
+     * @param attrName
+     *            the attribute name.
+     * @return true, if the specified attribute is required for the specified
+     *         element.
      */
     boolean isAttributeRequired(String elementName, String attrName);
 
     /**
      * Gets the names of the possible child elements for the given element.
      * 
-     * @param elementName the element name
-     * 
-     * @return the child names
+     * @param elementName
+     *            the element name.
+     * @return the child names.
      */
     String[] getChildNames(String elementName);
-    
+
     /**
      * Gets the constant describing the element's child policy.
      * 
-     * @param elementName the element name
-     * 
-     * @return the child policy
+     * @param elementName
+     *            the element name.
+     * @return the child policy.
      */
     int getChildPolicy(String elementName);
 
     /**
      * Gets the user-friendly description of the element.
      * 
-     * @param elementName the element name
-     * @param locale the locale giving the desired language for the
-     * description
-     * 
-     * @return the element description
+     * @param elementName
+     *            the element name.
+     * @param locale
+     *            the locale giving the desired language for the description.
+     * @return the element description.
      */
     String getElementDescription(String elementName, Locale locale);
-    
+
     /**
      * Gets the maximum number of children allowed for the element.
      * 
-     * @param elementName the element name
-     * 
-     * @return the maximum number of children allowed for the element
+     * @param elementName
+     *            the element name.
+     * @return the maximum number of children allowed for the element.
      */
     int getElementMaxChildren(String elementName);
-    
+
     /**
      * Gets the minimum number of children allowed for the element.
      * 
-     * @param elementName the element name
-     * 
-     * @return the minimum number of children allowed for the element
+     * @param elementName
+     *            the element name.
+     * @return the minimum number of children allowed for the element.
      */
     int getElementMinChildren(String elementName);
 
     /**
      * Gets the maximum object array length allowed for the element.
      * 
-     * @param elementName the element name
-     * 
-     * @return the maximum object array length allowed for the element
+     * @param elementName
+     *            the element name.
+     * @return the maximum object array length allowed for the element.
      */
     int getObjectArrayMaxLength(String elementName);
-    
+
     /**
      * Gets the minimum object array length allowed for the element.
      * 
-     * @param elementName the element name
-     * 
-     * @return the minimum object array length allowed for the element
+     * @param elementName
+     *            the element name.
+     * @return the minimum object array length allowed for the element.
      */
     int getObjectArrayMinLength(String elementName);
-    
+
     /**
      * Gets the object class corresponding to the specified element.
      * 
-     * @param elementName the element name
-     * 
-     * @return the object class corresponding to the specified element
+     * @param elementName
+     *            the element name.
+     * @return the object class corresponding to the specified element.
      */
     Class<?> getObjectClass(String elementName);
-    
+
     /**
      * Gets the object default value for the element.
      * 
-     * @param elementName the element name
-     * 
-     * @return the object default value for the element
+     * @param elementName
+     *            the element name.
+     * @return the object default value for the element.
      */
     Object getObjectDefaultValue(String elementName);
-    
+
     /**
      * Gets the object enumerations.
      * 
-     * @param elementName the element name
-     * 
-     * @return the object enumerations
+     * @param elementName
+     *            the element name.
+     * @return the object enumerations.
      */
     Object[] getObjectEnumerations(String elementName);
-    
+
     /**
      * Gets the maximum value allowed for the element's object.
      * 
-     * @param elementName the element name
-     * 
-     * @return the maximum value allowed for the element's object
+     * @param elementName
+     *            the element name.
+     * @return the maximum value allowed for the element's object.
      */
     Comparable<?> getObjectMaxValue(String elementName);
-    
+
     /**
      * Gets the minimum value allowed for the element's object.
      * 
-     * @param elementName the element name
-     * 
-     * @return the minimum value allowed for the element's object
+     * @param elementName
+     *            the element name.
+     * @return the minimum value allowed for the element's object.
      */
     Comparable<?> getObjectMinValue(String elementName);
-    
+
     /**
      * Gets the constant that indicates the type of the element's value.
      * 
-     * @param elementName the element name
-     * 
-     * @return the constant that indicates the type of the element's value
+     * @param elementName
+     *            the element name.
+     * @return the constant that indicates the type of the element's value.
      */
     int getObjectValueType(String elementName);
 
     /**
      * Gets the name of the root element.
      * 
-     * @return the name of the root element
+     * @return the name of the root element.
      */
     String getRootName();
 }
diff --git a/awt/javax/imageio/metadata/IIOMetadataFormatImpl.java b/awt/javax/imageio/metadata/IIOMetadataFormatImpl.java
index 438ae90..1a6e568 100644
--- a/awt/javax/imageio/metadata/IIOMetadataFormatImpl.java
+++ b/awt/javax/imageio/metadata/IIOMetadataFormatImpl.java
@@ -23,45 +23,60 @@
 import java.security.PrivilegedAction;
 
 /**
- * The IIOMetadataFormatImpl class provides an implementation of the 
+ * The IIOMetadataFormatImpl class provides an implementation of the
  * IIOMetadataFormat interface.
+ * 
+ * @since Android 1.0
  */
 public abstract class IIOMetadataFormatImpl implements IIOMetadataFormat {
-    
-    /** The Constant standardMetadataFormatName. */
-    @SuppressWarnings({"ConstantDeclaredInAbstractClass"})
+
+    /**
+     * The Constant standardMetadataFormatName.
+     */
+    @SuppressWarnings( {
+        "ConstantDeclaredInAbstractClass"
+    })
     public static final String standardMetadataFormatName = "javax_imageio_1.0";
 
-    /** The standard format. */
-    @SuppressWarnings({"StaticNonFinalField"})
+    /**
+     * The standard format.
+     */
+    @SuppressWarnings( {
+        "StaticNonFinalField"
+    })
     private static IIOMetadataFormatImpl standardFormat;
 
-    /** The root name. */
+    /**
+     * The root name.
+     */
     private String rootName;
-    
-    /** The element hash. */
+
+    /**
+     * The element hash.
+     */
     private HashMap<String, Element> elementHash = new HashMap<String, Element>();
 
-    /** The resource base name. */
+    /**
+     * The resource base name.
+     */
     private String resourceBaseName = getClass().getName() + "Resources";
 
     /**
-     * Instantiates an IIOMetadataFormatImpl with the specified root
-     * name and child policy (not CHILD_POLICY_REPEAT).
+     * Instantiates an IIOMetadataFormatImpl with the specified root name and
+     * child policy (not CHILD_POLICY_REPEAT).
      * 
-     * @param rootName the name of root element.
-     * @param childPolicy the child policy defined by one of the 
-     * CHILD_POLICY_* constants  (except CHILD_POLICY_REPEAT).
+     * @param rootName
+     *            the name of root element.
+     * @param childPolicy
+     *            the child policy defined by one of the CHILD_POLICY_*
+     *            constants (except CHILD_POLICY_REPEAT).
      */
     public IIOMetadataFormatImpl(String rootName, int childPolicy) {
         if (rootName == null) {
             throw new IllegalArgumentException("rootName is null");
         }
-        if (
-                childPolicy < CHILD_POLICY_EMPTY ||
-                childPolicy > CHILD_POLICY_MAX ||
-                childPolicy == CHILD_POLICY_REPEAT
-        ) {
+        if (childPolicy < CHILD_POLICY_EMPTY || childPolicy > CHILD_POLICY_MAX
+                || childPolicy == CHILD_POLICY_REPEAT) {
             throw new IllegalArgumentException("childPolicy is not one of the predefined constants");
         }
 
@@ -73,12 +88,15 @@
     }
 
     /**
-     * Instantiates an IIOMetadataFormatImpl with the specified root
-     * name and CHILD_POLICY_REPEAT child policy.
+     * Instantiates an IIOMetadataFormatImpl with the specified root name and
+     * CHILD_POLICY_REPEAT child policy.
      * 
-     * @param rootName the name of root element.
-     * @param minChildren the minimum number of children.
-     * @param maxChildren the maximum number of children
+     * @param rootName
+     *            the name of root element.
+     * @param minChildren
+     *            the minimum number of children.
+     * @param maxChildren
+     *            the maximum number of children
      */
     public IIOMetadataFormatImpl(String rootName, int minChildren, int maxChildren) {
         if (rootName == null) {
@@ -100,25 +118,31 @@
         elementHash.put(rootName, root);
     }
 
-    @SuppressWarnings({"AbstractMethodOverridesAbstractMethod"})
+    @SuppressWarnings( {
+        "AbstractMethodOverridesAbstractMethod"
+    })
     public abstract boolean canNodeAppear(String elementName, ImageTypeSpecifier imageType);
 
     /**
      * Adds a new attribute to an existing element.
      * 
-     * @param elementName the name of the element to which the new attribute
-     * will be added.
-     * @param attrName the attribute name.
-     * @param dataType the data type of the new attribute.
-     * @param required the flag which indicates whether this attribute
-     * must be present.
-     * @param listMinLength the minimum legal number of list items.
-     * @param listMaxLength the the maximum legal number of list items.
+     * @param elementName
+     *            the name of the element to which the new attribute will be
+     *            added.
+     * @param attrName
+     *            the attribute name.
+     * @param dataType
+     *            the data type of the new attribute.
+     * @param required
+     *            the flag which indicates whether this attribute must be
+     *            present.
+     * @param listMinLength
+     *            the minimum legal number of list items.
+     * @param listMaxLength
+     *            the the maximum legal number of list items.
      */
-    protected void addAttribute(
-            String elementName, String attrName, int dataType,
-            boolean required, int listMinLength, int listMaxLength
-    ) {
+    protected void addAttribute(String elementName, String attrName, int dataType,
+            boolean required, int listMinLength, int listMaxLength) {
         if (attrName == null) {
             throw new IllegalArgumentException("attrName == null!");
         }
@@ -144,18 +168,21 @@
     /**
      * Adds a new attribute to an existing element.
      * 
-     * @param elementName the name of the element to which the new attribute
-     * will be added.
-     * @param attrName the attribute name.
-     * @param dataType the data type of the new attribute.
-     * @param required the flag which indicates whether this attribute
-     * must be present.
-     * @param defaultValue the default value of the attribute.
+     * @param elementName
+     *            the name of the element to which the new attribute will be
+     *            added.
+     * @param attrName
+     *            the attribute name.
+     * @param dataType
+     *            the data type of the new attribute.
+     * @param required
+     *            the flag which indicates whether this attribute must be
+     *            present.
+     * @param defaultValue
+     *            the default value of the attribute.
      */
-    protected void addAttribute(
-            String elementName, String attrName, int dataType,
-            boolean required, String defaultValue
-    ) {
+    protected void addAttribute(String elementName, String attrName, int dataType,
+            boolean required, String defaultValue) {
         if (attrName == null) {
             throw new IllegalArgumentException("attrName == null!");
         }
@@ -177,20 +204,23 @@
     /**
      * Adds a new attribute to an existing element.
      * 
-     * @param elementName the name of the element to which the new attribute
-     * will be added.
-     * @param attrName the attribute name.
-     * @param dataType the data type of the new attribute.
-     * @param required the flag which indicates whether this attribute
-     * must be present.
-     * @param defaultValue the default value of the attribute.
-     * @param enumeratedValues the legal values for the attribute as 
-     * a list of strings.
+     * @param elementName
+     *            the name of the element to which the new attribute will be
+     *            added.
+     * @param attrName
+     *            the attribute name.
+     * @param dataType
+     *            the data type of the new attribute.
+     * @param required
+     *            the flag which indicates whether this attribute must be
+     *            present.
+     * @param defaultValue
+     *            the default value of the attribute.
+     * @param enumeratedValues
+     *            the legal values for the attribute as a list of strings.
      */
-    protected void addAttribute(
-            String elementName, String attrName, int dataType,
-            boolean required, String defaultValue, List<String> enumeratedValues
-    ) {
+    protected void addAttribute(String elementName, String attrName, int dataType,
+            boolean required, String defaultValue, List<String> enumeratedValues) {
         if (attrName == null) {
             throw new IllegalArgumentException("attrName == null!");
         }
@@ -226,26 +256,30 @@
     /**
      * Adds a new attribute to an existing element.
      * 
-     * @param elementName the name of the element to which the new attribute
-     * will be added.
-     * @param attrName the attribute name.
-     * @param dataType the data type of the new attribute.
-     * @param required the flag which indicates whether this attribute
-     * must be present.
-     * @param defaultValue the default value of attribute.
-     * @param minValue the minimum legal value of an attribute.
-     * @param maxValue the maximum legal value of an attribute.
-     * @param minInclusive the flag which indicates  
-     * whether the minValue is inclusive.
-     * @param maxInclusive the flag which indicates  
-     * whether the maxValue is inclusive.
+     * @param elementName
+     *            the name of the element to which the new attribute will be
+     *            added.
+     * @param attrName
+     *            the attribute name.
+     * @param dataType
+     *            the data type of the new attribute.
+     * @param required
+     *            the flag which indicates whether this attribute must be
+     *            present.
+     * @param defaultValue
+     *            the default value of attribute.
+     * @param minValue
+     *            the minimum legal value of an attribute.
+     * @param maxValue
+     *            the maximum legal value of an attribute.
+     * @param minInclusive
+     *            the flag which indicates whether the minValue is inclusive.
+     * @param maxInclusive
+     *            the flag which indicates whether the maxValue is inclusive.
      */
-    protected void addAttribute(
-            String elementName, String attrName, int dataType,
-            boolean required, String defaultValue,
-            String minValue, String maxValue,
-            boolean minInclusive, boolean maxInclusive
-    ) {
+    protected void addAttribute(String elementName, String attrName, int dataType,
+            boolean required, String defaultValue, String minValue, String maxValue,
+            boolean minInclusive, boolean maxInclusive) {
         if (attrName == null) {
             throw new IllegalArgumentException("attrName == null!");
         }
@@ -272,20 +306,21 @@
     }
 
     /**
-     * Adds a new attribute with boolean data type to an existing 
-     * element.
+     * Adds a new attribute with boolean data type to an existing element.
      * 
-     * @param elementName the name of the element to which the new attribute
-     * will be added.
-     * @param attrName the attribute name.
-     * @param hasDefaultValue the flag which indicates whether this attribute
-     * must have a default value.
-     * @param defaultValue the default value.
+     * @param elementName
+     *            the name of the element to which the new attribute will be
+     *            added.
+     * @param attrName
+     *            the attribute name.
+     * @param hasDefaultValue
+     *            the flag which indicates whether this attribute must have a
+     *            default value.
+     * @param defaultValue
+     *            the default value.
      */
-    protected void addBooleanAttribute(
-            String elementName, String attrName,
-            boolean hasDefaultValue, boolean defaultValue
-    ) {
+    protected void addBooleanAttribute(String elementName, String attrName,
+            boolean hasDefaultValue, boolean defaultValue) {
         String defaultVal = hasDefaultValue ? (defaultValue ? "TRUE" : "FALSE") : null;
         ArrayList<String> values = new ArrayList<String>(2);
         values.add("TRUE");
@@ -295,11 +330,13 @@
     }
 
     /**
-     * Adds an existing element to the list of child elements 
-     * of the specified parent element.
+     * Adds an existing element to the list of child elements of the specified
+     * parent element.
      * 
-     * @param elementName the name of the element to be added.
-     * @param parentName the parent element name.
+     * @param elementName
+     *            the name of the element to be added.
+     * @param parentName
+     *            the parent element name.
      */
     protected void addChildElement(String elementName, String parentName) {
         Element parent = findElement(parentName);
@@ -308,23 +345,23 @@
     }
 
     /**
-     * Adds a new element type to this IIOMetadataFormat with 
-     * a child policy (if policy is not CHILD_POLICY_REPEAT).
+     * Adds a new element type to this IIOMetadataFormat with a child policy (if
+     * policy is not CHILD_POLICY_REPEAT).
      * 
-     * @param elementName the name of the element to be added.
-     * @param parentName the parent element name.
-     * @param childPolicy one of the CHILD_POLICY_* constants defined
-     * by IIOMetadataFormat.
+     * @param elementName
+     *            the name of the element to be added.
+     * @param parentName
+     *            the parent element name.
+     * @param childPolicy
+     *            one of the CHILD_POLICY_* constants defined by
+     *            IIOMetadataFormat.
      */
     protected void addElement(String elementName, String parentName, int childPolicy) {
-        if (
-                childPolicy < CHILD_POLICY_EMPTY ||
-                childPolicy > CHILD_POLICY_MAX ||
-                childPolicy == CHILD_POLICY_REPEAT
-        ) {
+        if (childPolicy < CHILD_POLICY_EMPTY || childPolicy > CHILD_POLICY_MAX
+                || childPolicy == CHILD_POLICY_REPEAT) {
             throw new IllegalArgumentException("childPolicy is not one of the predefined constants");
         }
-        
+
         Element parent = findElement(parentName);
         Element element = new Element();
         element.name = elementName;
@@ -334,19 +371,21 @@
     }
 
     /**
-     * Adds a new element type to this IIOMetadataFormat with 
-     * CHILD_POLICY_REPEAT and the specified minimum and maximum
-     * number of child elements.
+     * Adds a new element type to this IIOMetadataFormat with
+     * CHILD_POLICY_REPEAT and the specified minimum and maximum number of child
+     * elements.
      * 
-     * @param elementName the element name to be added.
-     * @param parentName the parent element name.
-     * @param minChildren the minimum number of child elements.
-     * @param maxChildren the maximum number of child elements.
+     * @param elementName
+     *            the element name to be added.
+     * @param parentName
+     *            the parent element name.
+     * @param minChildren
+     *            the minimum number of child elements.
+     * @param maxChildren
+     *            the maximum number of child elements.
      */
-    protected void addElement(
-            String elementName, String parentName,
-            int minChildren, int maxChildren
-    ) {
+    protected void addElement(String elementName, String parentName, int minChildren,
+            int maxChildren) {
         if (minChildren < 0) {
             throw new IllegalArgumentException("minChildren < 0!");
         }
@@ -365,19 +404,20 @@
     }
 
     /**
-     * Adds an Object reference with the specified class type to be 
-     * stored as element's value. 
+     * Adds an Object reference with the specified class type to be stored as
+     * element's value.
      * 
-     * @param elementName the element name.
-     * @param classType the class indicates the legal types for 
-     * the object's value.
-     * @param arrayMinLength the minimum legal length for the array.
-     * @param arrayMaxLength the maximum legal length for the array.
+     * @param elementName
+     *            the element name.
+     * @param classType
+     *            the class indicates the legal types for the object's value.
+     * @param arrayMinLength
+     *            the minimum legal length for the array.
+     * @param arrayMaxLength
+     *            the maximum legal length for the array.
      */
-    protected void addObjectValue(
-            String elementName, Class<?> classType,
-            int arrayMinLength, int arrayMaxLength
-    ) {
+    protected void addObjectValue(String elementName, Class<?> classType, int arrayMinLength,
+            int arrayMaxLength) {
         Element element = findElement(elementName);
 
         ObjectValue objVal = new ObjectValue();
@@ -390,20 +430,20 @@
     }
 
     /**
-     * Adds an Object reference with the specified class type to be 
-     * stored as an element's value. 
+     * Adds an Object reference with the specified class type to be stored as an
+     * element's value.
      * 
-     * @param elementName the element name.
-     * @param classType the class indicates the legal types for 
-     * the object's value.
-     * @param required a flag indicated that this object value 
-     * must be present.
-     * @param defaultValue the default value, or null.
+     * @param elementName
+     *            the element name.
+     * @param classType
+     *            the class indicates the legal types for the object's value.
+     * @param required
+     *            a flag indicated that this object value must be present.
+     * @param defaultValue
+     *            the default value, or null.
      */
-    protected <T> void addObjectValue(
-            String elementName, Class<T> classType,
-            boolean required, T defaultValue
-    ) {
+    protected <T> void addObjectValue(String elementName, Class<T> classType, boolean required,
+            T defaultValue) {
         // note: reqired is an unused parameter
         Element element = findElement(elementName);
 
@@ -416,22 +456,22 @@
     }
 
     /**
-     * Adds an Object reference with the specified class type to be 
-     * stored as the element's value. 
+     * Adds an Object reference with the specified class type to be stored as
+     * the element's value.
      * 
-     * @param elementName the element name.
-     * @param classType the class indicates the legal types for 
-     * the object value.
-     * @param required a flag indicated that this object value 
-     * must be present.
-     * @param defaultValue the default value, or null.
-     * @param enumeratedValues the list of legal values for the object.
+     * @param elementName
+     *            the element name.
+     * @param classType
+     *            the class indicates the legal types for the object value.
+     * @param required
+     *            a flag indicated that this object value must be present.
+     * @param defaultValue
+     *            the default value, or null.
+     * @param enumeratedValues
+     *            the list of legal values for the object.
      */
-    protected <T> void addObjectValue(
-            String elementName, Class<T> classType,
-            boolean required, T defaultValue,
-            List<? extends T> enumeratedValues
-    ) {
+    protected <T> void addObjectValue(String elementName, Class<T> classType, boolean required,
+            T defaultValue, List<? extends T> enumeratedValues) {
         // note: reqired is an unused parameter
         if (enumeratedValues == null || enumeratedValues.isEmpty()) {
             throw new IllegalArgumentException("enumeratedValues is empty or null");
@@ -444,7 +484,8 @@
                 }
             }
         } catch (ClassCastException e) {
-            throw new IllegalArgumentException("enumeratedValues contains a value not of class classType!");
+            throw new IllegalArgumentException(
+                    "enumeratedValues contains a value not of class classType!");
         }
 
         Element element = findElement(elementName);
@@ -459,25 +500,27 @@
     }
 
     /**
-     * Adds an Object reference with the specified class type to be 
-     * stored as the element's value. 
+     * Adds an Object reference with the specified class type to be stored as
+     * the element's value.
      * 
-     * @param elementName the element name.
-     * @param classType the class indicates the legal types for 
-     * the object value.
-     * @param defaultValue the default value, or null.
-     * @param minValue the minimum legal value for the object value. 
-     * @param maxValue the maximum legal value for the object value. 
-     * @param minInclusive the flag which indicates 
-     * whether the minValue is inclusive.
-     * @param maxInclusive the flag which indicates 
-     * whether the maxValue is inclusive.
+     * @param elementName
+     *            the element name.
+     * @param classType
+     *            the class indicates the legal types for the object value.
+     * @param defaultValue
+     *            the default value, or null.
+     * @param minValue
+     *            the minimum legal value for the object value.
+     * @param maxValue
+     *            the maximum legal value for the object value.
+     * @param minInclusive
+     *            the flag which indicates whether the minValue is inclusive.
+     * @param maxInclusive
+     *            the flag which indicates whether the maxValue is inclusive.
      */
-    protected <T extends Object & Comparable<? super T>> void addObjectValue(
-            String elementName, Class<T> classType,
-            T defaultValue, Comparable<? super T> minValue, Comparable<? super T> maxValue,
-            boolean minInclusive, boolean maxInclusive
-    ) {
+    protected <T extends Object & Comparable<? super T>> void addObjectValue(String elementName,
+            Class<T> classType, T defaultValue, Comparable<? super T> minValue,
+            Comparable<? super T> maxValue, boolean minInclusive, boolean maxInclusive) {
         Element element = findElement(elementName);
 
         ObjectValue<T> objVal = new ObjectValue<T>();
@@ -540,7 +583,7 @@
         if ((attr.valueType & VALUE_RANGE) == 0) {
             throw new IllegalArgumentException("Attribute is not a range!");
         }
-        return attr.maxValue;        
+        return attr.maxValue;
     }
 
     public String getAttributeMinValue(String elementName, String attrName) {
@@ -558,12 +601,13 @@
 
     public int getAttributeValueType(String elementName, String attrName) {
         Attlist attr = findAttribute(elementName, attrName);
-        return attr.valueType;                
+        return attr.valueType;
     }
 
     public String[] getChildNames(String elementName) {
         Element element = findElement(elementName);
-        if (element.childPolicy == CHILD_POLICY_EMPTY) { // Element cannot have children
+        if (element.childPolicy == CHILD_POLICY_EMPTY) { // Element cannot have
+            // children
             return null;
         }
         return element.children.toArray(new String[element.children.size()]);
@@ -689,10 +733,12 @@
     }
 
     /**
-     * Removes the specified attribute from the specified element. 
-     *  
-     * @param elementName the specified element name.
-     * @param attrName the specified attribute name.
+     * Removes the specified attribute from the specified element.
+     * 
+     * @param elementName
+     *            the specified element name.
+     * @param attrName
+     *            the specified attribute name.
      */
     protected void removeAttribute(String elementName, String attrName) {
         Element element = findElement(elementName);
@@ -702,7 +748,8 @@
     /**
      * Removes the specified element from this format.
      * 
-     * @param elementName the specified element name.
+     * @param elementName
+     *            the specified element name.
      */
     protected void removeElement(String elementName) {
         Element element;
@@ -717,18 +764,20 @@
     /**
      * Removes the object value from the specified element.
      * 
-     * @param elementName the element name.
+     * @param elementName
+     *            the element name.
      */
     protected void removeObjectValue(String elementName) {
         Element element = findElement(elementName);
         element.objectValue = null;
     }
-    
+
     /**
-     * Sets a new base name for ResourceBundles containing 
-     * descriptions of elements and attributes for this format.
+     * Sets a new base name for ResourceBundles containing descriptions of
+     * elements and attributes for this format.
      * 
-     * @param resourceBaseName the new resource base name.
+     * @param resourceBaseName
+     *            the new resource base name.
      */
     protected void setResourceBaseName(String resourceBaseName) {
         if (resourceBaseName == null) {
@@ -740,117 +789,181 @@
     /**
      * The Class Element.
      */
-    @SuppressWarnings({"ClassWithoutConstructor"})
+    @SuppressWarnings( {
+        "ClassWithoutConstructor"
+    })
     private class Element {
-        
-        /** The name. */
+
+        /**
+         * The name.
+         */
         String name;
 
-        /** The children. */
+        /**
+         * The children.
+         */
         ArrayList<String> children = new ArrayList<String>();
-        
-        /** The attributes. */
+
+        /**
+         * The attributes.
+         */
         HashMap<String, Attlist> attributes = new HashMap<String, Attlist>();
 
-        /** The min children. */
+        /**
+         * The min children.
+         */
         int minChildren;
-        
-        /** The max children. */
+
+        /**
+         * The max children.
+         */
         int maxChildren;
-        
-        /** The child policy. */
+
+        /**
+         * The child policy.
+         */
         int childPolicy;
 
-        /** The object value. */
+        /**
+         * The object value.
+         */
         ObjectValue objectValue;
     }
 
     /**
      * The Class Attlist.
      */
-    @SuppressWarnings({"ClassWithoutConstructor"})
+    @SuppressWarnings( {
+        "ClassWithoutConstructor"
+    })
     private class Attlist {
-        
-        /** The name. */
+
+        /**
+         * The name.
+         */
         String name;
 
-        /** The data type. */
+        /**
+         * The data type.
+         */
         int dataType;
-        
-        /** The required. */
+
+        /**
+         * The required.
+         */
         boolean required;
-        
-        /** The list min length. */
+
+        /**
+         * The list min length.
+         */
         int listMinLength;
-        
-        /** The list max length. */
+
+        /**
+         * The list max length.
+         */
         int listMaxLength;
-        
-        /** The default value. */
+
+        /**
+         * The default value.
+         */
         String defaultValue;
-        
-        /** The enumerated values. */
+
+        /**
+         * The enumerated values.
+         */
         List<String> enumeratedValues;
-        
-        /** The min value. */
+
+        /**
+         * The min value.
+         */
         String minValue;
-        
-        /** The max value. */
+
+        /**
+         * The max value.
+         */
         String maxValue;
-        
-        /** The min inclusive. */
+
+        /**
+         * The min inclusive.
+         */
         boolean minInclusive;
-        
-        /** The max inclusive. */
+
+        /**
+         * The max inclusive.
+         */
         boolean maxInclusive;
 
-        /** The value type. */
+        /**
+         * The value type.
+         */
         int valueType;
     }
 
     /**
      * The Class ObjectValue.
      */
-    @SuppressWarnings({"ClassWithoutConstructor"})
+    @SuppressWarnings( {
+        "ClassWithoutConstructor"
+    })
     private class ObjectValue<T> {
-        
-        /** The class type. */
+
+        /**
+         * The class type.
+         */
         Class<T> classType;
-        
-        /** The array min length. */
+
+        /**
+         * The array min length.
+         */
         int arrayMinLength;
-        
-        /** The array max length. */
+
+        /**
+         * The array max length.
+         */
         int arrayMaxLength;
-        
-        /** The default value. */
+
+        /**
+         * The default value.
+         */
         T defaultValue;
-        
-        /** The enumerated values. */
+
+        /**
+         * The enumerated values.
+         */
         List<? extends T> enumeratedValues;
-        
-        /** The min value. */
+
+        /**
+         * The min value.
+         */
         Comparable<? super T> minValue;
-        
-        /** The max value. */
+
+        /**
+         * The max value.
+         */
         Comparable<? super T> maxValue;
-        
-        /** The min inclusive. */
+
+        /**
+         * The min inclusive.
+         */
         boolean minInclusive;
-        
-        /** The max inclusive. */
+
+        /**
+         * The max inclusive.
+         */
         boolean maxInclusive;
 
-        /** The value type. */
+        /**
+         * The value type.
+         */
         int valueType;
     }
 
     /**
      * Find element.
      * 
-     * @param name the name
-     * 
-     * @return the element
+     * @param name
+     *            the name.
+     * @return the element.
      */
     private Element findElement(String name) {
         Element element;
@@ -864,16 +977,18 @@
     /**
      * Find attribute.
      * 
-     * @param elementName the element name
-     * @param attributeName the attribute name
-     * 
-     * @return the attlist
+     * @param elementName
+     *            the element name.
+     * @param attributeName
+     *            the attribute name.
+     * @return the attlist.
      */
     private Attlist findAttribute(String elementName, String attributeName) {
         Element element = findElement(elementName);
         Attlist attribute;
         if ((attribute = element.attributes.get(attributeName)) == null) {
-            throw new IllegalArgumentException("attribute name is null or no such attribute: " + attributeName);
+            throw new IllegalArgumentException("attribute name is null or no such attribute: "
+                    + attributeName);
         }
 
         return attribute;
@@ -882,9 +997,9 @@
     /**
      * Find object value.
      * 
-     * @param elementName the element name
-     * 
-     * @return the object value
+     * @param elementName
+     *            the element name.
+     * @return the object value.
      */
     private ObjectValue findObjectValue(String elementName) {
         Element element = findElement(elementName);
@@ -898,23 +1013,25 @@
     /**
      * Gets the resource string.
      * 
-     * @param key the key
-     * @param locale the locale
-     * 
-     * @return the resource string
+     * @param key
+     *            the key.
+     * @param locale
+     *            the locale.
+     * @return the resource string.
      */
     private String getResourceString(String key, Locale locale) {
         if (locale == null) {
             locale = Locale.getDefault();
         }
 
-        // Get the context class loader and try to locate the bundle with it first
-        ClassLoader contextClassloader = AccessController.doPrivileged(
-                new PrivilegedAction<ClassLoader>() {
+        // Get the context class loader and try to locate the bundle with it
+        // first
+        ClassLoader contextClassloader = AccessController
+                .doPrivileged(new PrivilegedAction<ClassLoader>() {
                     public ClassLoader run() {
                         return Thread.currentThread().getContextClassLoader();
                     }
-        });
+                });
 
         // Now try to get the resource bundle
         ResourceBundle rb;
diff --git a/awt/javax/imageio/metadata/IIOMetadataNode.java b/awt/javax/imageio/metadata/IIOMetadataNode.java
index d5ab7a5..adc6d67 100644
--- a/awt/javax/imageio/metadata/IIOMetadataNode.java
+++ b/awt/javax/imageio/metadata/IIOMetadataNode.java
@@ -27,47 +27,71 @@
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
+
 //???AWT
 //import org.w3c.dom.TypeInfo;
 //import org.w3c.dom.UserDataHandler;
 
 /**
- * The Class IIOMetadataNode represents a node of the 
- * (DOM-style) metadata tree.
+ * The Class IIOMetadataNode represents a node of the (DOM-style) metadata tree.
+ * 
+ * @since Android 1.0
  */
 public class IIOMetadataNode implements Element, NodeList {
 
-    /** The node name. */
+    /**
+     * The node name.
+     */
     private String nodeName;
-    
-    /** The node value. */
+
+    /**
+     * The node value.
+     */
     private String nodeValue;
-    
-    /** The attributes. */
+
+    /**
+     * The attributes.
+     */
     private IIOMetadataNodeList attrs = new IIOMetadataNodeList(new ArrayList<IIOMetadataNode>());
 
-    /** The parent node. */
+    /**
+     * The parent node.
+     */
     private IIOMetadataNode parent;
-    
-    /** The first child node. */
+
+    /**
+     * The first child node.
+     */
     private IIOMetadataNode firstChild;
-    
-    /** The last child node. */
+
+    /**
+     * The last child node.
+     */
     private IIOMetadataNode lastChild;
-    
-    /** The previous sibling. */
+
+    /**
+     * The previous sibling.
+     */
     private IIOMetadataNode previousSibling;
-    
-    /** The next sibling. */
+
+    /**
+     * The next sibling.
+     */
     private IIOMetadataNode nextSibling;
 
-    /** The number of children. */
+    /**
+     * The number of children.
+     */
     private int nChildren;
 
-    /** The user object associated with this node. */
+    /**
+     * The user object associated with this node.
+     */
     private Object userObject;
 
-    /** The text content of this node. */
+    /**
+     * The text content of this node.
+     */
     private String textContent;
 
     /**
@@ -79,18 +103,20 @@
     /**
      * Instantiates a new empty node with the specified name.
      * 
-     * @param nodeName the node name
+     * @param nodeName
+     *            the node name.
      */
     public IIOMetadataNode(String nodeName) {
         this.nodeName = nodeName;
     }
 
     /**
-     * Instantiates a new IIOMetadataNode with the specified 
-     * name and value.
+     * Instantiates a new IIOMetadataNode with the specified name and value.
      * 
-     * @param nodeName the node name
-     * @param nodeValue the node value
+     * @param nodeName
+     *            the node name.
+     * @param nodeValue
+     *            the node value.
      */
     private IIOMetadataNode(String nodeName, String nodeValue) {
         this.nodeName = nodeName;
@@ -102,12 +128,12 @@
     }
 
     public String getAttribute(String name) {
-        Attr attrNode = (Attr) attrs.getNamedItem(name);
+        Attr attrNode = (Attr)attrs.getNamedItem(name);
         return (attrNode == null) ? "" : attrNode.getValue();
     }
 
     public void setAttribute(String name, String value) throws DOMException {
-        Attr attr = (Attr) attrs.getNamedItem(name);
+        Attr attr = (Attr)attrs.getNamedItem(name);
         if (attr != null) {
             attr.setValue(value);
         } else {
@@ -116,7 +142,7 @@
     }
 
     public void removeAttribute(String name) throws DOMException {
-        IIOMetadataAttr attr = (IIOMetadataAttr) attrs.getNamedItem(name);
+        IIOMetadataAttr attr = (IIOMetadataAttr)attrs.getNamedItem(name);
         if (attr != null) {
             attr.setOwnerElement(null);
             attrs.list.remove(attr);
@@ -124,17 +150,19 @@
     }
 
     public Attr getAttributeNode(String name) {
-        return (Attr) attrs.getNamedItem(name);
+        return (Attr)attrs.getNamedItem(name);
     }
 
     public Attr setAttributeNode(Attr newAttr) throws DOMException {
         // Check if this attribute is already in use.
         Element owner = newAttr.getOwnerElement();
         if (owner != null) {
-            if (owner == this) { // Replacing an attribute node by itself has no effect
+            if (owner == this) { // Replacing an attribute node by itself has no
+                // effect
                 return null;
             } else {
-                throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR, "Attribute is already in use");
+                throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR,
+                        "Attribute is already in use");
             }
         }
 
@@ -146,7 +174,7 @@
 
         IIOMetadataAttr iioAttr;
         if (newAttr instanceof IIOMetadataAttr) {
-            iioAttr = (IIOMetadataAttr) newAttr;
+            iioAttr = (IIOMetadataAttr)newAttr;
             iioAttr.setOwnerElement(this);
         } else {
             iioAttr = new IIOMetadataAttr(name, newAttr.getValue(), this);
@@ -206,7 +234,8 @@
         return getAttribute(localName);
     }
 
-    public void setAttributeNS(String namespaceURI, String qualifiedName, String value) throws DOMException {
+    public void setAttributeNS(String namespaceURI, String qualifiedName, String value)
+            throws DOMException {
         setAttribute(qualifiedName, value);
     }
 
@@ -222,7 +251,8 @@
         return setAttributeNode(newAttr);
     }
 
-    public NodeList getElementsByTagNameNS(String namespaceURI, String localName) throws DOMException {
+    public NodeList getElementsByTagNameNS(String namespaceURI, String localName)
+            throws DOMException {
         return getElementsByTagName(localName);
     }
 
@@ -234,20 +264,105 @@
         return hasAttribute(localName);
     }
 
-    //???AWT
+    // ???AWT
     /*
-    public TypeInfo getSchemaTypeInfo() {
-        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
-    }*/
+     * public TypeInfo getSchemaTypeInfo() { throw new
+     * DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported"); }
+     */
 
+    /**
+     * <i>Description copied from interface: org.w3c.dom.Element (DOM Level
+     * 3)</i>
+     * <p>
+     * If the parameter isId is true, this method declares the specified
+     * attribute to be a user-determined ID attribute . This affects the value
+     * of Attr.isId and the behavior of Document.getElementById, but does not
+     * change any schema that may be in use, in particular this does not affect
+     * the Attr.schemaTypeInfo of the specified Attr node. Use the value false
+     * for the parameter isId to undeclare an attribute for being a
+     * user-determined ID attribute. To specify an attribute by local name and
+     * namespace URI, use the setIdAttributeNS method.
+     * </p>
+     * 
+     * @param name
+     *            the name of the attribute.
+     * @param isId
+     *            the flag which determines whether this attribute is of type
+     *            ID.
+     * @throws DOMException
+     *             if a DOM error occurred while setting the attribute type.
+     *             <p>
+     *             NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+     *             <br>
+     *             NOT_FOUND_ERR: Raised if the specified node is not an
+     *             attribute of this element.
+     *             </p>
+     */
     public void setIdAttribute(String name, boolean isId) throws DOMException {
         throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
 
-    public void setIdAttributeNS(String namespaceURI, String localName, boolean isId) throws DOMException {
+    /**
+     * <i>Description copied from interface: org.w3c.dom.Element (DOM Level
+     * 3)</i>
+     * <p>
+     * If the parameter isId is true, this method declares the specified
+     * attribute to be a user-determined ID attribute . This affects the value
+     * of Attr.isId and the behavior of Document.getElementById, but does not
+     * change any schema that may be in use, in particular this does not affect
+     * the Attr.schemaTypeInfo of the specified Attr node. Use the value false
+     * for the parameter isId to undeclare an attribute for being a
+     * user-determined ID attribute.
+     * </p>
+     * 
+     * @param namespaceURI
+     *            the namespace URI of the attribute.
+     * @param localName
+     *            the local name of the attribute.
+     * @param isId
+     *            the flag which determines whether this attribute is of type
+     *            ID.
+     * @throws DOMException
+     *             if a DOM error occurred while setting the attribute type.
+     *             <p>
+     *             NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+     *             <br>
+     *             NOT_FOUND_ERR: Raised if the specified node is not an
+     *             attribute of this element.
+     *             </p>
+     */
+    public void setIdAttributeNS(String namespaceURI, String localName, boolean isId)
+            throws DOMException {
         throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
 
+    /**
+     * <i>Description copied from interface: org.w3c.dom.Element (DOM Level
+     * 3)</i>
+     * <p>
+     * If the parameter isId is true, this method declares the specified
+     * attribute to be a user-determined ID attribute . This affects the value
+     * of Attr.isId and the behavior of Document.getElementById, but does not
+     * change any schema that may be in use, in particular this does not affect
+     * the Attr.schemaTypeInfo of the specified Attr node. Use the value false
+     * for the parameter isId to undeclare an attribute for being a
+     * user-determined ID attribute.
+     * </p>
+     * 
+     * @param idAttr
+     *            the attribute node.
+     * @param isId
+     *            the flag which determines whether this attribute is of type
+     *            ID.
+     * @throws DOMException
+     *             if a DOM error occurred while setting the attribute type.
+     *             <p>
+     *             NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+     *             <br>
+     *             NOT_FOUND_ERR: Raised if the specified node is not an
+     *             attribute of this element.
+     *             </p>
+     */
     public void setIdAttributeNode(Attr idAttr, boolean isId) throws DOMException {
         throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
@@ -305,8 +420,8 @@
             throw new IllegalArgumentException("newChild == null!");
         }
 
-        IIOMetadataNode newIIOChild = (IIOMetadataNode) newChild;
-        IIOMetadataNode refIIOChild = (IIOMetadataNode) refChild;
+        IIOMetadataNode newIIOChild = (IIOMetadataNode)newChild;
+        IIOMetadataNode refIIOChild = (IIOMetadataNode)refChild;
 
         newIIOChild.parent = this;
 
@@ -349,8 +464,8 @@
             throw new IllegalArgumentException("newChild == null!");
         }
 
-        IIOMetadataNode newIIOChild = (IIOMetadataNode) newChild;
-        IIOMetadataNode oldIIOChild = (IIOMetadataNode) oldChild;
+        IIOMetadataNode newIIOChild = (IIOMetadataNode)newChild;
+        IIOMetadataNode oldIIOChild = (IIOMetadataNode)oldChild;
 
         IIOMetadataNode next = oldIIOChild.nextSibling;
         IIOMetadataNode previous = oldIIOChild.previousSibling;
@@ -389,7 +504,7 @@
             throw new IllegalArgumentException("oldChild == null!");
         }
 
-        IIOMetadataNode oldIIOChild = (IIOMetadataNode) oldChild;
+        IIOMetadataNode oldIIOChild = (IIOMetadataNode)oldChild;
 
         // Fix next and previous
         IIOMetadataNode previous = oldIIOChild.previousSibling;
@@ -439,7 +554,8 @@
             }
         }
 
-        return cloned;  //To change body of implemented methods use File | Settings | File Templates.
+        return cloned; // To change body of implemented methods use File |
+        // Settings | File Templates.
     }
 
     public void normalize() {
@@ -470,52 +586,314 @@
         return attrs.list.size() > 0;
     }
 
+    /**
+     * <i>Description copied from interface: org.w3c.dom.Node (DOM Level 3)</i>
+     * <p>
+     * The absolute base URI of this node or null if the implementation wasn't
+     * able to obtain an absolute URI. This value is computed as described in.
+     * However, when the Document supports the feature "HTML" [DOM Level 2
+     * HTML], the base URI is computed using first the value of the href
+     * attribute of the HTML BASE element if any, and the value of the
+     * documentURI attribute from the Document interface otherwise.
+     * </p>
+     * 
+     * @return the string representation of the absolute base URI.
+     */
     public String getBaseURI() {
         throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
 
+    /**
+     * <i>Description copied from interface: org.w3c.dom.Node (DOM Level 3)</i>
+     * <p>
+     * Compares the reference node, i.e. the node on which this method is being
+     * called, with a node, i.e. the one passed as a parameter, with regard to
+     * their position in the document and according to the document order.
+     * </p>
+     * 
+     * @param other
+     *            the node to compare against the reference node.
+     * @return Returns how the node is positioned relatively to the reference
+     *         node.
+     * @throws DOMException
+     *             NOT_SUPPORTED_ERR: when the compared nodes are from different
+     *             DOM implementations that do not coordinate to return
+     *             consistent implementation-specific results.
+     */
     public short compareDocumentPosition(Node other) throws DOMException {
         throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
 
+    /**
+     * <i>Description copied from interface: org.w3c.dom.Node (DOM Level 3)</i>
+     * <p>
+     * This attribute returns the text content of this node and its descendants.
+     * When it is defined to be null, setting it has no effect. On setting, any
+     * possible children this node may have are removed and, if it the new
+     * string is not empty or null, replaced by a single Text node containing
+     * the string this attribute is set to. On getting, no serialization is
+     * performed, the returned string does not contain any markup. No whitespace
+     * normalization is performed and the returned string does not contain the
+     * white spaces in element content (see the attribute
+     * Text.isElementContentWhitespace). Similarly, on setting, no parsing is
+     * performed either, the input string is taken as pure textual content. The
+     * string returned is made of the text content of this node depending on its
+     * type, as defined below:
+     * <table>
+     * <tr>
+     * <td><strong>Node type</strong></td>
+     * <td><strong>Content</strong></td>
+     * </tr>
+     * <tr>
+     * <td>ELEMENT_NODE, ATTRIBUTE_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE,
+     * DOCUMENT_FRAGMENT_NODE</td>
+     * <td>concatenation of the textContent attribute value of every child node,
+     * excluding COMMENT_NODE and PROCESSING_INSTRUCTION_NODE nodes. This is the
+     * empty string if the node has no children.</td>
+     * </tr>
+     * <tr>
+     * <td>TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE,
+     * PROCESSING_INSTRUCTION_NODE</td>
+     * <td>nodeValue</td>
+     * </tr>
+     * <tr>
+     * <td>DOCUMENT_NODE, DOCUMENT_TYPE_NODE, NOTATION_NODE</td>
+     * <td>null</td>
+     * </tr>
+     * </table>
+     * </p>
+     * 
+     * @return the text content depending on the type of this node.
+     * @throws DOMException
+     *             DOMSTRING_SIZE_ERR: Raised when it would return more
+     *             characters than fit in a DOMString variable on the
+     *             implementation platform.
+     */
     public String getTextContent() throws DOMException {
         return textContent;
     }
 
+    /**
+     * <i>Description copied from interface: org.w3c.dom.Node (DOM Level 3)</i>
+     * <p>
+     * This attribute returns the text content of this node and its descendants.
+     * When it is defined to be null, setting it has no effect. On setting, any
+     * possible children this node may have are removed and, if it the new
+     * string is not empty or null, replaced by a single Text node containing
+     * the string this attribute is set to. On getting, no serialization is
+     * performed, the returned string does not contain any markup. No whitespace
+     * normalization is performed and the returned string does not contain the
+     * white spaces in element content (see the attribute
+     * Text.isElementContentWhitespace). Similarly, on setting, no parsing is
+     * performed either, the input string is taken as pure textual content. The
+     * string returned is made of the text content of this node depending on its
+     * type, as defined below:
+     * <table>
+     * <tr>
+     * <td><strong>Node type</strong></td>
+     * <td><strong>Content</strong></td>
+     * </tr>
+     * <tr>
+     * <td>ELEMENT_NODE, ATTRIBUTE_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE,
+     * DOCUMENT_FRAGMENT_NODE</td>
+     * <td>concatenation of the textContent attribute value of every child node,
+     * excluding COMMENT_NODE and PROCESSING_INSTRUCTION_NODE nodes. This is the
+     * empty string if the node has no children.</td>
+     * </tr>
+     * <tr>
+     * <td>TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE,
+     * PROCESSING_INSTRUCTION_NODE</td>
+     * <td>nodeValue</td>
+     * </tr>
+     * <tr>
+     * <td>DOCUMENT_NODE, DOCUMENT_TYPE_NODE, NOTATION_NODE</td>
+     * <td>null</td>
+     * </tr>
+     * </table>
+     * </p>
+     * 
+     * @param textContent
+     *            the text content for this node.
+     * @throws DOMException
+     *             NO_MODIFICATION_ALLOWED_ERR: Raised when the node is
+     *             readonly.
+     */
     public void setTextContent(String textContent) throws DOMException {
         this.textContent = textContent;
     }
 
+    /**
+     * <i>Description copied from interface: org.w3c.dom.Node (DOM Level 3)</i>
+     * <p>
+     * Returns whether this node is the same node as the given one. This method
+     * provides a way to determine whether two Node references returned by the
+     * implementation reference the same object. When two Node references are
+     * references to the same object, even if through a proxy, the references
+     * may be used completely interchangeably, such that all attributes have the
+     * same values and calling the same DOM method on either reference always
+     * has exactly the same effect.
+     * </p>
+     * 
+     * @param other
+     *            the node to test against.
+     * @return true, if the nodes are the same, false otherwise.
+     */
     public boolean isSameNode(Node other) {
         throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
 
+    /**
+     * <i>Description copied from interface: org.w3c.dom.Node (DOM Level 3)</i>
+     * <p>
+     * Look up the prefix associated to the given namespace URI, starting from
+     * this node. The default namespace declarations are ignored by this method.
+     * See for details on the algorithm used by this method.
+     * </p>
+     * 
+     * @param namespaceURI
+     *            the namespace URI to look for.
+     * @return the associated namespace prefix if found or null if none is
+     *         found. If more than one prefix are associated to the namespace
+     *         prefix, the returned namespace prefix is implementation
+     *         dependent.
+     */
     public String lookupPrefix(String namespaceURI) {
         throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
 
+    /**
+     * <i>Description copied from interface: org.w3c.dom.Node (DOM Level 3)</i>
+     * <p>
+     * This method checks if the specified namespaceURI is the default namespace
+     * or not.
+     * </p>
+     * 
+     * @param namespaceURI
+     *            the namespace URI to look for.
+     * @return true, if the specified namespaceURI is the default namespace,
+     *         false otherwise.
+     */
     public boolean isDefaultNamespace(String namespaceURI) {
         throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
 
+    /**
+     * <i>Description copied from interface: org.w3c.dom.Node (DOM Level 3)</i>
+     * <p>
+     * Look up the namespace URI associated to the given prefix, starting from
+     * this node. See for details on the algorithm used by this method.
+     * </p>
+     * 
+     * @param prefix
+     *            the prefix to look for. If this parameter is null, the method
+     *            will return the default namespace URI if any.
+     * @return the associated namespace URI or null if none is found.
+     */
     public String lookupNamespaceURI(String prefix) {
         throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
 
+    /**
+     * <i>Description copied from interface: org.w3c.dom.Node (DOM Level 3)</i>
+     * <p>
+     * Tests whether two nodes are equal. This method tests for equality of
+     * nodes, not sameness (i.e., whether the two nodes are references to the
+     * same object) which can be tested with Node.isSameNode(). All nodes that
+     * are the same will also be equal, though the reverse may not be true. Two
+     * nodes are equal if and only if the following conditions are satisfied:
+     * <p>
+     * <li>The two nodes are of the same type.</li>
+     * <li>The following string attributes are equal: nodeName, localName,
+     * namespaceURI, prefix, nodeValue . This is: they are both null, or they
+     * have the same length and are character for character identical.</li>
+     * <li>The attributes NamedNodeMaps are equal. This is: they are both null,
+     * or they have the same length and for each node that exists in one map
+     * there is a node that exists in the other map and is equal, although not
+     * necessarily at the same index.</li>
+     * <li>The childNodes NodeLists are equal. This is: they are both null, or
+     * they have the same length and contain equal nodes at the same index. Note
+     * that normalization can affect equality; to avoid this, nodes should be
+     * normalized before being compared.</li>
+     * </p>
+     * For two DocumentType nodes to be equal, the following conditions must
+     * also be satisfied:
+     * <p>
+     * <li>The following string attributes are equal: publicId, systemId,
+     * internalSubset.</li>
+     * <li>The entities NamedNodeMaps are equal.</li>
+     * <li>The notations NamedNodeMaps are equal.</li>
+     * </p>
+     * On the other hand, the following do not affect equality: the
+     * ownerDocument, baseURI, and parentNode attributes, the specified
+     * attribute for Attr nodes, the schemaTypeInfo attribute for Attr and
+     * Element nodes, the Text.isElementContentWhitespace attribute for Text
+     * nodes, as well as any user data or event listeners registered on the
+     * nodes. </p>
+     * <p>
+     * Note: As a general rule, anything not mentioned in the description above
+     * is not significant in consideration of equality checking. Note that
+     * future versions of this specification may take into account more
+     * attributes and implementations conform to this specification are expected
+     * to be updated accordingly.
+     * </p>
+     * 
+     * @param arg
+     *            the node to compare equality with.
+     * @return true, if the nodes are equal, false otherwise.
+     */
     public boolean isEqualNode(Node arg) {
         throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
 
+    /**
+     * <i>Description copied from interface: org.w3c.dom.Node (DOM Level 3)</i>
+     * <p>
+     * This method returns a specialized object which implements the specialized
+     * APIs of the specified feature and version, as specified in. The
+     * specialized object may also be obtained by using binding-specific casting
+     * methods but is not necessarily expected to, as discussed in. This method
+     * also allow the implementation to provide specialized objects which do not
+     * support the Node interface.
+     * </p>
+     * 
+     * @param feature
+     *            the name of the feature requested. Note that any plus sign "+"
+     *            prepended to the name of the feature will be ignored since it
+     *            is not significant in the context of this method.
+     * @param version
+     *            this is the version number of the feature to test.
+     * @return the object which implements the specialized APIs of the specified
+     *         feature and version, if any, or null if there is no object which
+     *         implements interfaces associated with that feature. If the
+     *         DOMObject returned by this method implements the Node interface,
+     *         it must delegate to the primary core Node and not return results
+     *         inconsistent with the primary core Node such as attributes,
+     *         childNodes, etc.
+     */
     public Object getFeature(String feature, String version) {
         throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
 
-    //???AWT
+    // ???AWT
     /*
-    public Object setUserData(String key, Object data, UserDataHandler handler) {
-        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
-    }*/
+     * public Object setUserData(String key, Object data, UserDataHandler
+     * handler) { throw new DOMException(DOMException.NOT_SUPPORTED_ERR,
+     * "Method not supported"); }
+     */
 
+    /**
+     * <i>Description copied from interface: org.w3c.dom.Node (DOM Level 3)</i>
+     * <p>
+     * Retrieves the object associated to a key on a this node. The object must
+     * first have been set to this node by calling setUserData with the same
+     * key.
+     * </p>
+     * 
+     * @param key
+     *            the key the object is associated to.
+     * @return the DOMUserData associated to the given key on this node, or null
+     *         if there was none.
+     */
     public Object getUserData(String key) {
         throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
@@ -540,7 +918,7 @@
     /**
      * Gets the user object associated with this node.
      * 
-     * @return the user object associated with this node
+     * @return the user object associated with this node.
      */
     public Object getUserObject() {
         return userObject;
@@ -549,7 +927,8 @@
     /**
      * Sets the user object associated with this node.
      * 
-     * @param userObject the new user object associated with this node
+     * @param userObject
+     *            the new user object associated with this node.
      */
     public void setUserObject(Object userObject) {
         this.userObject = userObject;
@@ -559,16 +938,21 @@
      * The Class IIOMetadataAttr.
      */
     private class IIOMetadataAttr extends IIOMetadataNode implements Attr {
-        
-        /** The owner element. */
+
+        /**
+         * The owner element.
+         */
         private Element ownerElement;
 
         /**
          * Instantiates a new iIO metadata attr.
          * 
-         * @param name the name
-         * @param value the value
-         * @param owner the owner
+         * @param name
+         *            the name.
+         * @param value
+         *            the value.
+         * @param owner
+         *            the owner.
          */
         public IIOMetadataAttr(String name, String value, Element owner) {
             super(name, value);
@@ -598,12 +982,16 @@
         /**
          * Sets the owner element.
          * 
-         * @param ownerElement the new owner element
+         * @param ownerElement
+         *            the new owner element.
          */
         public void setOwnerElement(Element ownerElement) {
             this.ownerElement = ownerElement;
         }
 
+        /**
+         * @return
+         */
         public boolean isId() {
             throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
         }
@@ -618,14 +1006,17 @@
      * The Class IIOMetadataNodeList.
      */
     private class IIOMetadataNodeList implements NodeList, NamedNodeMap {
-        
-        /** The list. */
+
+        /**
+         * The list.
+         */
         private List<IIOMetadataNode> list;
 
         /**
          * Instantiates a new iIO metadata node list.
          * 
-         * @param list the list
+         * @param list
+         *            the list.
          */
         IIOMetadataNodeList(List<IIOMetadataNode> list) {
             this.list = list;
@@ -644,7 +1035,7 @@
         }
 
         public Node getNamedItem(String name) {
-            for(IIOMetadataNode node:list) {
+            for (IIOMetadataNode node : list) {
                 if (name.equals(node.getNodeName())) {
                     return node;
                 }
@@ -653,11 +1044,13 @@
         }
 
         public Node setNamedItem(Node arg) throws DOMException {
-            throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR, "This NamedNodeMap is read-only!");
+            throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
+                    "This NamedNodeMap is read-only!");
         }
 
         public Node removeNamedItem(String name) throws DOMException {
-            throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR, "This NamedNodeMap is read-only!");
+            throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
+                    "This NamedNodeMap is read-only!");
         }
 
         public Node getNamedItemNS(String namespaceURI, String localName) throws DOMException {
@@ -665,11 +1058,13 @@
         }
 
         public Node setNamedItemNS(Node arg) throws DOMException {
-            throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR, "This NamedNodeMap is read-only!");
+            throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
+                    "This NamedNodeMap is read-only!");
         }
 
         public Node removeNamedItemNS(String namespaceURI, String localName) throws DOMException {
-            throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR, "This NamedNodeMap is read-only!");
+            throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
+                    "This NamedNodeMap is read-only!");
         }
     }
 }
diff --git a/awt/javax/imageio/metadata/IIOStandardMetadataFormat.java b/awt/javax/imageio/metadata/IIOStandardMetadataFormat.java
index 94d2125..706cb2f 100644
--- a/awt/javax/imageio/metadata/IIOStandardMetadataFormat.java
+++ b/awt/javax/imageio/metadata/IIOStandardMetadataFormat.java
@@ -15,18 +15,19 @@
  *  limitations under the License.
  */
 
-
 package javax.imageio.metadata;
 
 import javax.imageio.ImageTypeSpecifier;
 import java.util.ArrayList;
 
 /**
- * The Class IIOStandardMetadataFormat describes the rules of the 
- * standard metadata format.
+ * The class IIOStandardMetadataFormat describes the rules of the standard
+ * metadata format.
+ * 
+ * @since Android 1.0
  */
-class IIOStandardMetadataFormat  extends IIOMetadataFormatImpl {
-    
+class IIOStandardMetadataFormat extends IIOMetadataFormatImpl {
+
     /**
      * Instantiates a new IIOStandardMetadataFormat.
      */
@@ -41,7 +42,7 @@
     }
 
     /**
-     * Builds the dtd that describes the standard metadata format.
+     * Builds the DTD that describes the standard metadata format.
      */
     private void buildDTD() {
         // CHROMA
@@ -80,7 +81,10 @@
         addAttribute("ColorSpaceType", "name", DATATYPE_STRING, true, null, values);
 
         addElement("NumChannels", "Chroma", CHILD_POLICY_EMPTY);
-        addAttribute("NumChannels", "value", DATATYPE_INTEGER, true, 0, Integer.MAX_VALUE); // list - why?
+        addAttribute("NumChannels", "value", DATATYPE_INTEGER, true, 0, Integer.MAX_VALUE); // list
+        // -
+        // why
+        // ?
 
         addElement("Gamma", "Chroma", CHILD_POLICY_EMPTY);
         addAttribute("Gamma", "value", DATATYPE_FLOAT, true, null);
@@ -142,10 +146,8 @@
         addAttribute("BitsPerSample", "value", DATATYPE_INTEGER, true, 1, Integer.MAX_VALUE); // list
 
         addElement("SignificantBitsPerSample", "Data", CHILD_POLICY_EMPTY);
-        addAttribute(
-                "SignificantBitsPerSample", "value",
-                DATATYPE_INTEGER, true, 1, Integer.MAX_VALUE
-        ); // list
+        addAttribute("SignificantBitsPerSample", "value", DATATYPE_INTEGER, true, 1,
+                Integer.MAX_VALUE); // list
 
         addElement("SampleMSB", "Data", CHILD_POLICY_EMPTY);
         addAttribute("SampleMSB", "value", DATATYPE_INTEGER, true, 1, Integer.MAX_VALUE); // list
@@ -224,49 +226,29 @@
 
         addElement("ImageCreationTime", "Document", CHILD_POLICY_EMPTY);
         addAttribute("ImageCreationTime", "year", DATATYPE_INTEGER, true, null);
-        addAttribute(
-                "ImageCreationTime", "month",
-                DATATYPE_INTEGER, true, null, "1", "12", true, true
-        );
-        addAttribute(
-                "ImageCreationTime", "day",
-                DATATYPE_INTEGER, true, null, "1", "31", true, true
-        );
-        addAttribute(
-                "ImageCreationTime", "hour",
-                DATATYPE_INTEGER, false, "0", "0", "23", true, true
-        );
-        addAttribute(
-                "ImageCreationTime", "minute",
-                DATATYPE_INTEGER, false, "0", "0", "59", true, true
-        );
-        addAttribute(
-                "ImageCreationTime", "second",
-                DATATYPE_INTEGER, false, "0", "0", "60", true, true
-        );
+        addAttribute("ImageCreationTime", "month", DATATYPE_INTEGER, true, null, "1", "12", true,
+                true);
+        addAttribute("ImageCreationTime", "day", DATATYPE_INTEGER, true, null, "1", "31", true,
+                true);
+        addAttribute("ImageCreationTime", "hour", DATATYPE_INTEGER, false, "0", "0", "23", true,
+                true);
+        addAttribute("ImageCreationTime", "minute", DATATYPE_INTEGER, false, "0", "0", "59", true,
+                true);
+        addAttribute("ImageCreationTime", "second", DATATYPE_INTEGER, false, "0", "0", "60", true,
+                true);
 
         addElement("ImageModificationTime", "Document", CHILD_POLICY_EMPTY);
         addAttribute("ImageModificationTime", "year", DATATYPE_INTEGER, true, null);
-        addAttribute(
-                "ImageModificationTime", "month",
-                DATATYPE_INTEGER, true, null, "1", "12", true, true
-        );
-        addAttribute(
-                "ImageModificationTime", "day",
-                DATATYPE_INTEGER, true, null, "1", "31", true, true
-        );
-        addAttribute(
-                "ImageModificationTime", "hour",
-                DATATYPE_INTEGER, false, "0", "0", "23", true, true
-        );
-        addAttribute(
-                "ImageModificationTime", "minute",
-                DATATYPE_INTEGER, false, "0", "0", "59", true, true
-        );
-        addAttribute(
-                "ImageModificationTime", "second",
-                DATATYPE_INTEGER, false, "0", "0", "60", true, true
-        );
+        addAttribute("ImageModificationTime", "month", DATATYPE_INTEGER, true, null, "1", "12",
+                true, true);
+        addAttribute("ImageModificationTime", "day", DATATYPE_INTEGER, true, null, "1", "31", true,
+                true);
+        addAttribute("ImageModificationTime", "hour", DATATYPE_INTEGER, false, "0", "0", "23",
+                true, true);
+        addAttribute("ImageModificationTime", "minute", DATATYPE_INTEGER, false, "0", "0", "59",
+                true, true);
+        addAttribute("ImageModificationTime", "second", DATATYPE_INTEGER, false, "0", "0", "60",
+                true, true);
 
         // TEXT
         addElement("Text", standardMetadataFormatName, 0, Integer.MAX_VALUE); // CHILD_POLICY_REPEAT
@@ -313,4 +295,3 @@
         addAttribute("OpaqueTile", "y", DATATYPE_INTEGER, true, null);
     }
 }
-
diff --git a/awt/javax/imageio/metadata/package.html b/awt/javax/imageio/metadata/package.html
new file mode 100644
index 0000000..29bd51b
--- /dev/null
+++ b/awt/javax/imageio/metadata/package.html
@@ -0,0 +1,8 @@
+<html>
+  <body>
+    <p>
+      This package contains classes which allows to read and write describing metadata of image files.
+    </p>
+  @since Android 1.0
+  </body>
+</html>
diff --git a/awt/javax/imageio/package.html b/awt/javax/imageio/package.html
new file mode 100644
index 0000000..2fd6148
--- /dev/null
+++ b/awt/javax/imageio/package.html
@@ -0,0 +1,8 @@
+<html>
+  <body>
+    <p>
+      This package contains classes and interfaces which provides an Image I/O API. The contained classes and interfaces allow reading and writing image files of different formats.
+    </p>
+  @since Android 1.0
+  </body>
+</html>
diff --git a/awt/javax/imageio/plugins/bmp/BMPImageWriteParam.java b/awt/javax/imageio/plugins/bmp/BMPImageWriteParam.java
index 0cd44db..ecfb20a 100644
--- a/awt/javax/imageio/plugins/bmp/BMPImageWriteParam.java
+++ b/awt/javax/imageio/plugins/bmp/BMPImageWriteParam.java
@@ -15,19 +15,21 @@
  *  limitations under the License.
  */
 
-
 package javax.imageio.plugins.bmp;
 
 import javax.imageio.ImageWriteParam;
 import java.util.Locale;
 
 /**
- * The BMPImageWriteParam class allows encoding an image in
- * BMP format.
+ * The BMPImageWriteParam class allows encoding an image in BMP format.
+ * 
+ * @since Android 1.0
  */
 public class BMPImageWriteParam extends ImageWriteParam {
-    
-    /** The top down. */
+
+    /**
+     * The top down.
+     */
     private boolean topDown; // Default is bottom-up
 
     /**
@@ -41,33 +43,35 @@
     /**
      * Instantiates a new BMPImageWriteParam with the specified Locale.
      * 
-     * @param locale the specified Locale.
+     * @param locale
+     *            the specified Locale.
      */
     public BMPImageWriteParam(Locale locale) {
         super(locale);
 
         // Set the compression
         canWriteCompressed = true;
-        compressionTypes = new String[] {"BI_RGB", "BI_RLE8", "BI_RLE4", "BI_BITFIELDS"};
-        compressionType = compressionTypes[0]; 
+        compressionTypes = new String[] {
+                "BI_RGB", "BI_RLE8", "BI_RLE4", "BI_BITFIELDS"
+        };
+        compressionType = compressionTypes[0];
     }
 
     /**
-     * Sets true if the data will be written in a top-down order, 
-     * false otherwise.
+     * Sets true if the data will be written in a top-down order, false
+     * otherwise.
      * 
-     * @param topDown the new top-down value. 
+     * @param topDown
+     *            the new top-down value.
      */
     public void setTopDown(boolean topDown) {
         this.topDown = topDown;
     }
 
     /**
-     * Returns true if the data is written in top-down order, false
-     * otherwise.
+     * Returns true if the data is written in top-down order, false otherwise.
      * 
-     * @return true if the data is written in top-down order, false
-     * otherwise.
+     * @return true if the data is written in top-down order, false otherwise.
      */
     public boolean isTopDown() {
         return topDown;
diff --git a/awt/javax/imageio/plugins/bmp/package.html b/awt/javax/imageio/plugins/bmp/package.html
new file mode 100644
index 0000000..9494a10
--- /dev/null
+++ b/awt/javax/imageio/plugins/bmp/package.html
@@ -0,0 +1,8 @@
+<html>
+  <body>
+    <p>
+      This package contains auxiliary classes for the built-in BMP image plug-in.
+    </p>
+  @since Android 1.0
+  </body>
+</html>
diff --git a/awt/javax/imageio/plugins/jpeg/JPEGHuffmanTable.java b/awt/javax/imageio/plugins/jpeg/JPEGHuffmanTable.java
index 398c960..67b504b 100644
--- a/awt/javax/imageio/plugins/jpeg/JPEGHuffmanTable.java
+++ b/awt/javax/imageio/plugins/jpeg/JPEGHuffmanTable.java
@@ -18,82 +18,90 @@
 package javax.imageio.plugins.jpeg;
 
 /**
- * The JPEGHuffmanTable class represents a single JPEG Huffman table. 
- * It contains the standard tables from the JPEG specification.
+ * The JPEGHuffmanTable class represents a single JPEG Huffman table. It
+ * contains the standard tables from the JPEG specification.
+ * 
+ * @since Android 1.0
  */
 public class JPEGHuffmanTable {
-    
-    /** The standard DC luminance Huffman table . */
-    public static final JPEGHuffmanTable StdDCLuminance = new JPEGHuffmanTable(
-            new short[] {0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0},
-            new short[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0x0A, 0x0B},
-            false
-    );
 
-    /** The standard DC chrominance Huffman table. */
-    public static final JPEGHuffmanTable StdDCChrominance = new JPEGHuffmanTable(
-            new short[] {0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0},
-            new short[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0x0A, 0x0B},
-            false
-    );
+    /**
+     * The standard DC luminance Huffman table .
+     */
+    public static final JPEGHuffmanTable StdDCLuminance = new JPEGHuffmanTable(new short[] {
+            0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0
+    }, new short[] {
+            0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0x0A, 0x0B
+    }, false);
 
-    /** The standard AC luminance Huffman table. */
-    public static final JPEGHuffmanTable StdACLuminance = new JPEGHuffmanTable(
-            new short[] {0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7D},
-            new short[] {
-                    0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06,
-                    0x13, 0x51, 0x61, 0x07, 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xA1, 0x08,
-                    0x23, 0x42, 0xB1, 0xC1, 0x15, 0x52, 0xD1, 0xF0, 0x24, 0x33, 0x62, 0x72,
-                    0x82, 0x09, 0x0A, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x25, 0x26, 0x27, 0x28,
-                    0x29, 0x2A, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x43, 0x44, 0x45,
-                    0x46, 0x47, 0x48, 0x49, 0x4A, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59,
-                    0x5A, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x73, 0x74, 0x75,
-                    0x76, 0x77, 0x78, 0x79, 0x7A, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
-                    0x8A, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0xA2, 0xA3,
-                    0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6,
-                    0xB7, 0xB8, 0xB9, 0xBA, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9,
-                    0xCA, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xE1, 0xE2,
-                    0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xF1, 0xF2, 0xF3, 0xF4,
-                    0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA
-            },
-            false
-    );
+    /**
+     * The standard DC chrominance Huffman table.
+     */
+    public static final JPEGHuffmanTable StdDCChrominance = new JPEGHuffmanTable(new short[] {
+            0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0
+    }, new short[] {
+            0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0x0A, 0x0B
+    }, false);
 
-    /** 
-     * The standard AC chrominance Huffman table. */
-    public static final JPEGHuffmanTable StdACChrominance = new JPEGHuffmanTable(
-            new short[] {0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 0x77},
-            new short[] {
-                    0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, 0x41,
-                    0x51, 0x07, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91,
-                    0xA1, 0xB1, 0xC1, 0x09, 0x23, 0x33, 0x52, 0xF0, 0x15, 0x62, 0x72, 0xD1,
-                    0x0A, 0x16, 0x24, 0x34, 0xE1, 0x25, 0xF1, 0x17, 0x18, 0x19, 0x1A, 0x26,
-                    0x27, 0x28, 0x29, 0x2A, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x43, 0x44,
-                    0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
-                    0x59, 0x5A, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x73, 0x74,
-                    0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
-                    0x88, 0x89, 0x8A, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A,
-                    0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xB2, 0xB3, 0xB4,
-                    0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
-                    0xC8, 0xC9, 0xCA, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA,
-                    0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xF2, 0xF3, 0xF4,
-                    0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA
-            },
-            false
-    );
+    /**
+     * The standard AC luminance Huffman table.
+     */
+    public static final JPEGHuffmanTable StdACLuminance = new JPEGHuffmanTable(new short[] {
+            0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7D
+    }, new short[] {
+            0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, 0x13, 0x51,
+            0x61, 0x07, 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xA1, 0x08, 0x23, 0x42, 0xB1, 0xC1,
+            0x15, 0x52, 0xD1, 0xF0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0A, 0x16, 0x17, 0x18,
+            0x19, 0x1A, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
+            0x3A, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x53, 0x54, 0x55, 0x56, 0x57,
+            0x58, 0x59, 0x5A, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x73, 0x74, 0x75,
+            0x76, 0x77, 0x78, 0x79, 0x7A, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x92,
+            0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7,
+            0xA8, 0xA9, 0xAA, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xC2, 0xC3,
+            0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8,
+            0xD9, 0xDA, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xF1, 0xF2,
+            0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA
+    }, false);
 
-    /** The lengths. */
+    /**
+     * The standard AC chrominance Huffman table.
+     */
+    public static final JPEGHuffmanTable StdACChrominance = new JPEGHuffmanTable(new short[] {
+            0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 0x77
+    }, new short[] {
+            0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, 0x41, 0x51, 0x07,
+            0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, 0xA1, 0xB1, 0xC1, 0x09,
+            0x23, 0x33, 0x52, 0xF0, 0x15, 0x62, 0x72, 0xD1, 0x0A, 0x16, 0x24, 0x34, 0xE1, 0x25,
+            0xF1, 0x17, 0x18, 0x19, 0x1A, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x35, 0x36, 0x37, 0x38,
+            0x39, 0x3A, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x53, 0x54, 0x55, 0x56,
+            0x57, 0x58, 0x59, 0x5A, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x73, 0x74,
+            0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
+            0x8A, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0xA2, 0xA3, 0xA4, 0xA5,
+            0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA,
+            0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6,
+            0xD7, 0xD8, 0xD9, 0xDA, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xF2,
+            0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA
+    }, false);
+
+    /**
+     * The lengths.
+     */
     private short lengths[];
-    
-    /** The values. */
+
+    /**
+     * The values.
+     */
     private short values[];
 
     /**
      * Instantiates a new jPEG huffman table.
      * 
-     * @param lengths the lengths
-     * @param values the values
-     * @param copy the copy
+     * @param lengths
+     *            the lengths
+     * @param values
+     *            the values
+     * @param copy
+     *            the copy
      */
     JPEGHuffmanTable(short[] lengths, short[] values, boolean copy) {
         // Construction of standard tables without checks
@@ -106,9 +114,11 @@
     /**
      * Instantiates a new JPEGHuffmanTable.
      * 
-     * @param lengths the array of shorts lengths.
-     * @param values the array of shorts containing 
-     * the values in order of increasing code length.
+     * @param lengths
+     *            the array of shorts lengths.
+     * @param values
+     *            the array of shorts containing the values in order of
+     *            increasing code length.
      */
     public JPEGHuffmanTable(short[] lengths, short[] values) {
         if (lengths == null) {
@@ -145,8 +155,8 @@
     /**
      * Gets an array of lengths in the Huffman table.
      * 
-     * @return the array of short values representing the
-     * length values in the Huffman table.
+     * @return the array of short values representing the length values in the
+     *         Huffman table.
      */
     public short[] getLengths() {
         short newLengths[] = new short[lengths.length];
@@ -155,8 +165,7 @@
     }
 
     /**
-     * Gets an array of values represented by increasing length of 
-     * their codes.
+     * Gets an array of values represented by increasing length of their codes.
      * 
      * @return the array of values.
      */
@@ -169,8 +178,10 @@
     /**
      * Check huffman table.
      * 
-     * @param lengths the lengths
-     * @param values the values
+     * @param lengths
+     *            the lengths.
+     * @param values
+     *            the values.
      */
     private static void checkHuffmanTable(short[] lengths, short[] values) {
         int numLeaves = 0;
@@ -179,13 +190,15 @@
             numLeaves += length;
             possibleLeaves -= length;
             if (possibleLeaves < 0) {
-                throw new IllegalArgumentException("Invalid Huffman table provided, lengths are incorrect.");
+                throw new IllegalArgumentException(
+                        "Invalid Huffman table provided, lengths are incorrect.");
             }
             possibleLeaves <<= 1;
         }
 
         if (values.length != numLeaves) {
-            throw new IllegalArgumentException("Invalid Huffman table provided, sum of lengths != values.");
+            throw new IllegalArgumentException(
+                    "Invalid Huffman table provided, sum of lengths != values.");
         }
     }
 
diff --git a/awt/javax/imageio/plugins/jpeg/JPEGImageReadParam.java b/awt/javax/imageio/plugins/jpeg/JPEGImageReadParam.java
index dd08d51..2f3a9a8 100644
--- a/awt/javax/imageio/plugins/jpeg/JPEGImageReadParam.java
+++ b/awt/javax/imageio/plugins/jpeg/JPEGImageReadParam.java
@@ -20,18 +20,26 @@
 import javax.imageio.ImageReadParam;
 
 /**
- * The JPEGImageReadParam class provides functionality to set Huffman tables 
- * and quantization tables when using the JPEG reader plug-in.
+ * The JPEGImageReadParam class provides functionality to set Huffman tables and
+ * quantization tables when using the JPEG reader plug-in.
+ * 
+ * @since Android 1.0
  */
 public class JPEGImageReadParam extends ImageReadParam {
-    
-    /** The q tables. */
+
+    /**
+     * The q tables.
+     */
     private JPEGQTable qTables[];
-    
-    /** The dc huffman tables. */
+
+    /**
+     * The dc huffman tables.
+     */
     private JPEGHuffmanTable dcHuffmanTables[];
-    
-    /** The ac huffman tables. */
+
+    /**
+     * The ac huffman tables.
+     */
     private JPEGHuffmanTable acHuffmanTables[];
 
     /**
@@ -43,29 +51,28 @@
     /**
      * Returns true if tables are set, false otherwise.
      * 
-     * @return true if tables are set, false otherwise.
+     * @return true, if tables are set, false otherwise.
      */
     public boolean areTablesSet() {
         return qTables != null;
     }
 
     /**
-     * Sets the quantization and Huffman tables for using in 
-     * decoding streams.
+     * Sets the quantization and Huffman tables for using in decoding streams.
      * 
-     * @param qTables the quantization tables.
-     * @param DCHuffmanTables the standart DC Huffman tables.
-     * @param ACHuffmanTables the standart AC huffman tables.
+     * @param qTables
+     *            the quantization tables.
+     * @param DCHuffmanTables
+     *            the standart DC Huffman tables.
+     * @param ACHuffmanTables
+     *            the standart AC huffman tables.
      */
-    public void setDecodeTables(
-            JPEGQTable[] qTables,
-            JPEGHuffmanTable[] DCHuffmanTables,
-            JPEGHuffmanTable[] ACHuffmanTables
-    ) {
+    public void setDecodeTables(JPEGQTable[] qTables, JPEGHuffmanTable[] DCHuffmanTables,
+            JPEGHuffmanTable[] ACHuffmanTables) {
         if (qTables == null || DCHuffmanTables == null || ACHuffmanTables == null) {
             throw new IllegalArgumentException("Invalid JPEG table arrays");
         }
-        if(DCHuffmanTables.length != ACHuffmanTables.length) {
+        if (DCHuffmanTables.length != ACHuffmanTables.length) {
             throw new IllegalArgumentException("Invalid JPEG table arrays");
         }
         if (qTables.length > 4 || DCHuffmanTables.length > 4) {
@@ -112,5 +119,5 @@
      */
     public JPEGHuffmanTable[] getACHuffmanTables() {
         return acHuffmanTables == null ? null : acHuffmanTables.clone();
-    }    
+    }
 }
diff --git a/awt/javax/imageio/plugins/jpeg/JPEGImageWriteParam.java b/awt/javax/imageio/plugins/jpeg/JPEGImageWriteParam.java
index 34a3cd9..b979911 100644
--- a/awt/javax/imageio/plugins/jpeg/JPEGImageWriteParam.java
+++ b/awt/javax/imageio/plugins/jpeg/JPEGImageWriteParam.java
@@ -23,38 +23,52 @@
 import java.util.Locale;
 
 /**
- * The JPEGImageWriteParam class allows to set JPEG Huffman tables 
- * and quantization when using the JPEG writer plug-in.
+ * The JPEGImageWriteParam class allows to set JPEG Huffman tables and
+ * quantization when using the JPEG writer plug-in.
+ * 
+ * @since Android 1.0
  */
 public class JPEGImageWriteParam extends ImageWriteParam {
-    
-    /** The Constant COMP_QUALITY_VALUES. */
-    private static final float[] COMP_QUALITY_VALUES = {0.05f, 0.75f, 0.95f};
-    
-    /** The Constant COMP_QUALITY_DESCRIPTIONS. */
-    private static final String[] COMP_QUALITY_DESCRIPTIONS = {
-            "Minimum useful",
-            "Visually lossless",
-            "Maximum useful"
+
+    /**
+     * The Constant COMP_QUALITY_VALUES.
+     */
+    private static final float[] COMP_QUALITY_VALUES = {
+            0.05f, 0.75f, 0.95f
     };
 
-    /** The q tables. */
+    /**
+     * The Constant COMP_QUALITY_DESCRIPTIONS.
+     */
+    private static final String[] COMP_QUALITY_DESCRIPTIONS = {
+            "Minimum useful", "Visually lossless", "Maximum useful"
+    };
+
+    /**
+     * The q tables.
+     */
     private JPEGQTable[] qTables;
-    
-    /** The dc huffman tables. */
+
+    /**
+     * The dc huffman tables.
+     */
     private JPEGHuffmanTable[] dcHuffmanTables;
-    
-    /** The ac huffman tables. */
+
+    /**
+     * The ac huffman tables.
+     */
     private JPEGHuffmanTable[] acHuffmanTables;
 
-    /** The optimize huffman tables. */
+    /**
+     * The optimize huffman tables.
+     */
     private boolean optimizeHuffmanTables;
 
     /**
-     * Instantiates a new JPEGImageWriteParam object with 
-     * the specified Locale.
+     * Instantiates a new JPEGImageWriteParam object with the specified Locale.
      * 
-     * @param locale the Locale.
+     * @param locale
+     *            the Locale.
      */
     public JPEGImageWriteParam(Locale locale) {
         super(locale);
@@ -63,37 +77,38 @@
         progressiveMode = ImageWriteParam.MODE_DISABLED;
 
         canWriteCompressed = true;
-        compressionTypes = new String[]{"JPEG"};
-        compressionType = compressionTypes[0]; 
+        compressionTypes = new String[] {
+            "JPEG"
+        };
+        compressionType = compressionTypes[0];
         compressionQuality = JPEGConsts.DEFAULT_JPEG_COMPRESSION_QUALITY;
     }
 
     /**
      * Returns true if tables are set, false otherwise.
      * 
-     * @return true if tables are set, false otherwise.
+     * @return true, if tables are set, false otherwise.
      */
     public boolean areTablesSet() {
         return qTables != null;
     }
 
     /**
-     * Sets the quantization and Huffman tables for using in 
-     * encoding streams.
+     * Sets the quantization and Huffman tables for using in encoding streams.
      * 
-     * @param qTables the quantization tables.
-     * @param DCHuffmanTables the standart DC Huffman tables.
-     * @param ACHuffmanTables the standart AC huffman tables.
+     * @param qTables
+     *            the quantization tables.
+     * @param DCHuffmanTables
+     *            the standart DC Huffman tables.
+     * @param ACHuffmanTables
+     *            the standart AC huffman tables.
      */
-    public void setEncodeTables(
-            JPEGQTable[] qTables,
-            JPEGHuffmanTable[] DCHuffmanTables,
-            JPEGHuffmanTable[] ACHuffmanTables
-    ) {
+    public void setEncodeTables(JPEGQTable[] qTables, JPEGHuffmanTable[] DCHuffmanTables,
+            JPEGHuffmanTable[] ACHuffmanTables) {
         if (qTables == null || DCHuffmanTables == null || ACHuffmanTables == null) {
             throw new IllegalArgumentException("Invalid JPEG table arrays");
         }
-        if(DCHuffmanTables.length != ACHuffmanTables.length) {
+        if (DCHuffmanTables.length != ACHuffmanTables.length) {
             throw new IllegalArgumentException("Invalid JPEG table arrays");
         }
         if (qTables.length > 4 || DCHuffmanTables.length > 4) {
@@ -155,21 +170,22 @@
     }
 
     /**
-     * Sets the flag indicated that the writer will generate optimized 
-     * Huffman tables for the image as part of the writing process.
+     * Sets the flag indicated that the writer will generate optimized Huffman
+     * tables for the image as part of the writing process.
      * 
-     * @param optimize the flag of optimizing huffman tables.
+     * @param optimize
+     *            the flag of optimizing huffman tables.
      */
     public void setOptimizeHuffmanTables(boolean optimize) {
         optimizeHuffmanTables = optimize;
     }
 
     /**
-     * Returns true if the writer generates optimized Huffman tables,
-     * false otherwise.
+     * Returns true if the writer generates optimized Huffman tables, false
+     * otherwise.
      * 
-     * @return the true if the writer generates optimized Huffman tables,
-     * false otherwise.
+     * @return true, if the writer generates optimized Huffman tables, false
+     *         otherwise.
      */
     public boolean getOptimizeHuffmanTables() {
         return optimizeHuffmanTables;
diff --git a/awt/javax/imageio/plugins/jpeg/JPEGQTable.java b/awt/javax/imageio/plugins/jpeg/JPEGQTable.java
index 0c5b37e..3461d46 100644
--- a/awt/javax/imageio/plugins/jpeg/JPEGQTable.java
+++ b/awt/javax/imageio/plugins/jpeg/JPEGQTable.java
@@ -18,88 +18,92 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio.plugins.jpeg;
 
 /**
- * The JPEGQTable class represents a single JPEG quantization table 
- * and provides for the standard tables taken from the JPEG specification.
+ * The JPEGQTable class represents a single JPEG quantization table and provides
+ * for the standard tables taken from the JPEG specification.
+ * 
+ * @since Android 1.0
  */
 public class JPEGQTable {
 
-    /** The Constant SIZE. */
+    /**
+     * The Constant SIZE.
+     */
     private final static int SIZE = 64;
-    
-    /** The Constant BASELINE_MAX. */
+
+    /**
+     * The Constant BASELINE_MAX.
+     */
     private final static int BASELINE_MAX = 255;
-    
-    /** The Constant MAX. */
+
+    /**
+     * The Constant MAX.
+     */
     private final static int MAX = 32767;
 
-
-    /** The table. */
+    /**
+     * The table.
+     */
     private int[] theTable;
 
     /*
-     * K1 & K2 tables can be found in the JPEG format specification 
-     * at http://www.w3.org/Graphics/JPEG/itu-t81.pdf
+     * K1 & K2 tables can be found in the JPEG format specification at
+     * http://www.w3.org/Graphics/JPEG/itu-t81.pdf
      */
 
-    /** The Constant K1LumTable. */
+    /**
+     * The Constant K1LumTable.
+     */
     private static final int[] K1LumTable = new int[] {
-        16,  11,  10,  16,  24,  40,  51,  61,
-        12,  12,  14,  19,  26,  58,  60,  55,
-        14,  13,  16,  24,  40,  57,  69,  56,
-        14,  17,  22,  29,  51,  87,  80,  62,
-        18,  22,  37,  56,  68,  109, 103, 77,
-        24,  35,  55,  64,  81,  104, 113, 92,
-        49,  64,  78,  87,  103, 121, 120, 101,
-        72,  92,  95,  98,  112, 100, 103, 99
+            16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55, 14, 13, 16, 24, 40, 57,
+            69, 56, 14, 17, 22, 29, 51, 87, 80, 62, 18, 22, 37, 56, 68, 109, 103, 77, 24, 35, 55,
+            64, 81, 104, 113, 92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100,
+            103, 99
     };
 
-    /** The Constant K2ChrTable. */
+    /**
+     * The Constant K2ChrTable.
+     */
     private static final int[] K2ChrTable = new int[] {
-        17,  18,  24,  47,  99,  99,  99,  99,
-        18,  21,  26,  66,  99,  99,  99,  99,
-        24,  26,  56,  99,  99,  99,  99,  99,
-        47,  66,  99,  99,  99,  99,  99,  99,
-        99,  99,  99,  99,  99,  99,  99,  99,
-        99,  99,  99,  99,  99,  99,  99,  99,
-        99,  99,  99,  99,  99,  99,  99,  99,
-        99,  99,  99,  99,  99,  99,  99,  99
+            17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99, 24, 26, 56, 99, 99, 99,
+            99, 99, 47, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
+            99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
     };
 
-    /** 
-     * The K1Luminance indicates standart table K.1 from JPEG
-     * specification and produces "good" quality output. 
+    /**
+     * The K1Luminance indicates standard table K.1 from JPEG specification and
+     * produces "good" quality output.
      */
     public static final JPEGQTable K1Luminance = new JPEGQTable(K1LumTable);
-    
-    /** 
-     * The K1Div2Luminance indicates K.1 table from JPEG
-     * specification with all elements divided by 2 and produces
-     * "very good" quality output. 
+
+    /**
+     * The K1Div2Luminance indicates K.1 table from JPEG specification with all
+     * elements divided by 2 and produces "very good" quality output.
      */
     public static final JPEGQTable K1Div2Luminance = K1Luminance.getScaledInstance(0.5f, true);
-    
-    /** 
-     * The K2Chrominance indicates K.2 table from JPEG
-     * specification and produces "good" quality output. 
+
+    /**
+     * The K2Chrominance indicates K.2 table from JPEG specification and
+     * produces "good" quality output.
      */
     public static final JPEGQTable K2Chrominance = new JPEGQTable(K2ChrTable);
-    
-    /** 
+
+    /**
      * The Constant K2Div2Chrominance indicates K.2 table from JPEG
-     * specification with all elements divided by 2 and produces
-     * "very good" quality output. 
+     * specification with all elements divided by 2 and produces "very good"
+     * quality output.
      */
     public static final JPEGQTable K2Div2Chrominance = K2Chrominance.getScaledInstance(0.5f, true);;
 
-
     /**
-     * Instantiates a new JPEGQTable from the array, which 
-     * should contain 64 elements in natural order.
+     * Instantiates a new JPEGQTable from the array, which should contain 64
+     * elements in natural order.
      * 
-     * @param table the quantization table.
+     * @param table
+     *            the quantization table.
      */
     public JPEGQTable(int[] table) {
         if (table == null) {
@@ -112,23 +116,22 @@
     }
 
     /**
-     * Gets the current quantization table as an array of int values.
+     * Gets the current quantization table as an array of integer values.
      * 
-     * @return the current quantization table as an array of int values.
+     * @return the current quantization table as an array of integer values.
      */
     public int[] getTable() {
         return theTable.clone();
     }
 
     /**
-     * Gets the scaled instance as quantization table where 
-     * the values are multiplied by the scaleFactor and then clamped 
-     * if forceBaseline is true.
+     * Gets the scaled instance as quantization table where the values are
+     * multiplied by the scaleFactor and then clamped if forceBaseline is true.
      * 
-     * @param scaleFactor the scale factor of table.
-     * @param forceBaseline the force baseline flag, the values 
-     * should be clamped if true.
-     * 
+     * @param scaleFactor
+     *            the scale factor of table.
+     * @param forceBaseline
+     *            the force baseline flag, the values should be clamped if true.
      * @return the new quantization table.
      */
     public JPEGQTable getScaledInstance(float scaleFactor, boolean forceBaseline) {
@@ -156,7 +159,7 @@
      */
     @Override
     public String toString() {
-        //-- TODO more informative info
+        // -- TODO more informative info
         return "JPEGQTable";
     }
 }
diff --git a/awt/javax/imageio/plugins/jpeg/package.html b/awt/javax/imageio/plugins/jpeg/package.html
new file mode 100644
index 0000000..14575c4
--- /dev/null
+++ b/awt/javax/imageio/plugins/jpeg/package.html
@@ -0,0 +1,8 @@
+<html>
+  <body>
+    <p>
+      This package contains auxiliary classes for the built-in JPEG image plug-in.
+    </p>
+  @since Android 1.0
+  </body>
+</html>
diff --git a/awt/javax/imageio/spi/IIORegistry.java b/awt/javax/imageio/spi/IIORegistry.java
index 3c1c989..01ddeaa 100644
--- a/awt/javax/imageio/spi/IIORegistry.java
+++ b/awt/javax/imageio/spi/IIORegistry.java
@@ -18,6 +18,7 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio.spi;
 
 import java.util.Arrays;
@@ -39,37 +40,41 @@
  */
 
 /**
- * The IIORegistry class registers service provider instances 
- * (SPI). Service provider instances are recognized by specific 
- * meta-information in the JAR files containing them. The JAR
- * files with SPI classes are loaded from the application class 
- * path. 
+ * The IIORegistry class registers service provider instances (SPI). Service
+ * provider instances are recognized by specific meta-information in the JAR
+ * files containing them. The JAR files with SPI classes are loaded from the
+ * application class path.
+ * 
+ * @since Android 1.0
  */
 public final class IIORegistry extends ServiceRegistry {
 
-    /** The instance. */
+    /**
+     * The instance.
+     */
     private static IIORegistry instance;
 
-    /** The Constant CATEGORIES. */
+    /**
+     * The Constant CATEGORIES.
+     */
     private static final Class[] CATEGORIES = new Class[] {
-        javax.imageio.spi.ImageWriterSpi.class,
-        javax.imageio.spi.ImageReaderSpi.class,
-        javax.imageio.spi.ImageInputStreamSpi.class,
-        //javax.imageio.spi.ImageTranscoderSpi.class,
-        javax.imageio.spi.ImageOutputStreamSpi.class
+            javax.imageio.spi.ImageWriterSpi.class, javax.imageio.spi.ImageReaderSpi.class,
+            javax.imageio.spi.ImageInputStreamSpi.class,
+            // javax.imageio.spi.ImageTranscoderSpi.class,
+            javax.imageio.spi.ImageOutputStreamSpi.class
     };
 
     /**
-     * Instantiates a new iIO registry.
+     * Instantiates a new IIO registry.
      */
     private IIORegistry() {
-        super(Arrays.<Class<?>>asList(CATEGORIES).iterator());
+        super(Arrays.<Class<?>> asList(CATEGORIES).iterator());
         registerBuiltinSpis();
         registerApplicationClasspathSpis();
     }
 
     /**
-     * Register builtin spis.
+     * Register built-in SPIs.
      */
     private void registerBuiltinSpis() {
         registerServiceProvider(new JPEGImageWriterSpi());
@@ -80,9 +85,9 @@
         registerServiceProvider(new FileIISSpi());
         registerServiceProvider(new RAFIOSSpi());
         registerServiceProvider(new RAFIISSpi());
-        registerServiceProvider(new OutputStreamIOSSpi());        
+        registerServiceProvider(new OutputStreamIOSSpi());
         registerServiceProvider(new InputStreamIISSpi());
-        //-- TODO implement
+        // -- TODO implement
     }
 
     /**
@@ -91,7 +96,8 @@
      * @return the default IIORegistry instance.
      */
     public static IIORegistry getDefaultInstance() {
-        // TODO implement own instance for each ThreadGroup (see also ThreadLocal)
+        // TODO implement own instance for each ThreadGroup (see also
+        // ThreadLocal)
         synchronized (IIORegistry.class) {
             if (instance == null) {
                 instance = new IIORegistry();
@@ -101,10 +107,9 @@
     }
 
     /**
-     * Registers all service providers from the application class 
-     * path.
+     * Registers all service providers from the application class path.
      */
     public void registerApplicationClasspathSpis() {
-        //-- TODO implement for non-builtin plugins
+        // -- TODO implement for non-builtin plugins
     }
 }
diff --git a/awt/javax/imageio/spi/IIOServiceProvider.java b/awt/javax/imageio/spi/IIOServiceProvider.java
index f5873bf..e947677 100644
--- a/awt/javax/imageio/spi/IIOServiceProvider.java
+++ b/awt/javax/imageio/spi/IIOServiceProvider.java
@@ -18,27 +18,36 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio.spi;
 
 import java.util.Locale;
 
 /**
- * The IIOServiceProvider abstract class provides base functionality 
- * for imageio service provider interfaces (SPIs). 
+ * The IIOServiceProvider abstract class provides base functionality for ImageIO
+ * service provider interfaces (SPIs).
+ * 
+ * @since Android 1.0
  */
 public abstract class IIOServiceProvider implements RegisterableService {
 
-    /** The vendor name of this service provider. */
+    /**
+     * The vendor name of this service provider.
+     */
     protected String vendorName;
-    
-    /** The version of this service provider. */
+
+    /**
+     * The version of this service provider.
+     */
     protected String version;
 
     /**
      * Instantiates a new IIOServiceProvider.
      * 
-     * @param vendorName the vendor name of service provider.
-     * @param version the version of service provider.
+     * @param vendorName
+     *            the vendor name of service provider.
+     * @param version
+     *            the version of service provider.
      */
     public IIOServiceProvider(String vendorName, String version) {
         if (vendorName == null) {
@@ -85,12 +94,11 @@
     }
 
     /**
-     * Gets a description of this service provider.   
-     * The result string should be localized for the specified 
-     * Locale.
+     * Gets a description of this service provider. The result string should be
+     * localized for the specified Locale.
      * 
-     * @param locale the specified Locale.
-     * 
+     * @param locale
+     *            the specified Locale.
      * @return the description of this service provider.
      */
     public abstract String getDescription(Locale locale);
diff --git a/awt/javax/imageio/spi/ImageInputStreamSpi.java b/awt/javax/imageio/spi/ImageInputStreamSpi.java
index 47d210a..fc859a8 100644
--- a/awt/javax/imageio/spi/ImageInputStreamSpi.java
+++ b/awt/javax/imageio/spi/ImageInputStreamSpi.java
@@ -18,6 +18,7 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio.spi;
 
 import java.io.File;
@@ -25,13 +26,16 @@
 import javax.imageio.stream.ImageInputStream;
 
 /**
- * The ImageInputStreamSpi abstract class is a service provider 
- * interface (SPI) for ImageInputStreams.  
+ * The ImageInputStreamSpi abstract class is a service provider interface (SPI)
+ * for ImageInputStreams.
+ * 
+ * @since Android 1.0
  */
-public abstract class ImageInputStreamSpi extends IIOServiceProvider implements
-        RegisterableService {
-    
-    /** The input class. */
+public abstract class ImageInputStreamSpi extends IIOServiceProvider implements RegisterableService {
+
+    /**
+     * The input class.
+     */
     protected Class<?> inputClass;
 
     /**
@@ -44,9 +48,12 @@
     /**
      * Instantiates a new ImageInputStreamSpi.
      * 
-     * @param vendorName the vendor name.
-     * @param version the version.
-     * @param inputClass the input class.
+     * @param vendorName
+     *            the vendor name.
+     * @param version
+     *            the version.
+     * @param inputClass
+     *            the input class.
      */
     public ImageInputStreamSpi(String vendorName, String version, Class<?> inputClass) {
         super(vendorName, version);
@@ -54,8 +61,8 @@
     }
 
     /**
-     * Gets an input Class object that represents class or 
-     * interface that must be implemented by an input source.
+     * Gets an input Class object that represents class or interface that must
+     * be implemented by an input source.
      * 
      * @return the input class.
      */
@@ -64,61 +71,59 @@
     }
 
     /**
-     * Returns true if the ImageInputStream can use a cache 
-     * file. If this method returns false, the value of the 
-     * useCache parameter of createInputStreamInstance will 
-     * be ignored. The default implementation returns false.
+     * Returns true if the ImageInputStream can use a cache file. If this method
+     * returns false, the value of the useCache parameter of
+     * createInputStreamInstance will be ignored. The default implementation
+     * returns false.
      * 
-     * @return true if the ImageInputStream can use a cache 
-     * file, false otherwise.
+     * @return true, if the ImageInputStream can use a cache file, false
+     *         otherwise.
      */
     public boolean canUseCacheFile() {
-        return false; //-- def
+        return false; // -- def
     }
 
     /**
-     * Returns true if the ImageInputStream implementation 
-     * requires the use of a cache file. The default implementation 
-     * returns false.
+     * Returns true if the ImageInputStream implementation requires the use of a
+     * cache file. The default implementation returns false.
      * 
-     * @return true if the ImageInputStream implementation 
-     * requires the use of a cache file, false otherwise.
+     * @return true, if the ImageInputStream implementation requires the use of
+     *         a cache file, false otherwise.
      */
     public boolean needsCacheFile() {
         return false; // def
     }
 
     /**
-     * Creates the ImageInputStream associated with this 
-     * service provider. The input object should
-     * be an instance of the class returned by th getInputClass 
-     * method. This method uses the specified directory
-     * for the cache file if the useCache parameter is true. 
+     * Creates the ImageInputStream associated with this service provider. The
+     * input object should be an instance of the class returned by the
+     * getInputClass method. This method uses the specified directory for the
+     * cache file if the useCache parameter is true.
      * 
-     * @param input the input Object.
-     * @param useCache the flag indicating if a cache file 
-     * is needed or not.
-     * @param cacheDir the cache directory.
-     * 
+     * @param input
+     *            the input Object.
+     * @param useCache
+     *            the flag indicating if a cache file is needed or not.
+     * @param cacheDir
+     *            the cache directory.
      * @return the ImageInputStream.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public abstract ImageInputStream createInputStreamInstance(Object input, boolean useCache,
             File cacheDir) throws IOException;
 
     /**
-     * Creates the ImageInputStream associated with this 
-     * service provider. The input object should
-     * be an instance of the class returned by getInputClass 
-     * method. This method uses the default system directory
-     * for the cache file, if it is needed. 
+     * Creates the ImageInputStream associated with this service provider. The
+     * input object should be an instance of the class returned by getInputClass
+     * method. This method uses the default system directory for the cache file,
+     * if it is needed.
      * 
-     * @param input the input Object.
-     * 
+     * @param input
+     *            the input Object.
      * @return the ImageInputStream.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public ImageInputStream createInputStreamInstance(Object input) throws IOException {
         return createInputStreamInstance(input, true, null);
diff --git a/awt/javax/imageio/spi/ImageOutputStreamSpi.java b/awt/javax/imageio/spi/ImageOutputStreamSpi.java
index d45e24c..b7a9a5c 100644
--- a/awt/javax/imageio/spi/ImageOutputStreamSpi.java
+++ b/awt/javax/imageio/spi/ImageOutputStreamSpi.java
@@ -18,6 +18,7 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio.spi;
 
 import javax.imageio.stream.ImageOutputStream;
@@ -25,13 +26,17 @@
 import java.io.File;
 
 /**
- * The ImageOutputStreamSpi abstract class is a service provider 
- * interface (SPI) for ImageOutputStreams. 
+ * The ImageOutputStreamSpi abstract class is a service provider interface (SPI)
+ * for ImageOutputStreams.
+ * 
+ * @since Android 1.0
  */
 public abstract class ImageOutputStreamSpi extends IIOServiceProvider implements
         RegisterableService {
-    
-    /** The output class. */
+
+    /**
+     * The output class.
+     */
     protected Class<?> outputClass;
 
     /**
@@ -44,9 +49,12 @@
     /**
      * Instantiates a new ImageOutputStreamSpi.
      * 
-     * @param vendorName the vendor name.
-     * @param version the version.
-     * @param outputClass the output class.
+     * @param vendorName
+     *            the vendor name.
+     * @param version
+     *            the version.
+     * @param outputClass
+     *            the output class.
      */
     public ImageOutputStreamSpi(String vendorName, String version, Class<?> outputClass) {
         super(vendorName, version);
@@ -54,8 +62,8 @@
     }
 
     /**
-     * Gets an output Class object that represents the class or 
-     * interface that must be implemented by an output source.
+     * Gets an output Class object that represents the class or interface that
+     * must be implemented by an output source.
      * 
      * @return the output class.
      */
@@ -64,63 +72,61 @@
     }
 
     /**
-     * Returns true if the ImageOutputStream can use a cache 
-     * file. If this method returns false, the value of the 
-     * useCache parameter of createOutputStreamInstance will 
-     * be ignored. The default implementation returns false.
+     * Returns true if the ImageOutputStream can use a cache file. If this
+     * method returns false, the value of the useCache parameter of
+     * createOutputStreamInstance will be ignored. The default implementation
+     * returns false.
      * 
-     * @return true if the ImageOutputStream can use a cache 
-     * file, false otherwise.
+     * @return true, if the ImageOutputStream can use a cache file, false
+     *         otherwise.
      */
     public boolean canUseCacheFile() {
         return false; // def
     }
 
     /**
-     * Returns true if the ImageOutputStream  implementation 
-     * requires the use of a cache file. The default implementation 
-     * returns false.
+     * Returns true if the ImageOutputStream implementation requires the use of
+     * a cache file. The default implementation returns false.
      * 
-     * @return true if the ImageOutputStream  implementation 
-     * requires the use of a cache file, false otherwise.
+     * @return true, if the ImageOutputStream implementation requires the use of
+     *         a cache file, false otherwise.
      */
     public boolean needsCacheFile() {
         return false; // def
     }
 
     /**
-     * Creates the ImageOutputStream associated with this 
-     * service provider. The output object should
-     * be an instance of the class returned by getOutputClass 
-     * method. This method uses the default system directory
-     * for the cache file, if it is needed. 
+     * Creates the ImageOutputStream associated with this service provider. The
+     * output object should be an instance of the class returned by
+     * getOutputClass method. This method uses the default system directory for
+     * the cache file, if it is needed.
      * 
-     * @param output the output Object.
-     * 
+     * @param output
+     *            the output Object.
      * @return the ImageOutputStream.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public ImageOutputStream createOutputStreamInstance(Object output) throws IOException {
         return createOutputStreamInstance(output, true, null);
     }
 
     /**
-     * Creates the ImageOutputStream associated with this 
-     * service provider. The output object should
-     * be an instance of the class returned by getInputClass 
-     * method. This method uses the specified directory
-     * for the cache file, if the useCache parameter is true. 
+     * Creates the ImageOutputStream associated with this service provider. The
+     * output object should be an instance of the class returned by
+     * getInputClass method. This method uses the specified directory for the
+     * cache file, if the useCache parameter is true.
      * 
-     * @param output the output Object.
-     * @param useCache the flag indicating if cache file 
-     * is needed or not.
-     * @param cacheDir the cache directory.
-     * 
+     * @param output
+     *            the output Object.
+     * @param useCache
+     *            the flag indicating if cache file is needed or not.
+     * @param cacheDir
+     *            the cache directory.
      * @return the ImageOutputStream.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
-    public abstract ImageOutputStream createOutputStreamInstance(Object output,
-            boolean useCache, File cacheDir) throws IOException;
+    public abstract ImageOutputStream createOutputStreamInstance(Object output, boolean useCache,
+            File cacheDir) throws IOException;
 }
diff --git a/awt/javax/imageio/spi/ImageReaderSpi.java b/awt/javax/imageio/spi/ImageReaderSpi.java
index 2e2484c..0528d25 100644
--- a/awt/javax/imageio/spi/ImageReaderSpi.java
+++ b/awt/javax/imageio/spi/ImageReaderSpi.java
@@ -18,6 +18,7 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio.spi;
 
 import javax.imageio.stream.ImageInputStream;
@@ -25,20 +26,28 @@
 import java.io.IOException;
 
 /**
- * The ImageReaderSpi abstract class is a service provider 
- * interface (SPI) for ImageReaders.
+ * The ImageReaderSpi abstract class is a service provider interface (SPI) for
+ * ImageReaders.
+ * 
+ * @since Android 1.0
  */
 public abstract class ImageReaderSpi extends ImageReaderWriterSpi {
 
-    /** 
-     * The STANDARD_INPUT_TYPE contains ImageInputStream.class. 
+    /**
+     * The STANDARD_INPUT_TYPE contains ImageInputStream.class.
      */
-    public static final Class[] STANDARD_INPUT_TYPE = new Class[] {ImageInputStream.class};
+    public static final Class[] STANDARD_INPUT_TYPE = new Class[] {
+        ImageInputStream.class
+    };
 
-    /** The input types. */
+    /**
+     * The input types.
+     */
     protected Class[] inputTypes;
-    
-    /** The writer SPI names. */
+
+    /**
+     * The writer SPI names.
+     */
     protected String[] writerSpiNames;
 
     /**
@@ -51,49 +60,62 @@
     /**
      * Instantiates a new ImageReaderSpi.
      * 
-     * @param vendorName the vendor name.
-     * @param version the version.
-     * @param names the format names.
-     * @param suffixes the array of strings representing the file suffixes. 
-     * @param MIMETypes the an array of strings representing MIME types.
-     * @param pluginClassName the plugin class name.
-     * @param inputTypes the input types.
-     * @param writerSpiNames the array of strings with class names of all 
-     * associated ImageWriters.
-     * @param supportsStandardStreamMetadataFormat the value indicating
-     * if stream metadata can be described by standart metadata format.
-     * @param nativeStreamMetadataFormatName the native stream metadata 
-     * format name, returned by getNativeStreamMetadataFormatName.
-     * @param nativeStreamMetadataFormatClassName the native stream 
-     * metadata format class name, returned by getNativeStreamMetadataFormat.
-     * @param extraStreamMetadataFormatNames the extra stream metadata 
-     * format names, returned by getExtraStreamMetadataFormatNames.
-     * @param extraStreamMetadataFormatClassNames the extra stream metadata 
-     * format class names, returned by getStreamMetadataFormat.
-     * @param supportsStandardImageMetadataFormat the value indicating
-     * if image metadata can be described by standart metadata format.
-     * @param nativeImageMetadataFormatName the native image metadata 
-     * format name, returned by getNativeImageMetadataFormatName.
-     * @param nativeImageMetadataFormatClassName the native image
-     * metadata format class name, returned by getNativeImageMetadataFormat.
-     * @param extraImageMetadataFormatNames the extra image metadata 
-     * format names, returned by getExtraImageMetadataFormatNames.
-     * @param extraImageMetadataFormatClassNames the extra image metadata 
-     * format class names, returned by getImageMetadataFormat.
+     * @param vendorName
+     *            the vendor name.
+     * @param version
+     *            the version.
+     * @param names
+     *            the format names.
+     * @param suffixes
+     *            the array of strings representing the file suffixes.
+     * @param MIMETypes
+     *            the an array of strings representing MIME types.
+     * @param pluginClassName
+     *            the plug-in class name.
+     * @param inputTypes
+     *            the input types.
+     * @param writerSpiNames
+     *            the array of strings with class names of all associated
+     *            ImageWriters.
+     * @param supportsStandardStreamMetadataFormat
+     *            the value indicating if stream metadata can be described by
+     *            standard metadata format.
+     * @param nativeStreamMetadataFormatName
+     *            the native stream metadata format name, returned by
+     *            getNativeStreamMetadataFormatName.
+     * @param nativeStreamMetadataFormatClassName
+     *            the native stream metadata format class name, returned by
+     *            getNativeStreamMetadataFormat.
+     * @param extraStreamMetadataFormatNames
+     *            the extra stream metadata format names, returned by
+     *            getExtraStreamMetadataFormatNames.
+     * @param extraStreamMetadataFormatClassNames
+     *            the extra stream metadata format class names, returned by
+     *            getStreamMetadataFormat.
+     * @param supportsStandardImageMetadataFormat
+     *            the value indicating if image metadata can be described by
+     *            standard metadata format.
+     * @param nativeImageMetadataFormatName
+     *            the native image metadata format name, returned by
+     *            getNativeImageMetadataFormatName.
+     * @param nativeImageMetadataFormatClassName
+     *            the native image metadata format class name, returned by
+     *            getNativeImageMetadataFormat.
+     * @param extraImageMetadataFormatNames
+     *            the extra image metadata format names, returned by
+     *            getExtraImageMetadataFormatNames.
+     * @param extraImageMetadataFormatClassNames
+     *            the extra image metadata format class names, returned by
+     *            getImageMetadataFormat.
      */
     public ImageReaderSpi(String vendorName, String version, String[] names, String[] suffixes,
-                             String[] MIMETypes, String pluginClassName,
-                             Class[] inputTypes, String[] writerSpiNames,
-                             boolean supportsStandardStreamMetadataFormat,
-                             String nativeStreamMetadataFormatName,
-                             String nativeStreamMetadataFormatClassName,
-                             String[] extraStreamMetadataFormatNames,
-                             String[] extraStreamMetadataFormatClassNames,
-                             boolean supportsStandardImageMetadataFormat,
-                             String nativeImageMetadataFormatName,
-                             String nativeImageMetadataFormatClassName,
-                             String[] extraImageMetadataFormatNames,
-                             String[] extraImageMetadataFormatClassNames) {
+            String[] MIMETypes, String pluginClassName, Class[] inputTypes,
+            String[] writerSpiNames, boolean supportsStandardStreamMetadataFormat,
+            String nativeStreamMetadataFormatName, String nativeStreamMetadataFormatClassName,
+            String[] extraStreamMetadataFormatNames, String[] extraStreamMetadataFormatClassNames,
+            boolean supportsStandardImageMetadataFormat, String nativeImageMetadataFormatName,
+            String nativeImageMetadataFormatClassName, String[] extraImageMetadataFormatNames,
+            String[] extraImageMetadataFormatClassNames) {
         super(vendorName, version, names, suffixes, MIMETypes, pluginClassName,
                 supportsStandardStreamMetadataFormat, nativeStreamMetadataFormatName,
                 nativeStreamMetadataFormatClassName, extraStreamMetadataFormatNames,
@@ -109,8 +131,8 @@
     }
 
     /**
-     * Gets an array of Class objects whose types can be used 
-     * as input for this reader.
+     * Gets an array of Class objects whose types can be used as input for this
+     * reader.
      * 
      * @return the input types.
      */
@@ -119,66 +141,62 @@
     }
 
     /**
-     * Returns true if the format of source object is
-     * supported by this reader.
+     * Returns true if the format of source object is supported by this reader.
      * 
-     * @param source the source object to be decoded 
-     * (for example an ImageInputStream).
-     * 
-     * @return true if the format of source object is
-     * supported by this reader, false otherwise.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param source
+     *            the source object to be decoded (for example an
+     *            ImageInputStream).
+     * @return true, if the format of source object is supported by this reader,
+     *         false otherwise.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public abstract boolean canDecodeInput(Object source) throws IOException;
 
     /**
-     * Returns an instance of the ImageReader implementation for
-     * this service provider.
+     * Returns an instance of the ImageReader implementation for this service
+     * provider.
      * 
      * @return the ImageReader.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public ImageReader createReaderInstance() throws IOException {
         return createReaderInstance(null);
     }
 
     /**
-     * Returns an instance of the ImageReader implementation for
-     * this service provider.
+     * Returns an instance of the ImageReader implementation for this service
+     * provider.
      * 
-     * @param extension the a plugin specific extension object, or null.
-     * 
+     * @param extension
+     *            the a plug-in specific extension object, or null.
      * @return the ImageReader.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public abstract ImageReader createReaderInstance(Object extension) throws IOException;
 
     /**
-     * Checks whether or not the specified ImageReader object 
-     * is an instance of the ImageReader associated with this 
-     * service provider or not.
+     * Checks whether or not the specified ImageReader object is an instance of
+     * the ImageReader associated with this service provider or not.
      * 
-     * @param reader the ImageReader.
-     * 
-     * @return true, if the specified ImageReader object 
-     * is an instance of the ImageReader associated with this 
-     * service provider, false otherwise.
+     * @param reader
+     *            the ImageReader.
+     * @return true, if the specified ImageReader object is an instance of the
+     *         ImageReader associated with this service provider, false
+     *         otherwise.
      */
     public boolean isOwnReader(ImageReader reader) {
         throw new UnsupportedOperationException("Not supported yet");
     }
 
     /**
-     * Gets an array of strings with names of the ImageWriterSpi 
-     * classes that support the internal metadata representation 
-     * used by the ImageReader of this service provider, or null if 
-     * there are no such ImageWriters.
+     * Gets an array of strings with names of the ImageWriterSpi classes that
+     * support the internal metadata representation used by the ImageReader of
+     * this service provider, or null if there are no such ImageWriters.
      * 
-     * @return an array of strings with names of the ImageWriterSpi 
-     * classes.
+     * @return the array of strings with names of the ImageWriterSpi classes.
      */
     public String[] getImageWriterSpiNames() {
         throw new UnsupportedOperationException("Not supported yet");
diff --git a/awt/javax/imageio/spi/ImageReaderWriterSpi.java b/awt/javax/imageio/spi/ImageReaderWriterSpi.java
index b3c0f92..9ca08b5 100644
--- a/awt/javax/imageio/spi/ImageReaderWriterSpi.java
+++ b/awt/javax/imageio/spi/ImageReaderWriterSpi.java
@@ -18,6 +18,7 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio.spi;
 
 import org.apache.harmony.x.imageio.metadata.IIOMetadataUtils;
@@ -25,97 +26,138 @@
 import javax.imageio.metadata.IIOMetadataFormat;
 
 /**
- * The ImageReaderWriterSpi class is a superclass for the 
- * ImageReaderSpi and ImageWriterSpi SPIs.
+ * The ImageReaderWriterSpi class is a superclass for the ImageReaderSpi and
+ * ImageWriterSpi SPIs.
+ * 
+ * @since Android 1.0
  */
-public abstract class ImageReaderWriterSpi extends IIOServiceProvider
-        implements RegisterableService {
+public abstract class ImageReaderWriterSpi extends IIOServiceProvider implements
+        RegisterableService {
 
-    /** The names. */
+    /**
+     * The names.
+     */
     protected String[] names;
-    
-    /** The suffixes. */
+
+    /**
+     * The suffixes.
+     */
     protected String[] suffixes;
-    
-    /** The MIME types. */
+
+    /**
+     * The MIME types.
+     */
     protected String[] MIMETypes;
-    
-    /** The plugin class name. */
+
+    /**
+     * The plug-in class name.
+     */
     protected String pluginClassName;
-    
-    /** Whether the reader/writer supports standard stream metadata format. */
+
+    /**
+     * Whether the reader/writer supports standard stream metadata format.
+     */
     protected boolean supportsStandardStreamMetadataFormat;
-    
-    /** The native stream metadata format name. */
+
+    /**
+     * The native stream metadata format name.
+     */
     protected String nativeStreamMetadataFormatName;
-    
-    /** The native stream metadata format class name. */
+
+    /**
+     * The native stream metadata format class name.
+     */
     protected String nativeStreamMetadataFormatClassName;
-    
-    /** The extra stream metadata format names. */
+
+    /**
+     * The extra stream metadata format names.
+     */
     protected String[] extraStreamMetadataFormatNames;
-    
-    /** The extra stream metadata format class names. */
+
+    /**
+     * The extra stream metadata format class names.
+     */
     protected String[] extraStreamMetadataFormatClassNames;
-    
-    /** Whether the reader/writer supports standard image metadata format. */
+
+    /**
+     * Whether the reader/writer supports standard image metadata format.
+     */
     protected boolean supportsStandardImageMetadataFormat;
-    
-    /** The native image metadata format name. */
+
+    /**
+     * The native image metadata format name.
+     */
     protected String nativeImageMetadataFormatName;
-    
-    /** The native image metadata format class name. */
+
+    /**
+     * The native image metadata format class name.
+     */
     protected String nativeImageMetadataFormatClassName;
-    
-    /** The extra image metadata format names. */
+
+    /**
+     * The extra image metadata format names.
+     */
     protected String[] extraImageMetadataFormatNames;
-    
-    /** The extra image metadata format class names. */
+
+    /**
+     * The extra image metadata format class names.
+     */
     protected String[] extraImageMetadataFormatClassNames;
 
     /**
      * Instantiates a new ImageReaderWriterSpi.
      * 
-     * @param vendorName the vendor name.
-     * @param version the version.
-     * @param names the format names.
-     * @param suffixes the array of strings representing the file suffixes. 
-     * @param MIMETypes the an array of strings representing MIME types.
-     * @param pluginClassName the plugin class name.
-     * @param supportsStandardStreamMetadataFormat the value indicating
-     * if stream metadata can be described by standart metadata format.
-     * @param nativeStreamMetadataFormatName the native stream metadata 
-     * format name, returned by getNativeStreamMetadataFormatName.
-     * @param nativeStreamMetadataFormatClassName the native stream 
-     * metadata format class name, returned by getNativeStreamMetadataFormat.
-     * @param extraStreamMetadataFormatNames the extra stream metadata 
-     * format names, returned by getExtraStreamMetadataFormatNames.
-     * @param extraStreamMetadataFormatClassNames the extra stream metadata 
-     * format class names, returned by getStreamMetadataFormat.
-     * @param supportsStandardImageMetadataFormat the value indicating
-     * if image metadata can be described by standard metadata format.
-     * @param nativeImageMetadataFormatName the native image metadata 
-     * format name, returned by getNativeImageMetadataFormatName.
-     * @param nativeImageMetadataFormatClassName the native image
-     * metadata format class name, returned by getNativeImageMetadataFormat.
-     * @param extraImageMetadataFormatNames the extra image metadata 
-     * format names, returned by getExtraImageMetadataFormatNames.
-     * @param extraImageMetadataFormatClassNames the extra image metadata 
-     * format class names, returned by getImageMetadataFormat.
+     * @param vendorName
+     *            the vendor name.
+     * @param version
+     *            the version.
+     * @param names
+     *            the format names.
+     * @param suffixes
+     *            the array of strings representing the file suffixes.
+     * @param MIMETypes
+     *            the an array of strings representing MIME types.
+     * @param pluginClassName
+     *            the plug-in class name.
+     * @param supportsStandardStreamMetadataFormat
+     *            the value indicating if stream metadata can be described by
+     *            standard metadata format.
+     * @param nativeStreamMetadataFormatName
+     *            the native stream metadata format name, returned by
+     *            getNativeStreamMetadataFormatName.
+     * @param nativeStreamMetadataFormatClassName
+     *            the native stream metadata format class name, returned by
+     *            getNativeStreamMetadataFormat.
+     * @param extraStreamMetadataFormatNames
+     *            the extra stream metadata format names, returned by
+     *            getExtraStreamMetadataFormatNames.
+     * @param extraStreamMetadataFormatClassNames
+     *            the extra stream metadata format class names, returned by
+     *            getStreamMetadataFormat.
+     * @param supportsStandardImageMetadataFormat
+     *            the value indicating if image metadata can be described by
+     *            standard metadata format.
+     * @param nativeImageMetadataFormatName
+     *            the native image metadata format name, returned by
+     *            getNativeImageMetadataFormatName.
+     * @param nativeImageMetadataFormatClassName
+     *            the native image metadata format class name, returned by
+     *            getNativeImageMetadataFormat.
+     * @param extraImageMetadataFormatNames
+     *            the extra image metadata format names, returned by
+     *            getExtraImageMetadataFormatNames.
+     * @param extraImageMetadataFormatClassNames
+     *            the extra image metadata format class names, returned by
+     *            getImageMetadataFormat.
      */
     public ImageReaderWriterSpi(String vendorName, String version, String[] names,
-                                String[] suffixes, String[] MIMETypes,
-                                String pluginClassName,
-                                boolean supportsStandardStreamMetadataFormat,
-                                String nativeStreamMetadataFormatName,
-                                String nativeStreamMetadataFormatClassName,
-                                String[] extraStreamMetadataFormatNames,
-                                String[] extraStreamMetadataFormatClassNames,
-                                boolean supportsStandardImageMetadataFormat,
-                                String nativeImageMetadataFormatName,
-                                String nativeImageMetadataFormatClassName,
-                                String[] extraImageMetadataFormatNames,
-                                String[] extraImageMetadataFormatClassNames) {
+            String[] suffixes, String[] MIMETypes, String pluginClassName,
+            boolean supportsStandardStreamMetadataFormat, String nativeStreamMetadataFormatName,
+            String nativeStreamMetadataFormatClassName, String[] extraStreamMetadataFormatNames,
+            String[] extraStreamMetadataFormatClassNames,
+            boolean supportsStandardImageMetadataFormat, String nativeImageMetadataFormatName,
+            String nativeImageMetadataFormatClassName, String[] extraImageMetadataFormatNames,
+            String[] extraImageMetadataFormatClassNames) {
         super(vendorName, version);
 
         if (names == null || names.length == 0) {
@@ -137,60 +179,54 @@
         this.nativeStreamMetadataFormatName = nativeStreamMetadataFormatName;
         this.nativeStreamMetadataFormatClassName = nativeStreamMetadataFormatClassName;
 
-        this.extraStreamMetadataFormatNames =
-                extraStreamMetadataFormatNames == null ?
-                null : extraStreamMetadataFormatNames.clone();
+        this.extraStreamMetadataFormatNames = extraStreamMetadataFormatNames == null ? null
+                : extraStreamMetadataFormatNames.clone();
 
-        this.extraStreamMetadataFormatClassNames =
-                extraStreamMetadataFormatClassNames == null ?
-                null : extraStreamMetadataFormatClassNames.clone();
+        this.extraStreamMetadataFormatClassNames = extraStreamMetadataFormatClassNames == null ? null
+                : extraStreamMetadataFormatClassNames.clone();
 
         this.supportsStandardImageMetadataFormat = supportsStandardImageMetadataFormat;
         this.nativeImageMetadataFormatName = nativeImageMetadataFormatName;
         this.nativeImageMetadataFormatClassName = nativeImageMetadataFormatClassName;
 
-        this.extraImageMetadataFormatNames =
-                extraImageMetadataFormatNames == null ?
-                null : extraImageMetadataFormatNames.clone();
+        this.extraImageMetadataFormatNames = extraImageMetadataFormatNames == null ? null
+                : extraImageMetadataFormatNames.clone();
 
-        this.extraImageMetadataFormatClassNames =
-                extraImageMetadataFormatClassNames == null ?
-                null : extraImageMetadataFormatClassNames.clone();
+        this.extraImageMetadataFormatClassNames = extraImageMetadataFormatClassNames == null ? null
+                : extraImageMetadataFormatClassNames.clone();
     }
 
     /**
      * Instantiates a new ImageReaderWriterSpi.
      */
-    public ImageReaderWriterSpi() {}
+    public ImageReaderWriterSpi() {
+    }
 
     /**
-     * Gets an array of strings representing names of the formats 
-     * that can be used by the ImageReader 
-     * or ImageWriter implementation associated with this service 
-     * provider. 
+     * Gets an array of strings representing names of the formats that can be
+     * used by the ImageReader or ImageWriter implementation associated with
+     * this service provider.
      * 
-     * @return an array of supported format names.
+     * @return the array of supported format names.
      */
     public String[] getFormatNames() {
         return names.clone();
     }
 
     /**
-     * Gets an array of strings representing file suffixes 
-     * associated with the formats that can be used by the 
-     * ImageReader or ImageWriter implementation of this
-     * service provider.
+     * Gets an array of strings representing file suffixes associated with the
+     * formats that can be used by the ImageReader or ImageWriter implementation
+     * of this service provider.
      * 
-     * @return an array of file suffixes.
+     * @return the array of file suffixes.
      */
     public String[] getFileSuffixes() {
         return suffixes == null ? null : suffixes.clone();
     }
 
     /**
-     * Gets an array of strings with the names of 
-     * additional formats of the image metadata objects 
-     * produced or consumed by this plug-in.
+     * Gets an array of strings with the names of additional formats of the
+     * image metadata objects produced or consumed by this plug-in.
      * 
      * @return the array of extra image metadata format names.
      */
@@ -199,52 +235,49 @@
     }
 
     /**
-     * Gets an array of strings with the names of 
-     * additional formats of the stream metadata objects 
-     * produced or consumed by this plug-in.
+     * Gets an array of strings with the names of additional formats of the
+     * stream metadata objects produced or consumed by this plug-in.
      * 
      * @return the array of extra stream metadata format names.
      */
     public String[] getExtraStreamMetadataFormatNames() {
-        return extraStreamMetadataFormatNames == null ? null : extraStreamMetadataFormatNames.clone();
+        return extraStreamMetadataFormatNames == null ? null : extraStreamMetadataFormatNames
+                .clone();
     }
 
     /**
-     * Gets an IIOMetadataFormat object for the specified image 
-     * metadata format name. 
+     * Gets an IIOMetadataFormat object for the specified image metadata format
+     * name.
      * 
-     * @param formatName the format name.
-     * 
+     * @param formatName
+     *            the format name.
      * @return the IIOMetadataFormat, or null.
      */
     public IIOMetadataFormat getImageMetadataFormat(String formatName) {
-        return IIOMetadataUtils.instantiateMetadataFormat(
-                formatName, supportsStandardImageMetadataFormat,
-                nativeImageMetadataFormatName, nativeImageMetadataFormatClassName,
-                extraImageMetadataFormatNames, extraImageMetadataFormatClassNames
-        );
+        return IIOMetadataUtils.instantiateMetadataFormat(formatName,
+                supportsStandardImageMetadataFormat, nativeImageMetadataFormatName,
+                nativeImageMetadataFormatClassName, extraImageMetadataFormatNames,
+                extraImageMetadataFormatClassNames);
     }
 
     /**
-     * Gets an IIOMetadataFormat object for the specified stream 
-     * metadata format name. 
+     * Gets an IIOMetadataFormat object for the specified stream metadata format
+     * name.
      * 
-     * @param formatName the format name.
-     * 
+     * @param formatName
+     *            the format name.
      * @return the IIOMetadataFormat, or null.
      */
     public IIOMetadataFormat getStreamMetadataFormat(String formatName) {
-        return IIOMetadataUtils.instantiateMetadataFormat(
-                formatName, supportsStandardStreamMetadataFormat,
-                nativeStreamMetadataFormatName, nativeStreamMetadataFormatClassName,
-                extraStreamMetadataFormatNames, extraStreamMetadataFormatClassNames
-        );
+        return IIOMetadataUtils.instantiateMetadataFormat(formatName,
+                supportsStandardStreamMetadataFormat, nativeStreamMetadataFormatName,
+                nativeStreamMetadataFormatClassName, extraStreamMetadataFormatNames,
+                extraStreamMetadataFormatClassNames);
     }
 
     /**
-     * Gets an array of strings representing the MIME types 
-     * of the formats that are supported by the 
-     * ImageReader or ImageWriter implementation of this 
+     * Gets an array of strings representing the MIME types of the formats that
+     * are supported by the ImageReader or ImageWriter implementation of this
      * service provider.
      * 
      * @return the array MIME types.
@@ -254,32 +287,30 @@
     }
 
     /**
-     * Gets the name of the native image metadata format for 
-     * this reader/writer, which allows for lossless encoding
-     * or decoding of the image metadata with the format.
+     * Gets the name of the native image metadata format for this reader/writer,
+     * which allows for lossless encoding or decoding of the image metadata with
+     * the format.
      * 
-     * @return the string with native image metadata format name, 
-     * or null.
+     * @return the string with native image metadata format name, or null.
      */
     public String getNativeImageMetadataFormatName() {
         return nativeImageMetadataFormatName;
     }
 
     /**
-     * Gets the name of the native stream metadata format for 
-     * this reader/writer, which allows for lossless encoding
-     * or decoding of the stream metadata with the format.
+     * Gets the name of the native stream metadata format for this
+     * reader/writer, which allows for lossless encoding or decoding of the
+     * stream metadata with the format.
      * 
-     * @return the string with native stream metadata format name, 
-     * or null.
+     * @return the string with native stream metadata format name, or null.
      */
     public String getNativeStreamMetadataFormatName() {
         return nativeStreamMetadataFormatName;
     }
 
     /**
-     * Gets the class name of the ImageReader 
-     * or ImageWriter associated with this service provider.
+     * Gets the class name of the ImageReader or ImageWriter associated with
+     * this service provider.
      * 
      * @return the class name.
      */
@@ -288,26 +319,24 @@
     }
 
     /**
-     * Checks if the standard metadata format is supported 
-     * by the getAsTree and setFromTree methods for the 
-     * image metadata objects produced or consumed by this 
-     * reader or writer.
+     * Checks if the standard metadata format is supported by the getAsTree and
+     * setFromTree methods for the image metadata objects produced or consumed
+     * by this reader or writer.
      * 
-     * @return true, if standard image metadata format is 
-     * supported, false otherwise.
+     * @return true, if standard image metadata format is supported, false
+     *         otherwise.
      */
     public boolean isStandardImageMetadataFormatSupported() {
         return supportsStandardImageMetadataFormat;
     }
 
     /**
-     * Checks if the standard metadata format is supported 
-     * by the getAsTree and setFromTree methods for the 
-     * stream metadata objects produced or consumed by this 
-     * reader or writer.
+     * Checks if the standard metadata format is supported by the getAsTree and
+     * setFromTree methods for the stream metadata objects produced or consumed
+     * by this reader or writer.
      * 
-     * @return true, if standard stream metadata format is 
-     * supported, false otherwise.
+     * @return true, if standard stream metadata format is supported, false
+     *         otherwise.
      */
     public boolean isStandardStreamMetadataFormatSupported() {
         return supportsStandardStreamMetadataFormat;
diff --git a/awt/javax/imageio/spi/ImageTranscoderSpi.java b/awt/javax/imageio/spi/ImageTranscoderSpi.java
index 68c4024..742af19 100644
--- a/awt/javax/imageio/spi/ImageTranscoderSpi.java
+++ b/awt/javax/imageio/spi/ImageTranscoderSpi.java
@@ -18,16 +18,18 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio.spi;
 
 import javax.imageio.ImageTranscoder;
 
 /**
- * The ImageTranscoderSpi class is a service provider interface (SPI) 
- * for ImageTranscoders.
+ * The ImageTranscoderSpi class is a service provider interface (SPI) for
+ * ImageTranscoders.
+ * 
+ * @since Android 1.0
  */
-public abstract class ImageTranscoderSpi extends IIOServiceProvider
-        implements RegisterableService {
+public abstract class ImageTranscoderSpi extends IIOServiceProvider implements RegisterableService {
 
     /**
      * Instantiates a new ImageTranscoderSpi.
@@ -36,37 +38,37 @@
     }
 
     /**
-     * Instantiates a new ImageTranscoderSpi with the specified
-     * vendor name and version.
+     * Instantiates a new ImageTranscoderSpi with the specified vendor name and
+     * version.
      * 
-     * @param vendorName the vendor name.
-     * @param version the version.
+     * @param vendorName
+     *            the vendor name.
+     * @param version
+     *            the version.
      */
     public ImageTranscoderSpi(String vendorName, String version) {
         super(vendorName, version);
     }
 
     /**
-     * Gets the class name of an ImageReaderSpi that 
-     * produces IIOMetadata objects that can be used as 
-     * input to this transcoder.
+     * Gets the class name of an ImageReaderSpi that produces IIOMetadata
+     * objects that can be used as input to this transcoder.
      * 
      * @return the class name of an ImageReaderSpi.
      */
     public abstract String getReaderServiceProviderName();
 
     /**
-     * Gets the class name of an ImageWriterSpi that 
-     * produces IIOMetadata objects that can be used as 
-     * input to this transcoder.
+     * Gets the class name of an ImageWriterSpi that produces IIOMetadata
+     * objects that can be used as input to this transcoder.
      * 
      * @return the class name of an ImageWriterSpi.
      */
     public abstract String getWriterServiceProviderName();
 
     /**
-     * Creates an instance of the ImageTranscoder associated 
-     * with this service provider.
+     * Creates an instance of the ImageTranscoder associated with this service
+     * provider.
      * 
      * @return the ImageTranscoder instance.
      */
diff --git a/awt/javax/imageio/spi/ImageWriterSpi.java b/awt/javax/imageio/spi/ImageWriterSpi.java
index 979ef77..bf25455 100644
--- a/awt/javax/imageio/spi/ImageWriterSpi.java
+++ b/awt/javax/imageio/spi/ImageWriterSpi.java
@@ -18,6 +18,7 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio.spi;
 
 import javax.imageio.stream.ImageInputStream;
@@ -27,18 +28,28 @@
 import java.io.IOException;
 
 /**
- * The ImageWriterSpi abstract class is a service provider 
- * interface (SPI) for ImageWriters.
+ * The ImageWriterSpi abstract class is a service provider interface (SPI) for
+ * ImageWriters.
+ * 
+ * @since Android 1.0
  */
 public abstract class ImageWriterSpi extends ImageReaderWriterSpi {
 
-    /** The STANDARD_OUTPUT_TYPE contains ImageInputStream.class. */
-    public static final Class[] STANDARD_OUTPUT_TYPE = new Class[] {ImageInputStream.class};
+    /**
+     * The STANDARD_OUTPUT_TYPE contains ImageInputStream.class.
+     */
+    public static final Class[] STANDARD_OUTPUT_TYPE = new Class[] {
+        ImageInputStream.class
+    };
 
-    /** The output types. */
+    /**
+     * The output types.
+     */
     protected Class[] outputTypes;
-    
-    /** The reader spi names. */
+
+    /**
+     * The reader SPI names.
+     */
     protected String[] readerSpiNames;
 
     /**
@@ -51,50 +62,62 @@
     /**
      * Instantiates a new ImageWriterSpi with the specified parameters.
      * 
-     * @param vendorName the vendor name.
-     * @param version the version.
-     * @param names the format names.
-     * @param suffixes the array of strings representing the file suffixes. 
-     * @param MIMETypes the an array of strings representing MIME types.
-     * @param pluginClassName the plugin class name.
-     * @param outputTypes the output types.
-     * @param readerSpiNames the array of strings with class names of all 
-     * associated ImageReaders.
-     * @param supportsStandardStreamMetadataFormat the value indicating
-     * if stream metadata can be described by standard metadata format.
-     * @param nativeStreamMetadataFormatName the native stream metadata 
-     * format name, returned by getNativeStreamMetadataFormatName.
-     * @param nativeStreamMetadataFormatClassName the native stream 
-     * metadata format class name, returned by getNativeStreamMetadataFormat.
-     * @param extraStreamMetadataFormatNames the extra stream metadata 
-     * format names, returned by getExtraStreamMetadataFormatNames.
-     * @param extraStreamMetadataFormatClassNames the extra stream metadata 
-     * format class names, returned by getStreamMetadataFormat.
-     * @param supportsStandardImageMetadataFormat the value indicating
-     * if image metadata can be described by standard metadata format.
-     * @param nativeImageMetadataFormatName the native image metadata 
-     * format name, returned by getNativeImageMetadataFormatName.
-     * @param nativeImageMetadataFormatClassName the native image
-     * metadata format class name, returned by getNativeImageMetadataFormat.
-     * @param extraImageMetadataFormatNames the extra image metadata 
-     * format names, returned by getExtraImageMetadataFormatNames.
-     * @param extraImageMetadataFormatClassNames the extra image metadata 
-     * format class names, returned by getImageMetadataFormat.
+     * @param vendorName
+     *            the vendor name.
+     * @param version
+     *            the version.
+     * @param names
+     *            the format names.
+     * @param suffixes
+     *            the array of strings representing the file suffixes.
+     * @param MIMETypes
+     *            the an array of strings representing MIME types.
+     * @param pluginClassName
+     *            the plug-in class name.
+     * @param outputTypes
+     *            the output types.
+     * @param readerSpiNames
+     *            the array of strings with class names of all associated
+     *            ImageReaders.
+     * @param supportsStandardStreamMetadataFormat
+     *            the value indicating if stream metadata can be described by
+     *            standard metadata format.
+     * @param nativeStreamMetadataFormatName
+     *            the native stream metadata format name, returned by
+     *            getNativeStreamMetadataFormatName.
+     * @param nativeStreamMetadataFormatClassName
+     *            the native stream metadata format class name, returned by
+     *            getNativeStreamMetadataFormat.
+     * @param extraStreamMetadataFormatNames
+     *            the extra stream metadata format names, returned by
+     *            getExtraStreamMetadataFormatNames.
+     * @param extraStreamMetadataFormatClassNames
+     *            the extra stream metadata format class names, returned by
+     *            getStreamMetadataFormat.
+     * @param supportsStandardImageMetadataFormat
+     *            the value indicating if image metadata can be described by
+     *            standard metadata format.
+     * @param nativeImageMetadataFormatName
+     *            the native image metadata format name, returned by
+     *            getNativeImageMetadataFormatName.
+     * @param nativeImageMetadataFormatClassName
+     *            the native image metadata format class name, returned by
+     *            getNativeImageMetadataFormat.
+     * @param extraImageMetadataFormatNames
+     *            the extra image metadata format names, returned by
+     *            getExtraImageMetadataFormatNames.
+     * @param extraImageMetadataFormatClassNames
+     *            the extra image metadata format class names, returned by
+     *            getImageMetadataFormat.
      */
-    public ImageWriterSpi(String vendorName, String version, String[] names,
-                             String[] suffixes, String[] MIMETypes,
-                             String pluginClassName,
-                             Class[] outputTypes, String[] readerSpiNames,
-                             boolean supportsStandardStreamMetadataFormat,
-                             String nativeStreamMetadataFormatName,
-                             String nativeStreamMetadataFormatClassName,
-                             String[] extraStreamMetadataFormatNames,
-                             String[] extraStreamMetadataFormatClassNames,
-                             boolean supportsStandardImageMetadataFormat,
-                             String nativeImageMetadataFormatName,
-                             String nativeImageMetadataFormatClassName,
-                             String[] extraImageMetadataFormatNames,
-                             String[] extraImageMetadataFormatClassNames) {
+    public ImageWriterSpi(String vendorName, String version, String[] names, String[] suffixes,
+            String[] MIMETypes, String pluginClassName, Class[] outputTypes,
+            String[] readerSpiNames, boolean supportsStandardStreamMetadataFormat,
+            String nativeStreamMetadataFormatName, String nativeStreamMetadataFormatClassName,
+            String[] extraStreamMetadataFormatNames, String[] extraStreamMetadataFormatClassNames,
+            boolean supportsStandardImageMetadataFormat, String nativeImageMetadataFormatName,
+            String nativeImageMetadataFormatClassName, String[] extraImageMetadataFormatNames,
+            String[] extraImageMetadataFormatClassNames) {
         super(vendorName, version, names, suffixes, MIMETypes, pluginClassName,
                 supportsStandardStreamMetadataFormat, nativeStreamMetadataFormatName,
                 nativeStreamMetadataFormatClassName, extraStreamMetadataFormatNames,
@@ -111,8 +134,8 @@
     }
 
     /**
-     * Returns true if the format of the writer's output is lossless. 
-     * The default implementation returns true.
+     * Returns true if the format of the writer's output is lossless. The
+     * default implementation returns true.
      * 
      * @return true, if a format is lossless, false otherwise.
      */
@@ -121,8 +144,8 @@
     }
 
     /**
-     * Gets an array of Class objects whose types 
-     * can be used as output for this writer.
+     * Gets an array of Class objects whose types can be used as output for this
+     * writer.
      * 
      * @return the output types.
      */
@@ -131,77 +154,72 @@
     }
 
     /**
-     * Checks whether or not the ImageWriter implementation associated 
-     * with this service provider can encode an image with 
-     * the specified type.
+     * Checks whether or not the ImageWriter implementation associated with this
+     * service provider can encode an image with the specified type.
      * 
-     * @param type the ImageTypeSpecifier.
-     * 
-     * @return true, if an image with the specified type can be
-     * encoded, false otherwise. 
+     * @param type
+     *            the ImageTypeSpecifier.
+     * @return true, if an image with the specified type can be encoded, false
+     *         otherwise.
      */
     public abstract boolean canEncodeImage(ImageTypeSpecifier type);
 
     /**
-     * Checks whether or not the ImageWriter implementation associated 
-     * with this service provider can encode the specified RenderedImage.
+     * Checks whether or not the ImageWriter implementation associated with this
+     * service provider can encode the specified RenderedImage.
      * 
-     * @param im the RenderedImage.
-     * 
-     * @return true, if RenderedImage can be encoded, 
-     * false otherwise. 
+     * @param im
+     *            the RenderedImage.
+     * @return true, if RenderedImage can be encoded, false otherwise.
      */
     public boolean canEncodeImage(RenderedImage im) {
         return canEncodeImage(ImageTypeSpecifier.createFromRenderedImage(im));
     }
 
     /**
-     * Returns an instance of the ImageWriter implementation for
-     * this service provider.
+     * Returns an instance of the ImageWriter implementation for this service
+     * provider.
      * 
      * @return the ImageWriter.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public ImageWriter createWriterInstance() throws IOException {
         return createWriterInstance(null);
     }
 
     /**
-     * Returns an instance of the ImageWriter implementation for
-     * this service provider.
+     * Returns an instance of the ImageWriter implementation for this service
+     * provider.
      * 
-     * @param extension the a plugin specific extension object, or null.
-     * 
+     * @param extension
+     *            the a plug-in specific extension object, or null.
      * @return the ImageWriter.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public abstract ImageWriter createWriterInstance(Object extension) throws IOException;
 
     /**
-     * Checks whether or not the specified ImageWriter object 
-     * is an instance of the ImageWriter associated with this 
-     * service provider or not.
+     * Checks whether or not the specified ImageWriter object is an instance of
+     * the ImageWriter associated with this service provider or not.
      * 
-     * @param writer the ImageWriter.
-     * 
-     * @return true, if the specified ImageWriter object 
-     * is an instance of the ImageWriter associated with this 
-     * service provider, false otherwise.
+     * @param writer
+     *            the ImageWriter.
+     * @return true, if the specified ImageWriter object is an instance of the
+     *         ImageWriter associated with this service provider, false
+     *         otherwise.
      */
     public boolean isOwnWriter(ImageWriter writer) {
         throw new UnsupportedOperationException("Not supported yet");
     }
 
     /**
-     * Gets an array of strings with names of the ImageReaderSpi 
-     * classes that support the internal metadata representation 
-     * used by the ImageWriter of this service provider, or null if 
-     * there are no such ImageReaders.
+     * Gets an array of strings with names of the ImageReaderSpi classes that
+     * support the internal metadata representation used by the ImageWriter of
+     * this service provider, or null if there are no such ImageReaders.
      * 
-     * @return an array of strings with names of the ImageWriterSpi 
-     * classes.
+     * @return the array of strings with names of the ImageWriterSpi classes.
      */
     public String[] getImageReaderSpiNames() {
         return readerSpiNames;
diff --git a/awt/javax/imageio/spi/RegisterableService.java b/awt/javax/imageio/spi/RegisterableService.java
index b50754e..ae2f4d3 100644
--- a/awt/javax/imageio/spi/RegisterableService.java
+++ b/awt/javax/imageio/spi/RegisterableService.java
@@ -18,33 +18,37 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio.spi;
 
 /**
- * The RegisterableService interface provides service provider 
- * objects that can be registered by a ServiceRegistry, and 
- * notifications that registration and deregistration have been
- * performed.
+ * The RegisterableService interface provides service provider objects that can
+ * be registered by a ServiceRegistry, and notifications that registration and
+ * deregistration have been performed.
+ * 
+ * @since Android 1.0
  */
 public interface RegisterableService {
-    
+
     /**
-     * This method is called when the object which implements this
-     * interface is registered to the specified category of the 
-     * specified registry.
+     * This method is called when the object which implements this interface is
+     * registered to the specified category of the specified registry.
      * 
-     * @param registry the ServiceRegistry to be registered.
-     * @param category the class representing a category.
+     * @param registry
+     *            the ServiceRegistry to be registered.
+     * @param category
+     *            the class representing a category.
      */
     void onRegistration(ServiceRegistry registry, Class<?> category);
-    
+
     /**
-     * This method is called when the object which implements this
-     * interface is deregistered to the specified category of the 
-     * specified registry.
+     * This method is called when the object which implements this interface is
+     * deregistered to the specified category of the specified registry.
      * 
-     * @param registry the ServiceRegistry to be registered.
-     * @param category the class representing a category.
+     * @param registry
+     *            the ServiceRegistry to be registered.
+     * @param category
+     *            the class representing a category.
      */
     void onDeregistration(ServiceRegistry registry, Class<?> category);
 }
diff --git a/awt/javax/imageio/spi/ServiceRegistry.java b/awt/javax/imageio/spi/ServiceRegistry.java
index 1a18b02..79b02a3 100644
--- a/awt/javax/imageio/spi/ServiceRegistry.java
+++ b/awt/javax/imageio/spi/ServiceRegistry.java
@@ -18,48 +18,53 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio.spi;
 
 import java.util.*;
 import java.util.Map.Entry;
 
 /**
- * The ServiceRegistry class provides ability to register, 
- * deregister, look up and obtain service provider instances (SPIs).
- * A service means a set of interfaces and classes, and a service 
- * provider is an implementation of a service. Service providers can 
- * be associated with one or more categories. Each category is defined 
- * by a class or interface. Only a single instance of a each class is 
- * allowed to be registered as a category. 
+ * The ServiceRegistry class provides ability to register, deregister, look up
+ * and obtain service provider instances (SPIs). A service means a set of
+ * interfaces and classes, and a service provider is an implementation of a
+ * service. Service providers can be associated with one or more categories.
+ * Each category is defined by a class or interface. Only a single instance of a
+ * each class is allowed to be registered as a category.
+ * 
+ * @since Android 1.0
  */
 public class ServiceRegistry {
 
-    /** The categories. */
+    /**
+     * The categories.
+     */
     CategoriesMap categories = new CategoriesMap(this);
 
     /**
      * Instantiates a new ServiceRegistry with the specified categories.
      * 
-     * @param categoriesIterator an Iterator of Class objects 
-     * for defining of categories.
+     * @param categoriesIterator
+     *            an Iterator of Class objects for defining of categories.
      */
     public ServiceRegistry(Iterator<Class<?>> categoriesIterator) {
         if (null == categoriesIterator) {
             throw new IllegalArgumentException("categories iterator should not be NULL");
         }
-        while(categoriesIterator.hasNext()) {
-            Class<?> c =  categoriesIterator.next();
+        while (categoriesIterator.hasNext()) {
+            Class<?> c = categoriesIterator.next();
             categories.addCategory(c);
         }
     }
 
     /**
-     * Looks up and instantiates the available providers of this service using 
+     * Looks up and instantiates the available providers of this service using
      * the specified class loader.
      * 
-     * @param providerClass the Class object of the provider to be looked up.
-     * @param loader the class loader to be used.
-     * 
+     * @param providerClass
+     *            the Class object of the provider to be looked up.
+     * @param loader
+     *            the class loader to be used.
      * @return the iterator of providers objects for this service.
      */
     public static <T> Iterator<T> lookupProviders(Class<T> providerClass, ClassLoader loader) {
@@ -67,11 +72,11 @@
     }
 
     /**
-     * Looks up and instantiates the available providers of this service using 
+     * Looks up and instantiates the available providers of this service using
      * the context class loader.
      * 
-     * @param providerClass the Class object of the provider to be looked up.
-     * 
+     * @param providerClass
+     *            the Class object of the provider to be looked up.
      * @return the iterator of providers objects for this service.
      */
     public static <T> Iterator<T> lookupProviders(Class<T> providerClass) {
@@ -79,14 +84,15 @@
     }
 
     /**
-     * Registers the specified service provider object in the
-     * specified categories.
+     * Registers the specified service provider object in the specified
+     * categories.
      * 
-     * @param provider the specified provider to be registered.
-     * @param category the category.
-     * 
-     * @return true if no provider of the same class is registered 
-     * in this category, false otherwise.
+     * @param provider
+     *            the specified provider to be registered.
+     * @param category
+     *            the category.
+     * @return true, if no provider of the same class is registered in this
+     *         category, false otherwise.
      */
     public <T> boolean registerServiceProvider(T provider, Class<T> category) {
         return categories.addProvider(provider, category);
@@ -95,7 +101,8 @@
     /**
      * Registers a list of service providers.
      * 
-     * @param providers the list of service providers.
+     * @param providers
+     *            the list of service providers.
      */
     public void registerServiceProviders(Iterator<?> providers) {
         for (Iterator<?> iterator = providers; iterator.hasNext();) {
@@ -104,67 +111,70 @@
     }
 
     /**
-     * Registers the specified service provider object in all
-     * categories.
+     * Registers the specified service provider object in all categories.
      * 
-     * @param provider the service provider.
+     * @param provider
+     *            the service provider.
      */
     public void registerServiceProvider(Object provider) {
         categories.addProvider(provider, null);
     }
 
     /**
-     * Deregisters the specifies service provider from the
-     * specified category.
+     * Deregisters the specifies service provider from the specified category.
      * 
-     * @param provider the service provider to be deregistered.
-     * @param category the specified category.
-     * 
-     * @return true if the provider was already registered 
-     * in the specified category, false otherwise.
+     * @param provider
+     *            the service provider to be deregistered.
+     * @param category
+     *            the specified category.
+     * @return true, if the provider was already registered in the specified
+     *         category, false otherwise.
      */
     public <T> boolean deregisterServiceProvider(T provider, Class<T> category) {
         throw new UnsupportedOperationException("Not supported yet");
     }
 
     /**
-     * Deregisters the specified service provider from all
-     * categories.
+     * Deregisters the specified service provider from all categories.
      * 
-     * @param provider the specified service provider.
+     * @param provider
+     *            the specified service provider.
      */
     public void deregisterServiceProvider(Object provider) {
         throw new UnsupportedOperationException("Not supported yet");
     }
 
     /**
-     * Gets an Iterator of registered service providers
-     * in the specified category which satisfy the specified Filter. 
-     * The useOrdering parameter indicates whether the iterator will 
-     * return all of the server provider objects in a set order. 
+     * Gets an Iterator of registered service providers in the specified
+     * category which satisfy the specified Filter. The useOrdering parameter
+     * indicates whether the iterator will return all of the server provider
+     * objects in a set order.
      * 
-     * @param category the specified category.
-     * @param filter the specified filter.
-     * @param useOrdering the flag indicating that providers are ordered
-     * in the returned Iterator.
-     * 
+     * @param category
+     *            the specified category.
+     * @param filter
+     *            the specified filter.
+     * @param useOrdering
+     *            the flag indicating that providers are ordered in the returned
+     *            Iterator.
      * @return the iterator of registered service providers.
      */
     @SuppressWarnings("unchecked")
     public <T> Iterator<T> getServiceProviders(Class<T> category, Filter filter, boolean useOrdering) {
-        return new FilteredIterator<T>(filter, (Iterator<T>)categories.getProviders(category, useOrdering));
+        return new FilteredIterator<T>(filter, (Iterator<T>)categories.getProviders(category,
+                useOrdering));
     }
 
     /**
-     * Gets an Iterator of all registered service providers
-     * in the specified category. The useOrdering parameter
-     * indicates whether the iterator will return all of the server 
-     * provider objects in a set order. 
+     * Gets an Iterator of all registered service providers in the specified
+     * category. The useOrdering parameter indicates whether the iterator will
+     * return all of the server provider objects in a set order.
      * 
-     * @param category the specified category.
-     * @param useOrdering the flag indicating that providers are ordered
-     * in the returned Iterator.
-     * 
+     * @param category
+     *            the specified category.
+     * @param useOrdering
+     *            the flag indicating that providers are ordered in the returned
+     *            Iterator.
      * @return the Iterator of service providers.
      */
     @SuppressWarnings("unchecked")
@@ -173,11 +183,11 @@
     }
 
     /**
-     * Gets the registered service provider object that has the 
-     * specified class type.
+     * Gets the registered service provider object that has the specified class
+     * type.
      * 
-     * @param providerClass the specified provider class.
-     * 
+     * @param providerClass
+     *            the specified provider class.
      * @return the service provider object.
      */
     public <T> T getServiceProviderByClass(Class<T> providerClass) {
@@ -185,28 +195,32 @@
     }
 
     /**
-     * Sets an ordering between two service provider objects 
-     * within the specified category. 
+     * Sets an ordering between two service provider objects within the
+     * specified category.
      * 
-     * @param category the specified category.
-     * @param firstProvider the first provider.
-     * @param secondProvider the second provider.
-     * 
-     * @return true if a previously unset order was set.
+     * @param category
+     *            the specified category.
+     * @param firstProvider
+     *            the first provider.
+     * @param secondProvider
+     *            the second provider.
+     * @return true, if a previously unset order was set.
      */
     public <T> boolean setOrdering(Class<T> category, T firstProvider, T secondProvider) {
         throw new UnsupportedOperationException("Not supported yet");
     }
 
     /**
-     * Unsets an ordering between two service provider objects 
-     * within the specified category.
+     * Unsets an ordering between two service provider objects within the
+     * specified category.
      * 
-     * @param category the specified category.
-     * @param firstProvider the first provider.
-     * @param secondProvider the second provider.
-     * 
-     * @return true if a previously unset order was removed.
+     * @param category
+     *            the specified category.
+     * @param firstProvider
+     *            the first provider.
+     * @param secondProvider
+     *            the second provider.
+     * @return true, if a previously unset order was removed.
      */
     public <T> boolean unsetOrdering(Class<T> category, T firstProvider, T secondProvider) {
         throw new UnsupportedOperationException("Not supported yet");
@@ -215,7 +229,8 @@
     /**
      * Deregisters all providers from the specified category.
      * 
-     * @param category the specified category.
+     * @param category
+     *            the specified category.
      */
     public void deregisterAll(Class<?> category) {
         throw new UnsupportedOperationException("Not supported yet");
@@ -229,32 +244,31 @@
     }
 
     /**
-     * Finalizes this object. 
+     * Finalizes this object.
      * 
-     * @throws Throwable throws if an error occurs during 
-     * finalization.
+     * @throws Throwable
+     *             if an error occurs during finalization.
      */
     @Override
     public void finalize() throws Throwable {
-        //TODO uncomment when deregisterAll is implemented
-        //deregisterAll();
+        // TODO uncomment when deregisterAll is implemented
+        // deregisterAll();
     }
 
     /**
      * Checks whether the specified provider has been already registered.
      * 
-     * @param provider the provider to be checked.
-     * 
+     * @param provider
+     *            the provider to be checked.
      * @return true, if the specified provider has been already registered,
-     * false otherwise.
+     *         false otherwise.
      */
     public boolean contains(Object provider) {
         throw new UnsupportedOperationException("Not supported yet");
     }
 
     /**
-     * Gets an iterator of Class objects representing the current 
-     * categories.
+     * Gets an iterator of Class objects representing the current categories.
      * 
      * @return the Iterator of Class objects.
      */
@@ -263,20 +277,22 @@
     }
 
     /**
-     * The ServiceRegistry.Filter interface is used by 
-     * ServiceRegistry.getServiceProviders to filter providers according
-     * to the specified criterion. 
+     * The ServiceRegistry.Filter interface is used by
+     * ServiceRegistry.getServiceProviders to filter providers according to the
+     * specified criterion.
+     * 
+     * @since Android 1.0
      */
     public static interface Filter {
-        
+
         /**
-         * Returns true if the specified provider satisfies the 
-         * criterion of this Filter.
+         * Returns true if the specified provider satisfies the criterion of
+         * this Filter.
          * 
-         * @param provider the provider.
-         * 
-         * @return true if the specified provider satisfies the 
-         * criterion of this Filter, false otherwise.
+         * @param provider
+         *            the provider.
+         * @return true, if the specified provider satisfies the criterion of
+         *         this Filter, false otherwise.
          */
         boolean filter(Object provider);
     }
@@ -285,30 +301,36 @@
      * The Class CategoriesMap.
      */
     private static class CategoriesMap {
-        
-        /** The categories. */
+
+        /**
+         * The categories.
+         */
         Map<Class<?>, ProvidersMap> categories = new HashMap<Class<?>, ProvidersMap>();
 
-        /** The registry. */
+        /**
+         * The registry.
+         */
         ServiceRegistry registry;
 
         /**
          * Instantiates a new categories map.
          * 
-         * @param registry the registry
+         * @param registry
+         *            the registry.
          */
         public CategoriesMap(ServiceRegistry registry) {
             this.registry = registry;
         }
 
-        //-- TODO: useOrdering
+        // -- TODO: useOrdering
         /**
          * Gets the providers.
          * 
-         * @param category the category
-         * @param useOrdering the use ordering
-         * 
-         * @return the providers
+         * @param category
+         *            the category.
+         * @param useOrdering
+         *            the use ordering.
+         * @return the providers.
          */
         Iterator<?> getProviders(Class<?> category, boolean useOrdering) {
             ProvidersMap providers = categories.get(category);
@@ -321,7 +343,7 @@
         /**
          * List.
          * 
-         * @return the iterator< class<?>>
+         * @return the iterator< class<?>>.
          */
         Iterator<Class<?>> list() {
             return categories.keySet().iterator();
@@ -330,7 +352,8 @@
         /**
          * Adds the category.
          * 
-         * @param category the category
+         * @param category
+         *            the category.
          */
         void addCategory(Class<?> category) {
             categories.put(category, new ProvidersMap());
@@ -341,10 +364,11 @@
          * <code>null</code> then the provider will be added to all categories
          * which the provider is assignable from.
          * 
-         * @param provider provider to add
-         * @param category category to add provider to
-         * 
-         * @return if there were such provider in some category
+         * @param provider
+         *            provider to add.
+         * @param category
+         *            category to add provider to.
+         * @return true, if there were such provider in some category.
          */
         boolean addProvider(Object provider, Class<?> category) {
             if (provider == null) {
@@ -355,11 +379,11 @@
             if (category == null) {
                 rt = findAndAdd(provider);
             } else {
-                rt  = addToNamed(provider, category);
+                rt = addToNamed(provider, category);
             }
 
             if (provider instanceof RegisterableService) {
-                ((RegisterableService) provider).onRegistration(registry, category);
+                ((RegisterableService)provider).onRegistration(registry, category);
             }
 
             return rt;
@@ -368,10 +392,11 @@
         /**
          * Adds the to named.
          * 
-         * @param provider the provider
-         * @param category the category
-         * 
-         * @return true, if successful
+         * @param provider
+         *            the provider.
+         * @param category
+         *            the category.
+         * @return true, if successful.
          */
         private boolean addToNamed(Object provider, Class<?> category) {
             Object obj = categories.get(category);
@@ -380,15 +405,15 @@
                 throw new IllegalArgumentException("Unknown category: " + category);
             }
 
-            return ((ProvidersMap) obj).addProvider(provider);
+            return ((ProvidersMap)obj).addProvider(provider);
         }
 
         /**
          * Find and add.
          * 
-         * @param provider the provider
-         * 
-         * @return true, if successful
+         * @param provider
+         *            the provider.
+         * @return true, if successful.
          */
         private boolean findAndAdd(Object provider) {
             boolean rt = false;
@@ -405,17 +430,19 @@
      * The Class ProvidersMap.
      */
     private static class ProvidersMap {
-        //-- TODO: providers ordering support
+        // -- TODO: providers ordering support
 
-        /** The providers. */
+        /**
+         * The providers.
+         */
         Map<Class<?>, Object> providers = new HashMap<Class<?>, Object>();
 
         /**
          * Adds the provider.
          * 
-         * @param provider the provider
-         * 
-         * @return true, if successful
+         * @param provider
+         *            the provider.
+         * @return true, if successful.
          */
         boolean addProvider(Object provider) {
             return providers.put(provider.getClass(), provider) != null;
@@ -424,19 +451,19 @@
         /**
          * Gets the provider classes.
          * 
-         * @return the provider classes
+         * @return the provider classes.
          */
         Iterator<Class<?>> getProviderClasses() {
             return providers.keySet().iterator();
         }
 
-        //-- TODO ordering
+        // -- TODO ordering
         /**
          * Gets the providers.
          * 
-         * @param userOrdering the user ordering
-         * 
-         * @return the providers
+         * @param userOrdering
+         *            the user ordering.
+         * @return the providers.
          */
         Iterator<?> getProviders(boolean userOrdering) {
             return providers.values().iterator();
@@ -448,20 +475,28 @@
      */
     private static class FilteredIterator<E> implements Iterator<E> {
 
-        /** The filter. */
+        /**
+         * The filter.
+         */
         private Filter filter;
-        
-        /** The backend. */
+
+        /**
+         * The backend.
+         */
         private Iterator<E> backend;
-        
-        /** The next obj. */
+
+        /**
+         * The next obj.
+         */
         private E nextObj;
 
         /**
          * Instantiates a new filtered iterator.
          * 
-         * @param filter the filter
-         * @param backend the backend
+         * @param filter
+         *            the filter.
+         * @param backend
+         *            the backend.
          */
         public FilteredIterator(Filter filter, Iterator<E> backend) {
             this.filter = filter;
@@ -472,7 +507,7 @@
         /**
          * Next.
          * 
-         * @return the e
+         * @return the e.
          */
         public E next() {
             if (nextObj == null) {
@@ -486,7 +521,7 @@
         /**
          * Checks for next.
          * 
-         * @return true, if successful
+         * @return true, if successful.
          */
         public boolean hasNext() {
             return nextObj != null;
@@ -500,7 +535,8 @@
         }
 
         /**
-         * Sets nextObj to a next provider matching the criterion given by the filter.
+         * Sets nextObj to a next provider matching the criterion given by the
+         * filter.
          */
         private void findNext() {
             nextObj = null;
diff --git a/awt/javax/imageio/spi/package.html b/awt/javax/imageio/spi/package.html
new file mode 100644
index 0000000..18ceff4
--- /dev/null
+++ b/awt/javax/imageio/spi/package.html
@@ -0,0 +1,8 @@
+<html>
+  <body>
+    <p>
+    This package provides several Service Provider Interface (SPI) classes for readers, writers, transcoders and streams to handle images.
+    </p>
+  @since Android 1.0
+  </body>
+</html>
diff --git a/awt/javax/imageio/stream/FileCacheImageInputStream.java b/awt/javax/imageio/stream/FileCacheImageInputStream.java
index 47bc189..710ac66 100644
--- a/awt/javax/imageio/stream/FileCacheImageInputStream.java
+++ b/awt/javax/imageio/stream/FileCacheImageInputStream.java
@@ -15,38 +15,43 @@
  *  limitations under the License.
  */
 
-
 package javax.imageio.stream;
 
 import java.io.*;
 
 /**
- * The FileCacheImageInputStream class is an implementation of
- * ImageInputStream which reads from its InputStream
- * and uses a temporary file as a cache. 
+ * The FileCacheImageInputStream class is an implementation of ImageInputStream
+ * which reads from its InputStream and uses a temporary file as a cache.
+ * 
+ * @since Android 1.0
  */
 public class FileCacheImageInputStream extends ImageInputStreamImpl {
-    
-    /** The is. */
-    private InputStream is;
-    
-    /** The file. */
-    private File file;
-    
-    /** The raf. */
-    private RandomAccessFile raf;
-
 
     /**
-     * Instantiates a new FileCacheImageInputStream from
-     * the specified InputStream and using the specified 
-     * File as its cache directory.
+     * The is.
+     */
+    private InputStream is;
+
+    /**
+     * The file.
+     */
+    private File file;
+
+    /**
+     * The raf.
+     */
+    private RandomAccessFile raf;
+
+    /**
+     * Instantiates a new FileCacheImageInputStream from the specified
+     * InputStream and using the specified File as its cache directory.
      * 
-     * @param stream the InputStream for reading.
-     * @param cacheDir the cache directory where the chache file
-     * will be created.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param stream
+     *            the InputStream for reading.
+     * @param cacheDir
+     *            the cache directory where the cache file will be created.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public FileCacheImageInputStream(InputStream stream, File cacheDir) throws IOException {
         if (stream == null) {
@@ -55,7 +60,8 @@
         is = stream;
 
         if (cacheDir == null || cacheDir.isDirectory()) {
-            file = File.createTempFile(FileCacheImageOutputStream.IIO_TEMP_FILE_PREFIX, null, cacheDir);
+            file = File.createTempFile(FileCacheImageOutputStream.IIO_TEMP_FILE_PREFIX, null,
+                    cacheDir);
             file.deleteOnExit();
         } else {
             throw new IllegalArgumentException("Not a directory!");
diff --git a/awt/javax/imageio/stream/FileCacheImageOutputStream.java b/awt/javax/imageio/stream/FileCacheImageOutputStream.java
index ae48585..135afab 100644
--- a/awt/javax/imageio/stream/FileCacheImageOutputStream.java
+++ b/awt/javax/imageio/stream/FileCacheImageOutputStream.java
@@ -15,7 +15,6 @@
  *  limitations under the License.
  */
 
-
 package javax.imageio.stream;
 
 import java.io.IOException;
@@ -24,35 +23,48 @@
 import java.io.RandomAccessFile;
 
 /**
- * The FileCacheImageOutputStream class is an implementation of 
- * ImageOutputStream that writes to its OutputStream
- * using a temporary file as a cache. 
+ * The FileCacheImageOutputStream class is an implementation of
+ * ImageOutputStream that writes to its OutputStream using a temporary file as a
+ * cache.
+ * 
+ * @since Android 1.0
  */
 public class FileCacheImageOutputStream extends ImageOutputStreamImpl {
-    
-    /** The Constant IIO_TEMP_FILE_PREFIX. */
+
+    /**
+     * The Constant IIO_TEMP_FILE_PREFIX.
+     */
     static final String IIO_TEMP_FILE_PREFIX = "iioCache";
-    
-    /** The Constant MAX_BUFFER_LEN. */
+
+    /**
+     * The Constant MAX_BUFFER_LEN.
+     */
     static final int MAX_BUFFER_LEN = 1048575; // 1 MB - is it not too much?
 
-    /** The os. */
+    /**
+     * The os.
+     */
     private OutputStream os;
-    
-    /** The file. */
+
+    /**
+     * The file.
+     */
     private File file;
-    
-    /** The raf. */
+
+    /**
+     * The raf.
+     */
     private RandomAccessFile raf;
 
     /**
      * Instantiates a FileCacheImageOutputStream.
      * 
-     * @param stream the OutputStream for writing.
-     * @param cacheDir the cache directory where the chache file
-     * will be created.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param stream
+     *            the OutputStream for writing.
+     * @param cacheDir
+     *            the cache directory where the cache file will be created.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public FileCacheImageOutputStream(OutputStream stream, File cacheDir) throws IOException {
         if (stream == null) {
@@ -96,7 +108,7 @@
     @Override
     public void write(int b) throws IOException {
         flushBits(); // See the flushBits method description
-        
+
         raf.write(b);
         streamPos++;
     }
@@ -148,7 +160,7 @@
         } else {
             byte buffer[] = new byte[MAX_BUFFER_LEN];
             while (bytesToRead > 0) {
-                int count = (int) Math.min(MAX_BUFFER_LEN, bytesToRead);
+                int count = (int)Math.min(MAX_BUFFER_LEN, bytesToRead);
                 raf.readFully(buffer, 0, count);
                 os.write(buffer, 0, count);
                 bytesToRead -= count;
@@ -169,7 +181,7 @@
         }
 
         raf.seek(pos);
-        streamPos = raf.getFilePointer();        
+        streamPos = raf.getFilePointer();
         bitOffset = 0;
     }
 
@@ -177,7 +189,7 @@
     public long length() {
         try {
             return raf.length();
-        } catch(IOException e) {
+        } catch (IOException e) {
             return -1L;
         }
     }
diff --git a/awt/javax/imageio/stream/FileImageInputStream.java b/awt/javax/imageio/stream/FileImageInputStream.java
index 6680ae0..b9b6002 100644
--- a/awt/javax/imageio/stream/FileImageInputStream.java
+++ b/awt/javax/imageio/stream/FileImageInputStream.java
@@ -15,7 +15,6 @@
  *  limitations under the License.
  */
 
-
 package javax.imageio.stream;
 
 import java.io.IOException;
@@ -24,24 +23,31 @@
 import java.io.FileNotFoundException;
 
 /**
- * The FileImageInputStream class implements ImageInputStream 
- * and obtains its input data from a File or RandomAccessFile. 
+ * The FileImageInputStream class implements ImageInputStream and obtains its
+ * input data from a File or RandomAccessFile.
+ * 
+ * @since Android 1.0
  */
 public class FileImageInputStream extends ImageInputStreamImpl {
-    
-    /** The raf. */
+
+    /**
+     * The raf.
+     */
     RandomAccessFile raf;
 
     /**
      * Instantiates a new FileImageInputStream from the specified File.
      * 
-     * @param f the File of input data.
-     * 
-     * @throws FileNotFoundException if the specified file 
-     * doesn't exist.
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param f
+     *            the File of input data.
+     * @throws FileNotFoundException
+     *             if the specified file doesn't exist.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
-    @SuppressWarnings({"DuplicateThrows"})
+    @SuppressWarnings( {
+        "DuplicateThrows"
+    })
     public FileImageInputStream(File f) throws FileNotFoundException, IOException {
         if (f == null) {
             throw new IllegalArgumentException("f == null!");
@@ -51,10 +57,11 @@
     }
 
     /**
-     * Instantiates a new FileImageInputStream from the specified 
+     * Instantiates a new FileImageInputStream from the specified
      * RandomAccessFile.
      * 
-     * @param raf the RandomAccessFile of input data.
+     * @param raf
+     *            the RandomAccessFile of input data.
      */
     public FileImageInputStream(RandomAccessFile raf) {
         if (raf == null) {
@@ -91,7 +98,7 @@
     public long length() {
         try {
             return raf.length();
-        } catch(IOException e) {
+        } catch (IOException e) {
             return -1L;
         }
     }
diff --git a/awt/javax/imageio/stream/FileImageOutputStream.java b/awt/javax/imageio/stream/FileImageOutputStream.java
index eaafe14..2730ba6 100644
--- a/awt/javax/imageio/stream/FileImageOutputStream.java
+++ b/awt/javax/imageio/stream/FileImageOutputStream.java
@@ -18,39 +18,44 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio.stream;
 
 import java.io.*;
 
 /**
- * The FileImageOutputStream class implements ImageOutputStream 
- * and writes the output data to a File or RandomAccessFile. 
+ * The FileImageOutputStream class implements ImageOutputStream and writes the
+ * output data to a File or RandomAccessFile.
+ * 
+ * @since Android 1.0
  */
 public class FileImageOutputStream extends ImageOutputStreamImpl {
 
-    /** The file. */
+    /**
+     * The file.
+     */
     RandomAccessFile file;
 
     /**
-     * Instantiates a new FileImageOutputStream with the specified
-     * File.
+     * Instantiates a new FileImageOutputStream with the specified File.
      * 
-     * @param f the output File.
-     * 
-     * @throws FileNotFoundException if the file not found.
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param f
+     *            the output File.
+     * @throws FileNotFoundException
+     *             if the file not found.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     public FileImageOutputStream(File f) throws FileNotFoundException, IOException {
-        this(f != null
-                ? new RandomAccessFile(f, "rw")
-                : null);
+        this(f != null ? new RandomAccessFile(f, "rw") : null);
     }
 
     /**
      * Instantiates a new FileImageOutputStream with the specified
      * RandomAccessFile.
      * 
-     * @param raf the output RandomAccessFile.
+     * @param raf
+     *            the output RandomAccessFile.
      */
     public FileImageOutputStream(RandomAccessFile raf) {
         if (raf == null) {
@@ -102,14 +107,14 @@
         try {
             checkClosed();
             return file.length();
-        } catch(IOException e) {
+        } catch (IOException e) {
             return super.length(); // -1L
         }
     }
 
     @Override
     public void seek(long pos) throws IOException {
-        //-- checkClosed() is performed in super.seek()
+        // -- checkClosed() is performed in super.seek()
         super.seek(pos);
         file.seek(pos);
         streamPos = file.getFilePointer();
diff --git a/awt/javax/imageio/stream/IIOByteBuffer.java b/awt/javax/imageio/stream/IIOByteBuffer.java
index 961a7b3..867d808 100644
--- a/awt/javax/imageio/stream/IIOByteBuffer.java
+++ b/awt/javax/imageio/stream/IIOByteBuffer.java
@@ -18,35 +18,46 @@
  * @author Sergey I. Salishev
  * @version $Revision: 1.2 $
  */
+
 package javax.imageio.stream;
 
-/** 
-* @author Sergey I. Salishev
-* @version $Revision: 1.2 $
-*/
+// 
+// @author Sergey I. Salishev
+// @version $Revision: 1.2 $
+//
 
 /**
- * The IIOByteBuffer class represents a byte array with offset and 
- * length that is used by ImageInputStream for obtaining a sequence 
- * of bytes.
+ * The IIOByteBuffer class represents a byte array with offset and length that
+ * is used by ImageInputStream for obtaining a sequence of bytes.
+ * 
+ * @since Android 1.0
  */
 public class IIOByteBuffer {
-    
-    /** The data. */
+
+    /**
+     * The data.
+     */
     private byte[] data;
-    
-    /** The offset. */
+
+    /**
+     * The offset.
+     */
     private int offset;
-    
-    /** The length. */
+
+    /**
+     * The length.
+     */
     private int length;
 
     /**
      * Instantiates a new IIOByteBuffer.
      * 
-     * @param data the byte array.
-     * @param offset the offset in the array.
-     * @param length the length of array.
+     * @param data
+     *            the byte array.
+     * @param offset
+     *            the offset in the array.
+     * @param length
+     *            the length of array.
      */
     public IIOByteBuffer(byte[] data, int offset, int length) {
         this.data = data;
@@ -84,7 +95,8 @@
     /**
      * Sets the new data array to this IIOByteBuffer object.
      * 
-     * @param data the new data array.
+     * @param data
+     *            the new data array.
      */
     public void setData(byte[] data) {
         this.data = data;
@@ -93,7 +105,8 @@
     /**
      * Sets the length of data which will be used.
      * 
-     * @param length the new length.
+     * @param length
+     *            the new length.
      */
     public void setLength(int length) {
         this.length = length;
@@ -102,10 +115,10 @@
     /**
      * Sets the offset in the data array of this IIOByteBuffer.
      * 
-     * @param offset the new offset.
+     * @param offset
+     *            the new offset.
      */
     public void setOffset(int offset) {
         this.offset = offset;
     }
 }
-
diff --git a/awt/javax/imageio/stream/ImageInputStream.java b/awt/javax/imageio/stream/ImageInputStream.java
index 771e9ff..3dec5d2 100644
--- a/awt/javax/imageio/stream/ImageInputStream.java
+++ b/awt/javax/imageio/stream/ImageInputStream.java
@@ -18,6 +18,7 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.2 $
  */
+
 package javax.imageio.stream;
 
 import java.io.DataInput;
@@ -25,21 +26,24 @@
 import java.nio.ByteOrder;
 
 /**
- * The ImageInputStream represents input stream interface that is 
- * used by ImageReaders.
+ * The ImageInputStream represents input stream interface that is used by
+ * ImageReaders.
+ * 
+ * @since Android 1.0
  */
 public interface ImageInputStream extends DataInput {
 
     /**
-     * Sets the specified byte order for reading of data values 
-     * from this stream. 
+     * Sets the specified byte order for reading of data values from this
+     * stream.
      * 
-     * @param byteOrder the byte order.
+     * @param byteOrder
+     *            the byte order.
      */
     void setByteOrder(ByteOrder byteOrder);
 
     /**
-     * Gets the byte order. 
+     * Gets the byte order.
      * 
      * @return the byte order.
      */
@@ -48,158 +52,151 @@
     /**
      * Reads a byte from the stream.
      * 
-     * @return the byte of the stream, or -1 for EOF indicating. 
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @return the byte of the stream, or -1 for EOF indicating.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     int read() throws IOException;
 
     /**
-     * Reads number of bytes which is equal to the specified array's length
-     * and stores a result to this array.
+     * Reads number of bytes which is equal to the specified array's length and
+     * stores a result to this array.
      * 
-     * @param b the byte array.
-     * 
+     * @param b
+     *            the byte array.
      * @return the number of read bytes, or -1 indicated EOF.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     int read(byte[] b) throws IOException;
 
     /**
-     * Reads the number of bytes specified by len parameter from 
-     * the stream and stores a result to the specified array
-     * with the specified offset.
+     * Reads the number of bytes specified by len parameter from the stream and
+     * stores a result to the specified array with the specified offset.
      * 
-     * @param b the byte array.
-     * @param off the offset.
-     * @param len the number of bytes to be read.
-     * 
+     * @param b
+     *            the byte array.
+     * @param off
+     *            the offset.
+     * @param len
+     *            the number of bytes to be read.
      * @return the number of read bytes, or -1 indicated EOF.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     int read(byte[] b, int off, int len) throws IOException;
 
     /**
-     * Reads the number of bytes specified by len parameter 
-     * from the stream, and modifies the specified IIOByteBuffer 
-     * with the byte array, offset, and length.
+     * Reads the number of bytes specified by len parameter from the stream, and
+     * modifies the specified IIOByteBuffer with the byte array, offset, and
+     * length.
      * 
-     * @param buf the IIOByteBuffer.
-     * @param len the number of bytes to be read.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param buf
+     *            the IIOByteBuffer.
+     * @param len
+     *            the number of bytes to be read.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void readBytes(IIOByteBuffer buf, int len) throws IOException;
 
     /**
-     * Reads a byte from the stream and returns a boolean true value 
-     * if it is non zero, false if it is zero.
+     * Reads a byte from the stream and returns a boolean true value if it is
+     * non zero, false if it is zero.
      * 
-     * @return a boolean value for read byte. 
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @return the boolean value for read byte.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     boolean readBoolean() throws IOException;
 
     /**
-     * Reads a byte from the stream and returns its value
-     * as signed byte.
+     * Reads a byte from the stream and returns its value as signed byte.
      * 
-     * @return a signed byte value for read byte. 
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @return the signed byte value for read byte.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     byte readByte() throws IOException;
 
     /**
-     * Reads a byte from the stream and returns its value
-     * as int.
+     * Reads a byte from the stream and returns its value as an integer.
      * 
-     * @return a unsigned byte value for read byte as int. 
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @return the unsigned byte value for read byte as an integer.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     int readUnsignedByte() throws IOException;
 
     /**
-     * Reads 2 bytes from the stream, and returns the result 
-     * as a short.
+     * Reads 2 bytes from the stream, and returns the result as a short.
      * 
      * @return the signed short value from the stream.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     short readShort() throws IOException;
 
     /**
-     * Reads 2 bytes from the stream and returns its value
-     * as an unsigned short.
+     * Reads 2 bytes from the stream and returns its value as an unsigned short.
      * 
-     * @return a unsigned short value coded in an int. 
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @return a unsigned short value coded in an integer.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     int readUnsignedShort() throws IOException;
 
     /**
-     * Reads 2 bytes from the stream and returns their 
-     * unsigned char value.
+     * Reads 2 bytes from the stream and returns their unsigned char value.
      * 
      * @return the unsigned char value.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     char readChar() throws IOException;
 
     /**
-     * Reads 4 bytes from the stream, and returns the result 
-     * as an int.
+     * Reads 4 bytes from the stream, and returns the result as an integer.
      * 
-     * @return the signed int value from the stream.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @return the signed integer value from the stream.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     int readInt() throws IOException;
 
     /**
-     * Reads 4 bytes from the stream and returns its value
-     * as long.
+     * Reads 4 bytes from the stream and returns its value as long.
      * 
-     * @return a unsigned int value as long. 
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @return the unsigned integer value as long.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     long readUnsignedInt() throws IOException;
 
     /**
-     * Reads 8 bytes from the stream, and returns the result 
-     * as a long.
+     * Reads 8 bytes from the stream, and returns the result as a long.
      * 
      * @return the long value from the stream.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     long readLong() throws IOException;
 
     /**
-     * Reads 4 bytes from the stream, and returns the result 
-     * as a float.
+     * Reads 4 bytes from the stream, and returns the result as a float.
      * 
      * @return the float value from the stream.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     float readFloat() throws IOException;
 
     /**
-     * Reads 8 bytes from the stream, and returns the result 
-     * as a double.
+     * Reads 8 bytes from the stream, and returns the result as a double.
      * 
      * @return the double value from the stream.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     double readDouble() throws IOException;
 
@@ -207,120 +204,134 @@
      * Reads a line from the stream.
      * 
      * @return the string contained the line from the stream.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     String readLine() throws IOException;
 
     /**
-     * Reads bytes from the stream in a string that has been encoded 
-     * in a modified UTF-8 format.
+     * Reads bytes from the stream in a string that has been encoded in a
+     * modified UTF-8 format.
      * 
      * @return the string read from stream and modified UTF-8 format.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     String readUTF() throws IOException;
 
     /**
-     * Reads the specified number of bytes from the stream, 
-     * and stores the result into the specified array starting at 
-     * the specified index offset. 
+     * Reads the specified number of bytes from the stream, and stores the
+     * result into the specified array starting at the specified index offset.
      * 
-     * @param b the byte array.
-     * @param off the offset.
-     * @param len the number of bytes to be read.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param b
+     *            the byte array.
+     * @param off
+     *            the offset.
+     * @param len
+     *            the number of bytes to be read.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void readFully(byte[] b, int off, int len) throws IOException;
 
     /**
-     * Reads number of bytes from the stream which is equal to 
-     * the specified array's length, and stores them into 
-     * this array.
+     * Reads number of bytes from the stream which is equal to the specified
+     * array's length, and stores them into this array.
      * 
-     * @param b the byte array.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param b
+     *            the byte array.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void readFully(byte[] b) throws IOException;
 
     /**
-     * Reads the specified number of shorts from the stream, 
-     * and stores the result into the specified array starting at 
-     * the specified index offset. 
+     * Reads the specified number of shorts from the stream, and stores the
+     * result into the specified array starting at the specified index offset.
      * 
-     * @param s the short array.
-     * @param off the offset.
-     * @param len the number of shorts to be read.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param s
+     *            the short array.
+     * @param off
+     *            the offset.
+     * @param len
+     *            the number of shorts to be read.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void readFully(short[] s, int off, int len) throws IOException;
 
     /**
-     * Reads the specified number of chars from the stream, 
-     * and stores the result into the specified array starting at 
-     * the specified index offset. 
+     * Reads the specified number of chars from the stream, and stores the
+     * result into the specified array starting at the specified index offset.
      * 
-     * @param c the char array.
-     * @param off the offset.
-     * @param len the number of chars to be read.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param c
+     *            the char array.
+     * @param off
+     *            the offset.
+     * @param len
+     *            the number of chars to be read.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void readFully(char[] c, int off, int len) throws IOException;
 
     /**
-     * Reads the specified number of ints from the stream, 
-     * and stores the result into the specified array starting at 
-     * the specified index offset. 
+     * Reads the specified number of integer from the stream, and stores the
+     * result into the specified array starting at the specified index offset.
      * 
-     * @param i the int array.
-     * @param off the offset.
-     * @param len the number of ints to be read.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param i
+     *            the integer array.
+     * @param off
+     *            the offset.
+     * @param len
+     *            the number of integer to be read.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void readFully(int[] i, int off, int len) throws IOException;
 
     /**
-     * Reads the specified number of longs from the stream, 
-     * and stores the result into the specified array starting at 
-     * the specified index offset. 
+     * Reads the specified number of longs from the stream, and stores the
+     * result into the specified array starting at the specified index offset.
      * 
-     * @param l the long array.
-     * @param off the offset.
-     * @param len the number of longs to be read.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param l
+     *            the long array.
+     * @param off
+     *            the offset.
+     * @param len
+     *            the number of longs to be read.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void readFully(long[] l, int off, int len) throws IOException;
 
     /**
-     * Reads the specified number of floats from the stream, 
-     * and stores the result into the specified array starting at 
-     * the specified index offset. 
+     * Reads the specified number of floats from the stream, and stores the
+     * result into the specified array starting at the specified index offset.
      * 
-     * @param f the float array.
-     * @param off the offset.
-     * @param len the number of floats to be read.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param f
+     *            the float array.
+     * @param off
+     *            the offset.
+     * @param len
+     *            the number of floats to be read.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void readFully(float[] f, int off, int len) throws IOException;
 
     /**
-     * Reads the specified number of doubles from the stream, 
-     * and stores the result into the specified array starting at 
-     * the specified index offset. 
+     * Reads the specified number of doubles from the stream, and stores the
+     * result into the specified array starting at the specified index offset.
      * 
-     * @param d the double array.
-     * @param off the offset.
-     * @param len the number of doubles to be read.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param d
+     *            the double array.
+     * @param off
+     *            the offset.
+     * @param len
+     *            the number of doubles to be read.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void readFully(double[] d, int off, int len) throws IOException;
 
@@ -328,8 +339,8 @@
      * Gets the stream position.
      * 
      * @return the stream position.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     long getStreamPosition() throws IOException;
 
@@ -337,17 +348,18 @@
      * Gets the bit offset.
      * 
      * @return the bit offset.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     int getBitOffset() throws IOException;
 
     /**
-     * Sets the bit offset to an integer between 0 and 7. 
+     * Sets the bit offset to an integer between 0 and 7.
      * 
-     * @param bitOffset the bit offset.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param bitOffset
+     *            the bit offset.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void setBitOffset(int bitOffset) throws IOException;
 
@@ -355,90 +367,94 @@
      * Reads a bit from the stream and returns the value 0 or 1.
      * 
      * @return the value of single bit: 0 or 1.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     int readBit() throws IOException;
 
     /**
      * Read the specified number of bits and returns their values as long.
      * 
-     * @param numBits the number of bits to be read.
-     * 
+     * @param numBits
+     *            the number of bits to be read.
      * @return the bit string as a long.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     long readBits(int numBits) throws IOException;
 
     /**
-     * Returns the length of the stream. 
-     *  
-     * @return the length of the stream, or -1 if unknown. 
+     * Returns the length of the stream.
      * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @return the length of the stream, or -1 if unknown.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     long length() throws IOException;
 
     /**
-     * Skipes the specified number of bytes by moving stream position. 
+     * Skips the specified number of bytes by moving stream position.
      * 
-     * @param n the number of bytes.
-     * 
+     * @param n
+     *            the number of bytes.
      * @return the actual skipped number of bytes.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     int skipBytes(int n) throws IOException;
 
     /**
-     * Skipes the specified number of bytes by moving stream position. 
+     * Skips the specified number of bytes by moving stream position.
      * 
-     * @param n the number of bytes.
-     * 
+     * @param n
+     *            the number of bytes.
      * @return the actual skipped number of bytes.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     long skipBytes(long n) throws IOException;
 
     /**
-     * Sets the current stream position to the specified location. 
+     * Sets the current stream position to the specified location.
      * 
-     * @param pos a file pointer position.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param pos
+     *            a file pointer position.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void seek(long pos) throws IOException;
 
     /**
-     * Marks a position in the stream to be returned to by a subsequent 
-     * call to reset. 
+     * Marks a position in the stream to be returned to by a subsequent call to
+     * reset.
      */
     void mark();
 
     /**
      * Returns the file pointer to its previous position.
      * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void reset() throws IOException;
 
     /**
-     * Flushes the initial position in this stream prior to the
-     * specified stream position.
+     * Flushes the initial position in this stream prior to the specified stream
+     * position.
      * 
-     * @param pos the position.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param pos
+     *            the position.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void flushBefore(long pos) throws IOException;
 
     /**
-     * Flushes the initial position in this stream prior to the
-     * current stream position.
+     * Flushes the initial position in this stream prior to the current stream
+     * position.
      * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void flush() throws IOException;
 
@@ -450,36 +466,37 @@
     long getFlushedPosition();
 
     /**
-     * Returns true if this ImageInputStream caches data in order 
-     * to allow seeking backwards.
+     * Returns true if this ImageInputStream caches data in order to allow
+     * seeking backwards.
      * 
-     * @return true if this ImageInputStream caches data in order 
-     * to allow seeking backwards, false otherwise.
+     * @return true, if this ImageInputStream caches data in order to allow
+     *         seeking backwards, false otherwise.
      */
     boolean isCached();
 
     /**
-     * Returns true if this ImageInputStream caches data in order 
-     * to allow seeking backwards, and keeps it in memory.
+     * Returns true if this ImageInputStream caches data in order to allow
+     * seeking backwards, and keeps it in memory.
      * 
-     * @return true if this ImageInputStream caches data in order 
-     * to allow seeking backwards, and keeps it in memory.
+     * @return true, if this ImageInputStream caches data in order to allow
+     *         seeking backwards, and keeps it in memory.
      */
     boolean isCachedMemory();
 
     /**
-     * Returns true if this ImageInputStream caches data in order 
-     * to allow seeking backwards, and keeps it in a temporary file.
+     * Returns true if this ImageInputStream caches data in order to allow
+     * seeking backwards, and keeps it in a temporary file.
      * 
-     * @return true if this ImageInputStream caches data in order 
-     * to allow seeking backwards, and keeps it in a temporary file.
+     * @return true, if this ImageInputStream caches data in order to allow
+     *         seeking backwards, and keeps it in a temporary file.
      */
     boolean isCachedFile();
 
     /**
      * Closes this stream.
      * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void close() throws IOException;
 }
diff --git a/awt/javax/imageio/stream/ImageInputStreamImpl.java b/awt/javax/imageio/stream/ImageInputStreamImpl.java
index 83ac13a..d79da41 100644
--- a/awt/javax/imageio/stream/ImageInputStreamImpl.java
+++ b/awt/javax/imageio/stream/ImageInputStreamImpl.java
@@ -18,6 +18,7 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio.stream;
 
 import java.io.EOFException;
@@ -25,38 +26,54 @@
 import java.nio.ByteOrder;
 
 /**
- * The ImageInputStreamImpl abstract class implements
- * the ImageInputStream interface.
+ * The ImageInputStreamImpl abstract class implements the ImageInputStream
+ * interface.
+ * 
+ * @since Android 1.0
  */
 public abstract class ImageInputStreamImpl implements ImageInputStream {
 
-    /** The byte order. */
+    /**
+     * The byte order.
+     */
     protected ByteOrder byteOrder = ByteOrder.BIG_ENDIAN;
 
-    /** The stream position. */
+    /**
+     * The stream position.
+     */
     protected long streamPos = 0;
-    
-    /** The flushed position. */
+
+    /**
+     * The flushed position.
+     */
     protected long flushedPos = 0;
-    
-    /** The bit offset. */
+
+    /**
+     * The bit offset.
+     */
     protected int bitOffset = 0;
 
-    /** The closed. */
+    /**
+     * The closed.
+     */
     private boolean closed = false;
 
-    /** The position stack. */
+    /**
+     * The position stack.
+     */
     private final PositionStack posStack = new PositionStack();
 
     /**
      * Instantiates a new ImageInputStreamImpl.
      */
-    public ImageInputStreamImpl() {}
+    public ImageInputStreamImpl() {
+    }
 
     /**
      * Check if the stream is closed and if true, throws an IOException.
      * 
-     * @throws IOException Signals that the stream is closed.
+     * @throws IOException
+     *             if the stream is closed.
      */
     protected final void checkClosed() throws IOException {
         if (closed) {
@@ -106,7 +123,7 @@
         if (b < 0) {
             throw new EOFException("EOF reached");
         }
-        return (byte) b;
+        return (byte)b;
     }
 
     public int readUnsignedByte() throws IOException {
@@ -125,58 +142,57 @@
             throw new EOFException("EOF reached");
         }
 
-        return byteOrder == ByteOrder.BIG_ENDIAN ?
-                (short) ((b1 << 8) | (b2 & 0xff)) :
-                (short) ((b2 << 8) | (b1 & 0xff));
+        return byteOrder == ByteOrder.BIG_ENDIAN ? (short)((b1 << 8) | (b2 & 0xff))
+                : (short)((b2 << 8) | (b1 & 0xff));
     }
 
     public int readUnsignedShort() throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public char readChar() throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public int readInt() throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public long readUnsignedInt() throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public long readLong() throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public float readFloat() throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public double readDouble() throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public String readLine() throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public String readUTF() throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public void readFully(byte[] b, int off, int len) throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
@@ -185,32 +201,32 @@
     }
 
     public void readFully(short[] s, int off, int len) throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public void readFully(char[] c, int off, int len) throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public void readFully(int[] i, int off, int len) throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public void readFully(long[] l, int off, int len) throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public void readFully(float[] f, int off, int len) throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public void readFully(double[] d, int off, int len) throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
@@ -230,12 +246,12 @@
     }
 
     public int readBit() throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public long readBits(int numBits) throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
@@ -244,12 +260,12 @@
     }
 
     public int skipBytes(int n) throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public long skipBytes(long n) throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
@@ -272,7 +288,7 @@
     }
 
     public void reset() throws IOException {
-        //-- TODO bit pos
+        // -- TODO bit pos
         if (!posStack.isEmpty()) {
             long p = posStack.pop();
             if (p < flushedPos) {
@@ -290,7 +306,7 @@
             throw new IndexOutOfBoundsException("Trying to flush within already flushed portion");
         }
         flushedPos = pos;
-        //-- TODO implement
+        // -- TODO implement
     }
 
     public void flush() throws IOException {
@@ -302,15 +318,15 @@
     }
 
     public boolean isCached() {
-        return false; //def
+        return false; // def
     }
 
     public boolean isCachedMemory() {
-        return false; //def
+        return false; // def
     }
 
     public boolean isCachedFile() {
-        return false; //def
+        return false; // def
     }
 
     public void close() throws IOException {
@@ -322,7 +338,8 @@
     /**
      * Finalizes this object.
      * 
-     * @throws Throwable if an error occurs.
+     * @throws Throwable
+     *             if an error occurs.
      */
     @Override
     protected void finalize() throws Throwable {
@@ -339,25 +356,31 @@
      * The Class PositionStack.
      */
     private static class PositionStack {
-        
-        /** The Constant SIZE. */
+
+        /**
+         * The Constant SIZE.
+         */
         private static final int SIZE = 10;
 
-        /** The values. */
+        /**
+         * The values.
+         */
         private long[] values = new long[SIZE];
-        
-        /** The pos. */
-        private int pos = 0;
 
+        /**
+         * The pos.
+         */
+        private int pos = 0;
 
         /**
          * Push.
          * 
-         * @param v the v
+         * @param v
+         *            the v.
          */
         void push(long v) {
             if (pos >= values.length) {
-                ensure(pos+1);
+                ensure(pos + 1);
             }
             values[pos++] = v;
         }
@@ -365,7 +388,7 @@
         /**
          * Pop.
          * 
-         * @return the long
+         * @return the long.
          */
         long pop() {
             return values[--pos];
@@ -374,7 +397,7 @@
         /**
          * Checks if is empty.
          * 
-         * @return true, if is empty
+         * @return true, if is empty.
          */
         boolean isEmpty() {
             return pos == 0;
@@ -383,7 +406,8 @@
         /**
          * Ensure.
          * 
-         * @param size the size
+         * @param size
+         *            the size.
          */
         private void ensure(int size) {
             long[] arr = new long[Math.max(2 * values.length, size)];
diff --git a/awt/javax/imageio/stream/ImageOutputStream.java b/awt/javax/imageio/stream/ImageOutputStream.java
index e59b69d..28ec932 100644
--- a/awt/javax/imageio/stream/ImageOutputStream.java
+++ b/awt/javax/imageio/stream/ImageOutputStream.java
@@ -18,252 +18,289 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.2 $
  */
+
 package javax.imageio.stream;
 
 import java.io.DataOutput;
 import java.io.IOException;
 
 /**
- * The ImageOutputStream represents output stream interface that is 
- * used by ImageWriters.
+ * The ImageOutputStream represents output stream interface that is used by
+ * ImageWriters.
+ * 
+ * @since Android 1.0
  */
 public interface ImageOutputStream extends DataOutput, ImageInputStream {
 
     /**
-     * Writes a single byte to the stream at the current position. 
+     * Writes a single byte to the stream at the current position.
      * 
-     * @param b the int value, of which the 8 lowest bits 
-     * will be written.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param b
+     *            the integer value, of which the 8 lowest bits will be written.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void write(int b) throws IOException;
 
     /**
      * Writes the bytes array to the stream.
      * 
-     * @param b the byte array to be written.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param b
+     *            the byte array to be written.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void write(byte[] b) throws IOException;
 
     /**
-     * Writes a number of bytes from the specified byte array
-     * beggining from the specified offset.
+     * Writes a number of bytes from the specified byte array beginning from the
+     * specified offset.
      * 
-     * @param b the byte array.
-     * @param off the offset.
-     * @param len the number of bytes to be written.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param b
+     *            the byte array.
+     * @param off
+     *            the offset.
+     * @param len
+     *            the number of bytes to be written.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void write(byte[] b, int off, int len) throws IOException;
 
     /**
-     * Writes the specified boolean value to the stream, 1 if it is true,
-     * 0 if it is false.
+     * Writes the specified boolean value to the stream, 1 if it is true, 0 if
+     * it is false.
      * 
-     * @param b the boolean value to be written.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param b
+     *            the boolean value to be written.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void writeBoolean(boolean b) throws IOException;
 
     /**
-     * Writes the 8 lowest bits of the specified int value to the stream. 
+     * Writes the 8 lowest bits of the specified integer value to the stream.
      * 
-     * @param b the specified int value.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param b
+     *            the specified integer value.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void writeByte(int b) throws IOException;
 
     /**
-     * Writes a short value to the output stream. 
+     * Writes a short value to the output stream.
      * 
-     * @param v the short value to be written. 
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param v
+     *            the short value to be written.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void writeShort(int v) throws IOException;
 
     /**
-     * Writes the 16 lowest bits of the specified int value to the stream.
+     * Writes the 16 lowest bits of the specified integer value to the stream.
      * 
-     * @param v the specified int value.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param v
+     *            the specified integer value.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void writeChar(int v) throws IOException;
 
     /**
-     * Writes an integer value to the output stream. 
+     * Writes an integer value to the output stream.
      * 
-     * @param v the integer value to be written. 
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param v
+     *            the integer value to be written.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void writeInt(int v) throws IOException;
 
     /**
      * Write long.
      * 
-     * @param v the long value
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param v
+     *            the long value.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void writeLong(long v) throws IOException;
 
     /**
-     * Writes a float value to the output stream. 
+     * Writes a float value to the output stream.
      * 
-     * @param v the float which contains value to be written. 
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param v
+     *            the float which contains value to be written.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void writeFloat(float v) throws IOException;
 
     /**
-     * Writes a double value to the output stream. 
+     * Writes a double value to the output stream.
      * 
-     * @param v the double which contains value to be written. 
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param v
+     *            the double which contains value to be written.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void writeDouble(double v) throws IOException;
 
     /**
      * Writes the specified string to the stream.
      * 
-     * @param s the string to be written.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param s
+     *            the string to be written.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void writeBytes(String s) throws IOException;
 
     /**
      * Writes the specified String to the output stream.
      * 
-     * @param s the String to be written.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param s
+     *            the String to be written.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void writeChars(String s) throws IOException;
 
     /**
-     * Writes 2 bytes to the output stream in 
-     * the modified UTF-8  representation of every character of
-     * the specified string.      
+     * Writes 2 bytes to the output stream in the modified UTF-8 representation
+     * of every character of the specified string.
      * 
-     * @param s the specified string to be written.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param s
+     *            the specified string to be written.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void writeUTF(String s) throws IOException;
 
     /**
-     * Flushes the initial position in this stream prior to the
-     * specified stream position.
+     * Flushes the initial position in this stream prior to the specified stream
+     * position.
      * 
-     * @param pos the position.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param pos
+     *            the position.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void flushBefore(long pos) throws IOException;
 
-
     /**
-     * Writes a len number of short values from the specified array
-     * to the stream.
+     * Writes a len number of short values from the specified array to the
+     * stream.
      * 
-     * @param s the shorts array to be written.
-     * @param off the offset in the char array.
-     * @param len the length of chars to be written.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param s
+     *            the shorts array to be written.
+     * @param off
+     *            the offset in the char array.
+     * @param len
+     *            the length of chars to be written.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void writeShorts(short[] s, int off, int len) throws IOException;
 
     /**
      * Writes a len number of chars to the stream.
      * 
-     * @param c the char array to be written.
-     * @param off the offset in the char array.
-     * @param len the length of chars to be written.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param c
+     *            the char array to be written.
+     * @param off
+     *            the offset in the char array.
+     * @param len
+     *            the length of chars to be written.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void writeChars(char[] c, int off, int len) throws IOException;
 
     /**
-     * Writes a len number of int values from the specified array
-     * to the stream.
+     * Writes a len number of integer values from the specified array to the
+     * stream.
      * 
-     * @param i the int array to be written.
-     * @param off the offset in the char array.
-     * @param len the length of chars to be written.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param i
+     *            the integer array to be written.
+     * @param off
+     *            the offset in the char array.
+     * @param len
+     *            the length of chars to be written.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void writeInts(int[] i, int off, int len) throws IOException;
 
     /**
-     * Writes a len number of long values from the specified array
-     * to the stream.
+     * Writes a len number of long values from the specified array to the
+     * stream.
      * 
-     * @param l the long array to be written.
-     * @param off the offset in the char array.
-     * @param len the length of chars to be written.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param l
+     *            the long array to be written.
+     * @param off
+     *            the offset in the char array.
+     * @param len
+     *            the length of chars to be written.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void writeLongs(long[] l, int off, int len) throws IOException;
 
     /**
-     * Writes a len number of float values from the specified array
-     * to the stream.
+     * Writes a len number of float values from the specified array to the
+     * stream.
      * 
-     * @param f the float array to be written.
-     * @param off the offset in the char array.
-     * @param len the length of chars to be written.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param f
+     *            the float array to be written.
+     * @param off
+     *            the offset in the char array.
+     * @param len
+     *            the length of chars to be written.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void writeFloats(float[] f, int off, int len) throws IOException;
 
     /**
-     * Writes a len number of double values from the specified array
-     * to the stream.
+     * Writes a len number of double values from the specified array to the
+     * stream.
      * 
-     * @param d the double array to be written.
-     * @param off the offset in the char array.
-     * @param len the length of chars to be written.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param d
+     *            the double array to be written.
+     * @param off
+     *            the offset in the char array.
+     * @param len
+     *            the length of chars to be written.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void writeDoubles(double[] d, int off, int len) throws IOException;
 
     /**
      * Writes a single bit at the current position.
      * 
-     * @param bit the an int whose least significant bit is to be 
-     * written to the stream.
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param bit
+     *            the integer whose least significant bit is to be written to
+     *            the stream.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void writeBit(int bit) throws IOException;
 
     /**
-     * Writes a sequence of bits beggining from the current position.
+     * Writes a sequence of bits beginning from the current position.
      * 
-     * @param bits a long value containing the bits to be written,
-     * starting with the bit in position numBits - 1 down to the 
-     * least significant bit.
-     * @param numBits the number of significant bit , 
-     * it can be between 0 and 64. 
-     * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @param bits
+     *            the long value containing the bits to be written, starting
+     *            with the bit in position numBits - 1 down to the least
+     *            significant bit.
+     * @param numBits
+     *            the number of significant bit, it can be between 0 and 64.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     void writeBits(long bits, int numBits) throws IOException;
 
diff --git a/awt/javax/imageio/stream/ImageOutputStreamImpl.java b/awt/javax/imageio/stream/ImageOutputStreamImpl.java
index c3d80fa..0fef78f 100644
--- a/awt/javax/imageio/stream/ImageOutputStreamImpl.java
+++ b/awt/javax/imageio/stream/ImageOutputStreamImpl.java
@@ -18,6 +18,7 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio.stream;
 
 import java.io.IOException;
@@ -29,16 +30,19 @@
  */
 
 /**
- * The ImageOutputStreamImpl abstract class implements
- * the ImageOutputStream interface.
+ * The ImageOutputStreamImpl abstract class implements the ImageOutputStream
+ * interface.
+ * 
+ * @since Android 1.0
  */
-public abstract class ImageOutputStreamImpl extends ImageInputStreamImpl
-        implements ImageOutputStream {
+public abstract class ImageOutputStreamImpl extends ImageInputStreamImpl implements
+        ImageOutputStream {
 
     /**
      * Instantiates a new ImageOutputStreamImpl.
      */
-    public ImageOutputStreamImpl() {}
+    public ImageOutputStreamImpl() {
+    }
 
     public abstract void write(int b) throws IOException;
 
@@ -62,7 +66,7 @@
         } else {
 
         }
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
@@ -76,7 +80,7 @@
         } else {
 
         }
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
@@ -86,7 +90,7 @@
         } else {
 
         }
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
@@ -108,62 +112,63 @@
     }
 
     public void writeUTF(String s) throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public void writeShorts(short[] s, int off, int len) throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public void writeChars(char[] c, int off, int len) throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public void writeInts(int[] i, int off, int len) throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public void writeLongs(long[] l, int off, int len) throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public void writeFloats(float[] f, int off, int len) throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public void writeDoubles(double[] d, int off, int len) throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public void writeBit(int bit) throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     public void writeBits(long bits, int numBits) throws IOException {
-        //-- TODO implement
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 
     /**
-     * Flushes the bits. This method should be called in the write
-     * methods by subclasses.
+     * Flushes the bits. This method should be called in the write methods by
+     * subclasses.
      * 
-     * @throws IOException Signals that an I/O exception has occurred.
+     * @throws IOException
+     *             if an I/O exception has occurred.
      */
     protected final void flushBits() throws IOException {
         if (bitOffset == 0) {
             return;
         }
-        
-        //-- TODO implement
+
+        // -- TODO implement
         throw new UnsupportedOperationException("Not implemented yet");
     }
 }
diff --git a/awt/javax/imageio/stream/MemoryCacheImageInputStream.java b/awt/javax/imageio/stream/MemoryCacheImageInputStream.java
index a3d470b..d7fc791 100644
--- a/awt/javax/imageio/stream/MemoryCacheImageInputStream.java
+++ b/awt/javax/imageio/stream/MemoryCacheImageInputStream.java
@@ -15,7 +15,6 @@
  *  limitations under the License.
  */
 
-
 package javax.imageio.stream;
 
 import org.apache.harmony.x.imageio.stream.RandomAccessMemoryCache;
@@ -24,22 +23,29 @@
 import java.io.InputStream;
 
 /**
- * The MemoryCacheImageInputStream class implements ImageInputStream
- * using a memory buffer for caching the data.
+ * The MemoryCacheImageInputStream class implements ImageInputStream using a
+ * memory buffer for caching the data.
+ * 
+ * @since Android 1.0
  */
-public class MemoryCacheImageInputStream  extends ImageInputStreamImpl {
-    
-    /** The is. */
+public class MemoryCacheImageInputStream extends ImageInputStreamImpl {
+
+    /**
+     * The is.
+     */
     private InputStream is;
-    
-    /** The ramc. */
+
+    /**
+     * The ramc.
+     */
     private RandomAccessMemoryCache ramc = new RandomAccessMemoryCache();
 
     /**
-     * Instantiates a new MemoryCacheImageInputStream
-     * which reads from the specified InputStream.
+     * Instantiates a new MemoryCacheImageInputStream which reads from the
+     * specified InputStream.
      * 
-     * @param stream the InputStream to be read.
+     * @param stream
+     *            the InputStream to be read.
      */
     public MemoryCacheImageInputStream(InputStream stream) {
         if (stream == null) {
diff --git a/awt/javax/imageio/stream/MemoryCacheImageOutputStream.java b/awt/javax/imageio/stream/MemoryCacheImageOutputStream.java
index 96ded43..1df40a3 100644
--- a/awt/javax/imageio/stream/MemoryCacheImageOutputStream.java
+++ b/awt/javax/imageio/stream/MemoryCacheImageOutputStream.java
@@ -15,7 +15,6 @@
  *  limitations under the License.
  */
 
-
 package javax.imageio.stream;
 
 import org.apache.harmony.x.imageio.stream.RandomAccessMemoryCache;
@@ -23,24 +22,30 @@
 import java.io.OutputStream;
 import java.io.IOException;
 
-
 /**
- * The MemoryCacheImageOutputStream class implements ImageOutputStream
- * using a memory buffer for caching the data.
+ * The MemoryCacheImageOutputStream class implements ImageOutputStream using a
+ * memory buffer for caching the data.
+ * 
+ * @since Android 1.0
  */
 public class MemoryCacheImageOutputStream extends ImageOutputStreamImpl {
-    
-    /** The os. */
+
+    /**
+     * The os.
+     */
     OutputStream os;
-    
-    /** The ramc. */
+
+    /**
+     * The ramc.
+     */
     RandomAccessMemoryCache ramc = new RandomAccessMemoryCache();
 
     /**
-     * Instantiates a new MemoryCacheImageOutputStream
-     * which writes to the specified OutputStream.
+     * Instantiates a new MemoryCacheImageOutputStream which writes to the
+     * specified OutputStream.
      * 
-     * @param stream the OutputStream.
+     * @param stream
+     *            the OutputStream.
      */
     public MemoryCacheImageOutputStream(OutputStream stream) {
         if (stream == null) {
@@ -125,6 +130,6 @@
         ramc.getData(os, nBytes, flushedPosition);
         ramc.freeBefore(newFlushedPosition);
 
-        os.flush();        
+        os.flush();
     }
 }
diff --git a/awt/javax/imageio/stream/package.html b/awt/javax/imageio/stream/package.html
new file mode 100644
index 0000000..6cf53c3
--- /dev/null
+++ b/awt/javax/imageio/stream/package.html
@@ -0,0 +1,8 @@
+<html>
+  <body>
+    <p>
+      This package contains classes and interfaces for handling images with low-level I/O operations. 
+    </p>
+  @since Android 1.0
+  </body>
+</html>
diff --git a/awt/org/apache/harmony/awt/internal/nls/Messages.java b/awt/org/apache/harmony/awt/internal/nls/Messages.java
index 96762c9..c340358 100644
--- a/awt/org/apache/harmony/awt/internal/nls/Messages.java
+++ b/awt/org/apache/harmony/awt/internal/nls/Messages.java
@@ -71,7 +71,9 @@
      * @return String the message for that key in the system message bundle.
      */
     static public String getString(String msg) {
+        // BEGIN android-changed
         return MsgHelp.getString(msg);
+        // END android-changed
     }
 
     /**
@@ -138,6 +140,12 @@
      * @return String the message for that key in the system message bundle.
      */
     static public String getString(String msg, Object[] args) {
+        // BEGIN android-changed
         return MsgHelp.getString(msg, args);
+        // END android-changed
     }
+
+    // BEGIN android-note
+    // Duplicate code was dropped in favor of using MsgHelp.
+    // END android-note
 }
diff --git a/awt/org/apache/harmony/beans/internal/nls/Messages.java b/awt/org/apache/harmony/beans/internal/nls/Messages.java
index 727c757..51e8168 100644
--- a/awt/org/apache/harmony/beans/internal/nls/Messages.java
+++ b/awt/org/apache/harmony/beans/internal/nls/Messages.java
@@ -30,8 +30,17 @@
 import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 
-import org.apache.harmony.kernel.vm.VM;
-import org.apache.harmony.luni.util.MsgHelp;
+// BEGIN android-deleted
+/*
+ * For Android, this module is a separate library and not part of the
+ * boot classpath, so its resources won't be found on the boot classpath
+ * as is assumed by MsgHelp.getString(). We instead use a local MsgHelp
+ * which bottoms out in a call to the useful part of its lower-level
+ * namesake.
+ */
+//import org.apache.harmony.kernel.vm.VM;
+//import org.apache.harmony.luni.util.MsgHelp;
+// END android-deleted
 
 /**
  * This class retrieves strings from a resource bundle and returns them,
@@ -49,8 +58,10 @@
  */
 public class Messages {
 
-    private static final String sResource =
-        "org.apache.harmony.beans.internal.nls.messages"; //$NON-NLS-1$
+    // BEGIN android-deleted
+    // private static final String sResource =
+    //     "org.apache.harmony.beans.internal.nls.messages"; //$NON-NLS-1$
+    // END android-deleted
 
     /**
      * Retrieves a message which has no arguments.
@@ -60,7 +71,9 @@
      * @return String the message for that key in the system message bundle.
      */
     static public String getString(String msg) {
-        return MsgHelp.getString(sResource, msg);
+        // BEGIN android-changed
+        return MsgHelp.getString(msg);
+        // END android-changed
     }
 
     /**
@@ -127,6 +140,12 @@
      * @return String the message for that key in the system message bundle.
      */
     static public String getString(String msg, Object[] args) {
-        return MsgHelp.getString(sResource, msg, args);
+        // BEGIN android-changed
+        return MsgHelp.getString(msg, args);
+        // END android-changed
     }
+
+    // BEGIN android-note
+    // Duplicate code was dropped in favor of using MsgHelp.
+    // END android-note
 }
diff --git a/awt/org/apache/harmony/beans/internal/nls/MsgHelp.java b/awt/org/apache/harmony/beans/internal/nls/MsgHelp.java
new file mode 100644
index 0000000..68faabf
--- /dev/null
+++ b/awt/org/apache/harmony/beans/internal/nls/MsgHelp.java
@@ -0,0 +1,86 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You 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.
+ */
+
+/*
+ * This implementation is based on the class of the same name in
+ * org.apache.harmony.luni.util.
+ */
+
+package org.apache.harmony.beans.internal.nls;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.logging.Logger;
+import java.util.Locale;
+import java.util.PropertyResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+
+/**
+ * This class contains helper methods for loading resource bundles and
+ * formatting external message strings.
+ */
+public final class MsgHelp {
+    /** name of the resource for this class */
+    private static final String RESOURCE_NAME =
+        "/org/apache/harmony/beans/internal/nls/messages.properties";
+
+    /** the resource bundle for this class */
+    private static final ResourceBundle THE_BUNDLE;
+
+    static {
+        ResourceBundle rb = null;
+
+        try {
+            InputStream in = MsgHelp.class.getResourceAsStream(
+                    RESOURCE_NAME);
+            rb = new PropertyResourceBundle(in);
+        } catch (IOException ex) {
+            Logger.global.warning("Couldn't read resource bundle: " +
+                    ex);
+        } catch (RuntimeException ex) {
+            // Shouldn't happen, but deal at least somewhat gracefully.
+            Logger.global.warning("Couldn't find resource bundle: " +
+                    ex);
+        }
+
+        THE_BUNDLE = rb;
+    }
+    
+    public static String getString(String msg) {
+        if (THE_BUNDLE == null) {
+            return msg;
+        }
+        try {
+            return THE_BUNDLE.getString(msg);
+        } catch (MissingResourceException e) {
+            return "Missing message: " + msg;
+        }
+    }
+    
+    static public String getString(String msg, Object[] args) {
+        String format = msg;
+        if (THE_BUNDLE != null) {
+            try {
+                format = THE_BUNDLE.getString(msg);
+            } catch (MissingResourceException e) {
+            }
+        }
+
+        return org.apache.harmony.luni.util.MsgHelp.format(format, args);
+    }
+}
diff --git a/awt/org/apache/harmony/beans/internal/nls/messages.properties b/awt/resources/org/apache/harmony/beans/internals/nls/messages.properties
similarity index 100%
rename from awt/org/apache/harmony/beans/internal/nls/messages.properties
rename to awt/resources/org/apache/harmony/beans/internals/nls/messages.properties
diff --git a/camera/libcameraservice/Android.mk b/camera/libcameraservice/Android.mk
index 4e7d6d2..2dfe659 100644
--- a/camera/libcameraservice/Android.mk
+++ b/camera/libcameraservice/Android.mk
@@ -4,12 +4,13 @@
 # Set USE_CAMERA_STUB for non-emulator and non-simulator builds, if you want
 # the camera service to use the fake camera.  For emulator or simulator builds,
 # we always use the fake camera.
-#
-ifeq ($(BOARD_CAMERA_LIBRARIES),)
-USE_CAMERA_STUB:=true
-else
+
+ifeq ($(USE_CAMERA_STUB),)
 USE_CAMERA_STUB:=false
+ifneq ($(filter sooner generic sim,$(TARGET_DEVICE)),)
+USE_CAMERA_STUB:=true
 endif #libcamerastub
+endif
 
 ifeq ($(USE_CAMERA_STUB),true)
 #
@@ -51,7 +52,7 @@
 LOCAL_STATIC_LIBRARIES += libcamerastub
 LOCAL_CFLAGS += -include CameraHardwareStub.h
 else
-LOCAL_SHARED_LIBRARIES += $(BOARD_CAMERA_LIBRARIES)
+LOCAL_SHARED_LIBRARIES += libcamera 
 endif
 
 include $(BUILD_SHARED_LIBRARY)
diff --git a/camera/libcameraservice/CameraService.cpp b/camera/libcameraservice/CameraService.cpp
index 5784c4b..800ffa4 100644
--- a/camera/libcameraservice/CameraService.cpp
+++ b/camera/libcameraservice/CameraService.cpp
@@ -1,6 +1,7 @@
 /*
 **
-** Copyright 2008, The Android Open Source Project
+** Copyright (C) 2008, The Android Open Source Project
+** Copyright (C) 2008 HTC Inc.
 **
 ** Licensed under the Apache License, Version 2.0 (the "License");
 ** you may not use this file except in compliance with the License.
@@ -15,7 +16,7 @@
 ** limitations under the License.
 */
 
-
+//#define LOG_NDEBUG 0
 #define LOG_TAG "CameraService"
 #include <utils/Log.h>
 
@@ -155,10 +156,22 @@
 {
     LOGD("Client E constructor");
     mHardware = openCameraHardware();
-    mHasFrameCallback = false;
+
+    // Callback is disabled by default
+    mFrameCallbackFlag = FRAME_CALLBACK_FLAG_NOOP;
     LOGD("Client X constructor");
 }
 
+status_t CameraService::Client::connect(const sp<ICameraClient>& client)
+{
+    // remvoe old client
+    LOGD("connect (new client)");
+    Mutex::Autolock _l(mLock);
+    mCameraClient = client;
+    mFrameCallbackFlag = FRAME_CALLBACK_FLAG_NOOP;
+    return NO_ERROR;
+}
+
 #if HAVE_ANDROID_OS
 static void *unregister_surface(void *arg)
 {
@@ -170,7 +183,7 @@
 #endif
 
 CameraService::Client::~Client()
-{ 
+{
     // spin down hardware
     LOGD("Client E destructor");
     if (mSurface != 0) {
@@ -179,7 +192,7 @@
         // We unregister the buffers in a different thread because binder does
         // not let us make sychronous transactions in a binder destructor (that
         // is, upon our reaching a refcount of zero.)
-        pthread_create(&thr, NULL, 
+        pthread_create(&thr, NULL,
                        unregister_surface,
                        mSurface.get());
         pthread_join(thr, NULL);
@@ -227,12 +240,12 @@
     return NO_ERROR;
 }
 
-// tell the service whether to callback with each preview frame
-void CameraService::Client::setHasFrameCallback(bool installed)
+// set the frame callback flag to affect how the received frames from
+// preview are handled.
+void CameraService::Client::setFrameCallbackFlag(int frame_callback_flag)
 {
     Mutex::Autolock lock(mLock);
-    mHasFrameCallback = installed;
-    // If installed is false, mPreviewBuffer will be released in stopPreview().
+    mFrameCallbackFlag = frame_callback_flag;
 }
 
 // start preview mode, must call setPreviewDisplay first
@@ -250,24 +263,24 @@
         LOGE("mHardware is NULL, returning.");
         return INVALID_OPERATION;
     }
-    
+
     if (mSurface == 0) {
         LOGE("setPreviewDisplay must be called before startPreview!");
         return INVALID_OPERATION;
     }
-    
+
     // XXX: This needs to be improved. remove all hardcoded stuff
-    
+
     int w, h;
     CameraParameters params(mHardware->getParameters());
     params.getPreviewSize(&w, &h);
-    
+
     mSurface->unregisterBuffers();
 
 #if DEBUG_DUMP_PREVIEW_FRAME_TO_FILE
     debug_frame_cnt = 0;
 #endif
-    
+
     status_t ret = mHardware->startPreview(previewCallback,
                                            mCameraService.get());
     if (ret == NO_ERROR) {
@@ -277,7 +290,7 @@
     }
     else LOGE("mHardware->startPreview() failed with status %d\n",
               ret);
-    
+
     return ret;
 }
 
@@ -295,7 +308,7 @@
 
     mHardware->stopPreview();
     LOGD("stopPreview(), hardware stopped OK");
-    
+
     if (mSurface != 0) {
         mSurface->unregisterBuffers();
     }
@@ -361,6 +374,7 @@
 // preview callback - frame buffer update
 void CameraService::Client::previewCallback(const sp<IMemory>& mem, void* user)
 {
+    LOGV("previewCallback()");
     sp<Client> client = getClientFromCookie(user);
     if (client == 0) {
         return;
@@ -395,7 +409,7 @@
     client->postFrame(mem);
 
 #if DEBUG_CLIENT_REFERENCES
-    //**** if the client's refcount is 1, then we are about to destroy it here, 
+    //**** if the client's refcount is 1, then we are about to destroy it here,
     // which is bad--print all refcounts.
     if (client->getStrongCount() == 1) {
         LOGE("++++++++++++++++ (PREVIEW) THIS WILL CAUSE A LOCKUP!");
@@ -431,7 +445,7 @@
         LOGE("mHardware is NULL, returning.");
         return INVALID_OPERATION;
     }
-    
+
     if (mSurface != NULL)
         mSurface->unregisterBuffers();
 
@@ -495,7 +509,7 @@
     client->postRaw(mem);
 
 #if DEBUG_CLIENT_REFERENCES
-    //**** if the client's refcount is 1, then we are about to destroy it here, 
+    //**** if the client's refcount is 1, then we are about to destroy it here,
     // which is bad--print all refcounts.
     if (client->getStrongCount() == 1) {
         LOGE("++++++++++++++++ (RAW) THIS WILL CAUSE A LOCKUP!");
@@ -532,7 +546,7 @@
     client->postJpeg(mem);
 
 #if DEBUG_CLIENT_REFERENCES
-    //**** if the client's refcount is 1, then we are about to destroy it here, 
+    //**** if the client's refcount is 1, then we are about to destroy it here,
     // which is bad--print all refcounts.
     if (client->getStrongCount() == 1) {
         LOGE("++++++++++++++++ (JPEG) THIS WILL CAUSE A LOCKUP!");
@@ -615,37 +629,74 @@
     mCameraClient->jpegCallback(mem);
 }
 
+void CameraService::Client::copyFrameAndPostCopiedFrame(sp<IMemoryHeap> heap, size_t offset, size_t size)
+{
+    LOGV("copyFrameAndPostCopiedFrame");
+    // It is necessary to copy out of pmem before sending this to
+    // the callback. For efficiency, reuse the same MemoryHeapBase
+    // provided it's big enough. Don't allocate the memory or
+    // perform the copy if there's no callback.
+    if (mPreviewBuffer == 0) {
+        mPreviewBuffer = new MemoryHeapBase(size, 0, NULL);
+    } else if (size > mPreviewBuffer->virtualSize()) {
+        mPreviewBuffer.clear();
+        mPreviewBuffer = new MemoryHeapBase(size, 0, NULL);
+        if (mPreviewBuffer == 0) {
+            LOGE("failed to allocate space for preview buffer");
+            return;
+        }
+    }
+    memcpy(mPreviewBuffer->base(),
+           (uint8_t *)heap->base() + offset, size);
+
+    sp<MemoryBase> frame = new MemoryBase(mPreviewBuffer, 0, size);
+    if (frame == 0) {
+        LOGE("failed to allocate space for frame callback");
+        return;
+    }
+    mCameraClient->frameCallback(frame);
+}
+
 void CameraService::Client::postFrame(const sp<IMemory>& mem)
 {
+    LOGV("postFrame");
+    if (mem == 0) {
+        LOGW("mem is a null pointer");
+        return;
+    }
+
     ssize_t offset;
     size_t size;
     sp<IMemoryHeap> heap = mem->getMemory(&offset, &size);
-
-    sp<MemoryBase> frame;
-
     {
         Mutex::Autolock surfaceLock(mSurfaceLock);
-        if (mSurface != NULL)
+        if (mSurface != NULL) {
             mSurface->postBuffer(offset);
-    }
-    
-    // It is necessary to copy out of pmem before sending this to the callback.
-    // For efficiency, reuse the same MemoryHeapBase provided it's big enough.
-    // Don't allocate the memory or perform the copy if there's no callback.
-    if (mHasFrameCallback) {
-        if (mPreviewBuffer == 0) {
-            mPreviewBuffer = new MemoryHeapBase(size, 0, NULL);
-        } else if (size > mPreviewBuffer->virtualSize()) {
-            mPreviewBuffer.clear();
-            mPreviewBuffer = new MemoryHeapBase(size, 0, NULL);
         }
-        memcpy(mPreviewBuffer->base(), (uint8_t *)heap->base() + offset, size);
-        frame = new MemoryBase(mPreviewBuffer, 0, size);
     }
-    
-    // Do not hold the client lock while calling back.
-    if (frame != 0) {
-        mCameraClient->frameCallback(frame);
+
+    // Is the callback enabled or not?
+    if (!(mFrameCallbackFlag & FRAME_CALLBACK_FLAG_ENABLE_MASK)) {
+        // If the enable bit is off, the copy-out and one-shot bits are ignored
+        LOGV("frame callback is diabled");
+        return;
+    }
+
+    // Is the received frame copied out or not?
+    if (mFrameCallbackFlag & FRAME_CALLBACK_FLAG_COPY_OUT_MASK) {
+        LOGV("frame is copied out");
+        copyFrameAndPostCopiedFrame(heap, offset, size);
+    } else {
+        LOGV("frame is directly sent out without copying");
+        mCameraClient->frameCallback(mem);
+    }
+
+    // Is this is one-shot only?
+    if (mFrameCallbackFlag & FRAME_CALLBACK_FLAG_ONE_SHOT_MASK) {
+        LOGV("One-shot only, thus clear the bits and disable frame callback");
+        mFrameCallbackFlag &= ~(FRAME_CALLBACK_FLAG_ONE_SHOT_MASK |
+                                FRAME_CALLBACK_FLAG_COPY_OUT_MASK |
+                                FRAME_CALLBACK_FLAG_ENABLE_MASK);
     }
 }
 
@@ -711,7 +762,7 @@
     }
 
     status_t err = BnCameraService::onTransact(code, data, reply, flags);
-    
+
     LOGD("+++ onTransact err %d code %d", err, code);
 
     if (err == UNKNOWN_TRANSACTION || err == PERMISSION_DENIED) {
diff --git a/camera/libcameraservice/CameraService.h b/camera/libcameraservice/CameraService.h
index 683c51b..b225aa9 100644
--- a/camera/libcameraservice/CameraService.h
+++ b/camera/libcameraservice/CameraService.h
@@ -1,6 +1,7 @@
 /*
 **
-** Copyright 2008, The Android Open Source Project
+** Copyright (C) 2008, The Android Open Source Project
+** Copyright (C) 2008 HTC Inc.
 **
 ** Licensed under the Apache License, Version 2.0 (the "License");
 ** you may not use this file except in compliance with the License.
@@ -20,6 +21,8 @@
 
 #include <ui/ICameraService.h>
 #include <ui/CameraHardwareInterface.h>
+#include <ui/Camera.h>
+
 class android::MemoryHeapBase;
 
 namespace android {
@@ -32,7 +35,7 @@
 // When enabled, this feature allows you to send an event to the CameraService
 // so that you can cause all references to the heap object gWeakHeap, defined
 // below, to be printed. You will also need to set DEBUG_REFS=1 and
-// DEBUG_REFS_ENABLED_BY_DEFAULT=0 in libutils/RefBase.cpp. You just have to 
+// DEBUG_REFS_ENABLED_BY_DEFAULT=0 in libutils/RefBase.cpp. You just have to
 // set gWeakHeap to the appropriate heap you want to track.
 
 #define DEBUG_HEAP_LEAKS 0
@@ -67,11 +70,15 @@
     public:
         virtual void            disconnect();
 
+        // connect new client with existing camera remote
+        virtual status_t        connect(const sp<ICameraClient>& client);
+
         // pass the buffered ISurface to the camera service
         virtual status_t        setPreviewDisplay(const sp<ISurface>& surface);
-        
-        // tell the service whether to callback with each preview frame
-        virtual void            setHasFrameCallback(bool installed);
+
+        // set the frame callback flag to affect how the received frames from
+        // preview are handled.
+        virtual void            setFrameCallbackFlag(int frame_callback_flag);
 
         // start preview mode, must call setPreviewDisplay first
         virtual status_t        startPreview();
@@ -112,6 +119,7 @@
                     void        postRaw(const sp<IMemory>& mem);
                     void        postJpeg(const sp<IMemory>& mem);
                     void        postFrame(const sp<IMemory>& mem);
+                    void        copyFrameAndPostCopiedFrame(sp<IMemoryHeap> heap, size_t offset, size_t size);
                     void        postError(status_t error);
                     void        postAutoFocus(bool focused);
 
@@ -119,20 +127,20 @@
         mutable     Mutex                       mLock;
         // mSurfaceLock synchronizes access to mSurface between
         // setPreviewSurface() and postFrame().  Note that among
-        // the public methods, all accesses to mSurface are 
+        // the public methods, all accesses to mSurface are
         // syncrhonized by mLock.  However, postFrame() is called
-        // by the CameraHardwareInterface callback, and needs to 
+        // by the CameraHardwareInterface callback, and needs to
         // access mSurface.  It cannot hold mLock, however, because
         // stopPreview() may be holding that lock while attempting
         // top stop preview, and stopPreview itself will block waiting
-        // for a callback from CameraHardwareInterface.  If this 
+        // for a callback from CameraHardwareInterface.  If this
         // happens, it will cause a deadlock.
         mutable     Mutex                       mSurfaceLock;
         mutable     Condition                   mReady;
                     sp<CameraService>           mCameraService;
                     sp<ISurface>                mSurface;
                     sp<MemoryHeapBase>          mPreviewBuffer;
-                    bool                        mHasFrameCallback;
+                    int                         mFrameCallbackFlag;
 
                     // these are immutable once the object is created,
                     // they don't need to be protected by a lock
diff --git a/im/java/android/im/BrandingResourceIDs.java b/im/java/android/im/BrandingResourceIDs.java
new file mode 100644
index 0000000..9960722
--- /dev/null
+++ b/im/java/android/im/BrandingResourceIDs.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2008 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 android.im;
+
+/**
+ * @hide
+ * Defines the IDs of branding resources.
+ */
+public interface BrandingResourceIDs {
+    /**
+     * The logo icon of the provider which is displayed in the landing page.
+     */
+    public static final int DRAWABLE_LOGO                = 100;
+    /**
+     * The icon of online presence status.
+     */
+    public static final int DRAWABLE_PRESENCE_ONLINE     = 102;
+    /**
+     * The icon of busy presence status.
+     */
+    public static final int DRAWABLE_PRESENCE_BUSY       = 103;
+    /**
+     * The icon of away presence status.
+     */
+    public static final int DRAWABLE_PRESENCE_AWAY       = 104;
+    /**
+     * The icon of invisible presence status.
+     */
+    public static final int DRAWABLE_PRESENCE_INVISIBLE  = 105;
+    /**
+     * The icon of offline presence status.
+     */
+    public static final int DRAWABLE_PRESENCE_OFFLINE    = 106;
+    /**
+     * The label of the menu to go to the contact list screen.
+     */
+    public static final int STRING_MENU_CONTACT_LIST     = 107;
+
+}
diff --git a/im/java/android/im/IImPlugin.aidl b/im/java/android/im/IImPlugin.aidl
new file mode 100644
index 0000000..229cd0e
--- /dev/null
+++ b/im/java/android/im/IImPlugin.aidl
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2008 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 android.im;
+
+/**
+ * @hide
+ */
+interface IImPlugin {
+    /**
+     * Notify the plugin the front door activity is created. This gives the plugin a chance to
+     * start its own servics, etc.
+     */
+    void onStart();
+    
+    /**
+     * Notify the plugin the front door activity is stopping.
+     */
+    void onStop();
+
+    /**
+     * Sign in to the service for the account passed in.
+     *
+     * @param account the account id for the accont to be signed into.
+     */
+    void signIn(long account);
+
+    /**
+     * Sign out of the service for the account passed in.
+     *
+     * @param account the account id for the accont to be signed out of.
+     */
+    void signOut(long account);
+
+    /**
+     * Returns the package name used to load the resources for the given provider name.
+     *
+     * @return The package name to load the resourcs for the given provider.
+     */
+    String getResourcePackageNameForProvider(String providerName);
+
+    /**
+     * Returns a map of branding resources for the given provider. The keys are defined
+     * in {@link android.im.BrandingResourceIDs}. The values are the resource identifiers generated
+     * by the aapt tool.
+     *
+     * @return The map of branding resources for the given provider.
+     */
+    Map getResourceMapForProvider(String providerName);
+
+    /*
+     * Returns a list of supported IM providers.
+     *
+     * @return a List of supported providers.
+     */
+    List getSupportedProviders();
+}
diff --git a/im/java/android/im/ImPluginConsts.java b/im/java/android/im/ImPluginConsts.java
new file mode 100644
index 0000000..416493f
--- /dev/null
+++ b/im/java/android/im/ImPluginConsts.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 android.im;
+
+/**
+ * @hide
+ */
+public class ImPluginConsts {
+    /**
+     * The intent action name for the plugin service.
+     */
+    public static final String PLUGIN_ACTION_NAME = "android.im.plugin";
+}
\ No newline at end of file
diff --git a/include/GLES/eglnatives.h b/include/GLES/eglnatives.h
index f9e544c..1cd57d0 100644
--- a/include/GLES/eglnatives.h
+++ b/include/GLES/eglnatives.h
@@ -33,7 +33,7 @@
 typedef void*                           NativeDisplayType;
 
 /* 
- * This a conveniance function to create a NativeWindowType surface
+ * This a convenience function to create a NativeWindowType surface
  * that maps to the whole screen
  * This function is actually implemented in libui.so
  */
@@ -50,6 +50,7 @@
 {
     NATIVE_PIXEL_FORMAT_RGBA_8888   = 1,
     NATIVE_PIXEL_FORMAT_RGB_565     = 4,
+    NATIVE_PIXEL_FORMAT_BGRA_8888   = 5,
     NATIVE_PIXEL_FORMAT_RGBA_5551   = 6,
     NATIVE_PIXEL_FORMAT_RGBA_4444   = 7,
     NATIVE_PIXEL_FORMAT_YCbCr_422_SP= 0x10,
diff --git a/include/private/opengles/gl_context.h b/include/private/opengles/gl_context.h
index 67d50fd..2aa78d8 100644
--- a/include/private/opengles/gl_context.h
+++ b/include/private/opengles/gl_context.h
@@ -532,6 +532,10 @@
             vertex_t const* v1,
             vertex_t const* v2);
 
+    void initLine(
+            vertex_t const* v0,
+            vertex_t const* v1);
+
     inline void initLerp(vertex_t const* v0, uint32_t enables);
 
     int iteratorsScale(int32_t it[3],
@@ -543,6 +547,9 @@
     void iterators0032(int32_t it[3],
             int32_t c0, int32_t c1, int32_t c2) const;
 
+    void iterators0032(int64_t it[3],
+            int32_t c0, int32_t c1, int32_t c2) const;
+
     GGLcoord area() const { return m_area; }
 
 private:
diff --git a/include/ui/BlitHardware.h b/include/ui/BlitHardware.h
deleted file mode 100644
index 4de1c12..0000000
--- a/include/ui/BlitHardware.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (C) 2008 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.
- */
-
-#ifndef ANDROID_BLIT_HARDWARE_H
-#define ANDROID_BLIT_HARDWARE_H
-
-#include <stdint.h>
-#include <sys/types.h>
-
-#if __cplusplus
-extern "C" {
-#endif
-
-/******************************************************************************/
-
-/* supported pixel-formats. these must be compatible with
- * graphics/PixelFormat.java, ui/PixelFormat.h, pixelflinger/format.h
- */
-
-enum
-{
-    COPYBIT_RGBA_8888    = 1,
-    COPYBIT_RGB_565      = 4,
-    COPYBIT_RGBA_5551    = 6,
-    COPYBIT_RGBA_4444    = 7,
-    COPYBIT_YCbCr_422_SP = 0x10,
-    COPYBIT_YCbCr_420_SP = 0x11
-};
-
-/* name for copybit_set_parameter */
-enum 
-{
-    /* rotation of the source image in degrees (0 to 359) */
-    COPYBIT_ROTATION_DEG    = 1,
-    /* plane alpha value */
-    COPYBIT_PLANE_ALPHA     = 2,
-    /* enable or disable dithering */
-    COPYBIT_DITHER          = 3,
-    /* transformation applied (this is a superset of COPYBIT_ROTATION_DEG) */
-    COPYBIT_TRANSFORM       = 4,
-};
-
-/* values for copybit_set_parameter(COPYBIT_TRANSFORM) */
-enum {
-    /* flip source image horizontally */
-    COPYBIT_TRANSFORM_FLIP_H    = 0x01,
-    /* flip source image vertically */
-    COPYBIT_TRANSFORM_FLIP_V    = 0x02,
-    /* rotate source image 90 degres */
-    COPYBIT_TRANSFORM_ROT_90    = 0x04,
-    /* rotate source image 180 degres */
-    COPYBIT_TRANSFORM_ROT_180   = 0x03,
-    /* rotate source image 270 degres */
-    COPYBIT_TRANSFORM_ROT_270   = 0x07,
-};
-
-/* enable/disable value copybit_set_parameter */
-enum {
-    COPYBIT_DISABLE = 0,
-    COPYBIT_ENABLE  = 1
-};
-
-/* use get() to query static informations about the hardware */
-enum {
-    /* Maximum amount of minification supported by the hardware*/
-    COPYBIT_MINIFICATION_LIMIT  = 1,
-    /* Maximum amount of magnification supported by the hardware */
-    COPYBIT_MAGNIFICATION_LIMIT = 2,
-    /* Number of fractional bits support by the scaling engine */
-    COPYBIT_SCALING_FRAC_BITS   = 3,
-    /* Supported rotation step in degres. */
-    COPYBIT_ROTATION_STEP_DEG   = 4,
-};
-
-struct copybit_image_t {
-    uint32_t    w;
-    uint32_t    h;
-    int32_t     format;
-    uint32_t    offset;
-    void*       base;
-    int         fd;
-};
-
-
-struct copybit_rect_t {
-    int l;
-    int t;
-    int r;
-    int b;
-};
-
-struct copybit_region_t {
-    int (*next)(copybit_region_t const*, copybit_rect_t* rect); 
-};
-
-struct copybit_t
-{
-    int (*set_parameter)(struct copybit_t* handle, int name, int value);
-
-    int (*get)(struct copybit_t* handle, int name);
-    
-    int (*blit)(
-            struct copybit_t* handle, 
-            struct copybit_image_t const* dst, 
-            struct copybit_image_t const* src,
-            struct copybit_region_t const* region);
-
-    int (*stretch)(
-            struct copybit_t* handle, 
-            struct copybit_image_t const* dst, 
-            struct copybit_image_t const* src, 
-            struct copybit_rect_t const* dst_rect,
-            struct copybit_rect_t const* src_rect,
-            struct copybit_region_t const* region);
-};
-
-/******************************************************************************/
-
-struct copybit_t* copybit_init();
-
-int copybit_term(struct copybit_t* handle);
-
-
-/******************************************************************************/
-
-#if __cplusplus
-} // extern "C"
-#endif
-
-#endif // ANDROID_BLIT_HARDWARE_H
diff --git a/include/ui/Camera.h b/include/ui/Camera.h
index 562a0a2..124f07f 100644
--- a/include/ui/Camera.h
+++ b/include/ui/Camera.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2008 HTC Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,6 +22,39 @@
 
 namespace android {
 
+/*
+ * A set of bit masks for specifying how the received frames from preview are
+ * handled before the frame callback call.
+ *
+ * The least significant 3 bits of an "int" value are used for this purpose:
+ *
+ * ..... 0 0 0
+ *       ^ ^ ^
+ *       | | |---------> determine whether the callback is enabled or not
+ *       | |-----------> determine whether the callback is one-shot or not
+ *       |-------------> determine whether the frame is copied out or not
+ *
+ * For instance,
+ * 1. 0x00 disables the callback. In this case, copy out and one shot bits
+ *    are ignored.
+ * 2. 0x01 enables a callback without copying out the recievied frames. A
+ *    typical use case is the Camcorder application to avoid making costly
+ *    frame copies.
+ * 3. 0x05 is enabling a callback with frame copied out repeatedly. A typical
+ *    use case is the Camera application.
+ * 4. 0x07 is enabling a callback with frame copied out only once. A typical use
+ *    case is the Barcode scanner application.
+ */
+#define FRAME_CALLBACK_FLAG_ENABLE_MASK              0x01
+#define FRAME_CALLBACK_FLAG_ONE_SHOT_MASK            0x02
+#define FRAME_CALLBACK_FLAG_COPY_OUT_MASK            0x04
+
+// Typical use cases
+#define FRAME_CALLBACK_FLAG_NOOP                     0x00
+#define FRAME_CALLBACK_FLAG_CAMCORDER                0x01
+#define FRAME_CALLBACK_FLAG_CAMERA                   0x05
+#define FRAME_CALLBACK_FLAG_BARCODE_SCANNER          0x07
+
 class ICameraService;
 class ICamera;
 class Surface;
@@ -35,15 +69,21 @@
 class Camera : public BnCameraClient, public IBinder::DeathRecipient
 {
 public:
+            // construct a camera client from an existing remote
+            Camera(const sp<ICamera>& camera);
+
     static  sp<Camera>  connect();
                         ~Camera();
+            void        init();
 
+            status_t    reconnect();
             void        disconnect();
 
             status_t    getStatus() { return mStatus; }
 
             // pass the buffered ISurface to the camera service
             status_t    setPreviewDisplay(const sp<Surface>& surface);
+            status_t    setPreviewDisplay(const sp<ISurface>& surface);
 
             // start preview mode, must call setPreviewDisplay first
             status_t    startPreview();
@@ -66,7 +106,11 @@
             void        setShutterCallback(shutter_callback cb, void *cookie);
             void        setRawCallback(frame_callback cb, void *cookie);
             void        setJpegCallback(frame_callback cb, void *cookie);
-            void        setFrameCallback(frame_callback cb, void *cookie);
+
+            void        setFrameCallback(frame_callback cb,
+                            void *cookie,
+                            int frame_callback_flag = FRAME_CALLBACK_FLAG_NOOP);
+
             void        setErrorCallback(error_callback cb, void *cookie);
             void        setAutoFocusCallback(autofocus_callback cb, void *cookie);
     // ICameraClient interface
@@ -77,7 +121,8 @@
     virtual void        errorCallback(status_t error);
     virtual void        autoFocusCallback(bool focused);
 
-    
+    sp<ICamera>         remote();
+
 private:
                         Camera();
                         virtual void binderDied(const wp<IBinder>& who);
@@ -85,14 +130,14 @@
             class DeathNotifier: public IBinder::DeathRecipient
             {
             public:
-                DeathNotifier() {      
+                DeathNotifier() {
                 }
-                
+
                 virtual void binderDied(const wp<IBinder>& who);
             };
-        
+
             static sp<DeathNotifier> mDeathNotifier;
-        
+
             // helper function to obtain camera service handle
             static const sp<ICameraService>& getCameraService();
 
@@ -111,12 +156,12 @@
             void                *mErrorCallbackCookie;
             autofocus_callback  mAutoFocusCallback;
             void                *mAutoFocusCallbackCookie;
-            
+
             friend class DeathNotifier;
 
             static  Mutex               mLock;
             static  sp<ICameraService>  mCameraService;
-            
+
 };
 
 }; // namespace android
diff --git a/include/ui/CameraHardwareInterface.h b/include/ui/CameraHardwareInterface.h
index 5fa933f..14ac96e 100644
--- a/include/ui/CameraHardwareInterface.h
+++ b/include/ui/CameraHardwareInterface.h
@@ -39,48 +39,42 @@
 typedef void (*autofocus_callback)(bool focused, void* user);
 
 /**
- * This defines the interface to the camera hardware abstraction
- * layer. It supports setting and getting parameters, live
- * previewing and taking pictures. It is a referenced counted
- * interface with RefBase as its base class.
+ * CameraHardwareInterface.h defines the interface to the
+ * camera hardware abstraction layer, used for setting and getting
+ * parameters, live previewing, and taking pictures.
  *
- * The openCameraHardware function is used to
- * retrieve a strong pointer to the instance of this interface
- * and may be called multiple times.
+ * It is a referenced counted interface with RefBase as its base class.
+ * CameraService calls openCameraHardware() to retrieve a strong pointer to the
+ * instance of this interface and may be called multiple times. The
+ * following steps describe a typical sequence:
  *
- * After calling openCameraHardware the getParameters and
- * setParameters are used to initialize the camera instance.
+ *   -# After CameraService calls openCameraHardware(), getParameters() and
+ *      setParameters() are used to initialize the camera instance.
+ *      CameraService calls getPreviewHeap() to establish access to the
+ *      preview heap so it can be registered with SurfaceFlinger for
+ *      efficient display updating while in preview mode.
+ *   -# startPreview() is called, which is passed a preview_callback()
+ *      function and a user parameter. The camera instance then periodically
+ *      calls preview_callback() each time a new preview frame is available.
+ *      The callback routine has two parameters: the first is a pointer to
+ *      the IMemory containing the frame and the second a user parameter. If
+ *      the preview_callback code needs to use this memory after returning,
+ *      it must copy the data.
  *
- * Then getPreviewHeap is called to get access to the preview
- * heap so it can be registered with the SurfaceFlinger for efficient
- * display updating while in the preview mode.
+ * Prior to taking a picture, CameraService calls autofocus() with
+ * autofocus_callback() and a user parameter. When auto focusing has
+ * completed, the camera instance calls autofocus_callback(), which informs
+ * the application whether focusing was successful. The camera instance
+ * only calls autofocus_callback() once and it is up to the application to
+ * call autoFocus() again if refocusing is desired.
  *
- * Next startPreview is called which is passed a preview_callback
- * function and a user parameter. The camera instance then
- * periodically calls preview_callback each time a new
- * preview frame is available. The call back routine has
- * two parameters, the first is a pointer to the the IMemory containing
- * the frame and the other is the user parameter. If the preview_callback
- * code needs to use this memory after returning it must copy
- * the data.
- *
- * Prior to taking a picture the autoFocus method is usually called with a
- * autofocus_callback and a user parameter. When auto focusing
- * has completed the camera instance calls autofocus_callback which
- * informs the application if focusing was successful or not.
- * The camera instance only calls the autofocus_callback once and it
- * is up to the application to call autoFocus again if refocusing is desired.
- *
- * The method takePicture is called to request that the camera instance take a
- * picture. This method has three callbacks: shutter_callback, raw_callback,
- * and jpeg_callback. As soon as the shutter snaps and it is safe to move the
- * camera, shutter_callback is called.  Typically, you would want to play the
- * shutter sound at this moment. Later, when the raw image is available the
- * raw_callback is called with a pointer to the IMemory containing the raw
- * image.  Finally, when the encoded jpeg image is available the jpeg_callback
- * will be called with a pointer to the IMemory containing the jpeg image.  As
- * with the preview_callback the memory must be copied if it's needed after
- * returning.
+ * CameraService calls takePicture() to request the camera instance take a
+ * picture. This method has two callbacks: raw_callback() and jpeg_callback().
+ * When the raw image is available, raw_callback() is called with a pointer
+ * to the IMemory containing the raw image. When the jpeg image is available,
+ * jpeg_callback() is called with a pointer to the IMemory containing the
+ * jpeg image. As with preview_callback(), the memory must be copied if it's
+ * needed after returning.
  */
 class CameraHardwareInterface : public virtual RefBase {
 public:
@@ -104,7 +98,7 @@
     /**
      * Start auto focus, the callback routine is called
      * once when focusing is complete. autoFocus() will
-     * be called agained if another auto focus is needed.
+     * be called again if another auto focus is needed.
      */
     virtual status_t    autoFocus(autofocus_callback,
                                   void* user) = 0;
diff --git a/include/ui/EGLDisplaySurface.h b/include/ui/EGLDisplaySurface.h
index a9cfd5a..0190e09 100644
--- a/include/ui/EGLDisplaySurface.h
+++ b/include/ui/EGLDisplaySurface.h
@@ -23,11 +23,12 @@
 #include <utils/Timers.h>
 
 #include <ui/EGLNativeSurface.h>
-#include <ui/BlitHardware.h>
 
 #include <pixelflinger/pixelflinger.h>
 #include <linux/fb.h>
 
+struct copybit_device_t;
+
 // ---------------------------------------------------------------------------
 namespace android {
 // ---------------------------------------------------------------------------
@@ -71,7 +72,7 @@
     int32_t             mSwapCount;
     nsecs_t             mSleep;
     uint32_t            mFeatureFlags;
-    copybit_t*          mBlitEngine;
+    copybit_device_t*   mBlitEngine;
 };
 
 // ---------------------------------------------------------------------------
diff --git a/include/ui/ICamera.h b/include/ui/ICamera.h
index 6aa3940..99c0d86 100644
--- a/include/ui/ICamera.h
+++ b/include/ui/ICamera.h
@@ -20,13 +20,15 @@
 #include <utils/RefBase.h>
 #include <utils/IInterface.h>
 #include <utils/Parcel.h>
-
 #include <ui/ISurface.h>
 #include <utils/IMemory.h>
 #include <utils/String8.h>
+#include <ui/Camera.h>
 
 namespace android {
 
+class ICameraClient;
+
 class ICamera: public IInterface
 {
 public:
@@ -34,11 +36,15 @@
 
     virtual void            disconnect() = 0;
 
+    // connect new client with existing camera remote
+    virtual status_t        connect(const sp<ICameraClient>& client) = 0;
+
     // pass the buffered ISurface to the camera service
     virtual status_t        setPreviewDisplay(const sp<ISurface>& surface) = 0;
-    
-    // tell the service whether to callback with each preview frame
-    virtual void            setHasFrameCallback(bool installed) = 0;
+
+    // set the frame callback flag to affect how the received frames from
+    // preview are handled.
+    virtual void            setFrameCallbackFlag(int frame_callback_flag) = 0;
 
     // start preview mode, must call setPreviewDisplay first
     virtual status_t        startPreview() = 0;
diff --git a/include/ui/IOverlay.h b/include/ui/IOverlay.h
new file mode 100644
index 0000000..323ff07
--- /dev/null
+++ b/include/ui/IOverlay.h
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2007 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.
+ */
+
+#ifndef ANDROID_IOVERLAY_H
+#define ANDROID_IOVERLAY_H
+
+#include <stdint.h>
+#include <sys/types.h>
+
+#include <utils/Errors.h>
+#include <utils/IInterface.h>
+#include <utils/RefBase.h>
+#include <ui/PixelFormat.h>
+
+namespace android {
+
+class IOverlay : public IInterface
+{
+public: 
+    DECLARE_META_INTERFACE(Overlay);
+
+    virtual void destroy() = 0; // one-way
+    
+    virtual ssize_t swapBuffers() = 0;
+};
+
+// ----------------------------------------------------------------------------
+
+class BnOverlay : public BnInterface<IOverlay>
+{
+public:
+    virtual status_t    onTransact( uint32_t code,
+                                    const Parcel& data,
+                                    Parcel* reply,
+                                    uint32_t flags = 0);
+};
+
+// ----------------------------------------------------------------------------
+
+}; // namespace android
+
+#endif // ANDROID_IOVERLAY_H
diff --git a/include/ui/ISurface.h b/include/ui/ISurface.h
index ca691f5..ff031d5 100644
--- a/include/ui/ISurface.h
+++ b/include/ui/ISurface.h
@@ -30,6 +30,7 @@
 typedef int32_t    SurfaceID;
 
 class IMemoryHeap;
+class Overlay;
 
 class ISurface : public IInterface
 {
@@ -42,6 +43,9 @@
     virtual void postBuffer(ssize_t offset) = 0; // one-way
 
     virtual void unregisterBuffers() = 0;
+    
+    virtual sp<Overlay> createOverlay(
+            uint32_t w, uint32_t h, int32_t format) = 0;
 };
 
 // ----------------------------------------------------------------------------
diff --git a/include/ui/ISurfaceFlingerClient.h b/include/ui/ISurfaceFlingerClient.h
index bb2d39f..5b9361d 100644
--- a/include/ui/ISurfaceFlingerClient.h
+++ b/include/ui/ISurfaceFlingerClient.h
@@ -52,7 +52,6 @@
     struct surface_data_t {
         int32_t             token;
         int32_t             identity;
-        int32_t             type;
         sp<IMemoryHeap>     heap[2];
         status_t readFromParcel(const Parcel& parcel);
         status_t writeToParcel(Parcel* parcel) const;
diff --git a/include/ui/KeycodeLabels.h b/include/ui/KeycodeLabels.h
index 747925d..53c1188 100644
--- a/include/ui/KeycodeLabels.h
+++ b/include/ui/KeycodeLabels.h
@@ -107,12 +107,18 @@
     { "MENU", 82 },
     { "NOTIFICATION", 83 },
     { "SEARCH", 84 },
+    { "PLAYPAUSE", 85 },
+    { "STOP", 86 },
+    { "NEXTSONG", 87 },
+    { "PREVIOUSSONG", 88 },
+    { "REWIND", 89 },
+    { "FORWARD", 90 },
 
     // NOTE: If you add a new keycode here you must also add it to:
     //   (enum KeyCode, in this file)
-    //   java/android/android/view/KeyEvent.java
+    //   frameworks/base/core/java/android/view/KeyEvent.java
     //   tools/puppet_master/PuppetMaster.nav_keys.py
-    //   apps/common/res/values/attrs.xml
+    //   frameworks/base/core/res/res/values/attrs.xml
 
     { NULL, 0 }
 };
@@ -204,7 +210,13 @@
     kKeyCodePlus = 81,
     kKeyCodeMenu = 82,
     kKeyCodeNotification = 83,
-    kKeyCodeSearch = 84
+    kKeyCodeSearch = 84,
+    kKeyCodePlayPause = 85,
+    kKeyCodeStop = 86,
+    kKeyCodeNextSong = 87,
+    kKeyCodePreviousSong = 88,
+    kKeyCodeRewind = 89,
+    kKeyCodeForward = 90
 } KeyCode;
 
 static const KeycodeLabel FLAGS[] = {
diff --git a/include/ui/Overlay.h b/include/ui/Overlay.h
new file mode 100644
index 0000000..f24780f
--- /dev/null
+++ b/include/ui/Overlay.h
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2007 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.
+ */
+
+#ifndef ANDROID_OVERLAY_H
+#define ANDROID_OVERLAY_H
+
+#include <stdint.h>
+#include <sys/types.h>
+
+#include <utils/Errors.h>
+#include <utils/IInterface.h>
+#include <utils/RefBase.h>
+#include <ui/PixelFormat.h>
+
+#include <hardware/overlay.h>
+
+namespace android {
+
+class IOverlay;
+class IMemory;
+class IMemoryHeap;
+
+class Overlay : public virtual RefBase
+{
+public:
+    Overlay(overlay_t* overlay, 
+            const sp<IOverlay>& o, const sp<IMemoryHeap>& heap);
+
+    /* destroys this overlay */
+    void destroy();
+    
+    /* post/swaps buffers */
+    status_t swapBuffers();
+    
+    /* get the HAL handle for this overlay */
+    overlay_handle_t const* getHandleRef() const;
+    
+    /* returns the offset of the current buffer */
+    size_t getBufferOffset() const;
+    
+    /* returns a heap to this overlay. this may not be supported. */
+    sp<IMemoryHeap> getHeap() const;
+    
+    /* get physical informations about the overlay */
+    uint32_t getWidth() const;
+    uint32_t getHeight() const;
+    int32_t getFormat() const;
+    int32_t getWidthStride() const;
+    int32_t getHeightStride() const;
+
+    static sp<Overlay> readFromParcel(const Parcel& data);
+    static status_t writeToParcel(Parcel* reply, const sp<Overlay>& o);
+
+private:
+    Overlay(overlay_handle_t*, const sp<IOverlay>&, const sp<IMemoryHeap>&,  
+            uint32_t w, uint32_t h, int32_t f, uint32_t ws, uint32_t hs);
+
+    virtual ~Overlay();
+
+    sp<IOverlay>        mOverlay;
+    sp<IMemoryHeap>     mHeap;
+    size_t              mCurrentBufferOffset;
+    overlay_handle_t const *mOverlayHandle;
+    uint32_t            mWidth;
+    uint32_t            mHeight;
+    int32_t             mFormat;
+    int32_t             mWidthStride;
+    int32_t             mHeightStride;
+};
+
+// ----------------------------------------------------------------------------
+
+}; // namespace android
+
+#endif // ANDROID_OVERLAY_H
diff --git a/include/ui/PixelFormat.h b/include/ui/PixelFormat.h
index d56a4a7..c61df32 100644
--- a/include/ui/PixelFormat.h
+++ b/include/ui/PixelFormat.h
@@ -61,6 +61,7 @@
     PIXEL_FORMAT_RGBX_8888   = GGL_PIXEL_FORMAT_RGBX_8888,  // 4x8-bit RGB0
     PIXEL_FORMAT_RGB_888     = GGL_PIXEL_FORMAT_RGB_888,    // 3x8-bit RGB
     PIXEL_FORMAT_RGB_565     = GGL_PIXEL_FORMAT_RGB_565,    // 16-bit RGB
+    PIXEL_FORMAT_BGRA_8888   = GGL_PIXEL_FORMAT_BGRA_8888,  // 4x8-bit BGRA
     PIXEL_FORMAT_RGBA_5551   = GGL_PIXEL_FORMAT_RGBA_5551,  // 16-bit ARGB
     PIXEL_FORMAT_RGBA_4444   = GGL_PIXEL_FORMAT_RGBA_4444,  // 16-bit ARGB
     PIXEL_FORMAT_A_8         = GGL_PIXEL_FORMAT_A_8,        // 8-bit A
diff --git a/include/ui/Region.h b/include/ui/Region.h
index a86e630..a0c4608 100644
--- a/include/ui/Region.h
+++ b/include/ui/Region.h
@@ -24,7 +24,8 @@
 #include <utils/Parcel.h>
 
 #include <ui/Rect.h>
-#include <ui/BlitHardware.h>
+
+#include <hardware/copybit.h>
 
 #include <corecg/SkRegion.h>
 
@@ -166,7 +167,6 @@
     }
     mutable Region::iterator i;
 };
-
 // ---------------------------------------------------------------------------
 }; // namespace android
 
diff --git a/include/ui/Surface.h b/include/ui/Surface.h
index 0a75bf3..2e24f86 100644
--- a/include/ui/Surface.h
+++ b/include/ui/Surface.h
@@ -48,7 +48,7 @@
         void*       base;
         uint32_t    reserved[2];
     };
-    
+
     bool        isValid() const { return this && mToken>=0 && mClient!=0; }
     SurfaceID   ID() const      { return mToken; }
 
@@ -59,18 +59,17 @@
 
     void*       heapBase(int i) const;
     uint32_t    getFlags() const { return mFlags; }
-    int         getMemoryType() const { return mMemoryType; }
-    
+
     // setSwapRectangle() is mainly used by EGL
     void        setSwapRectangle(const Rect& r);
     const Rect& swapRectangle() const;
     status_t    nextBuffer(SurfaceInfo* info);
-    
+
     sp<Surface>         dup() const;
     static sp<Surface>  readFromParcel(Parcel* parcel);
     static status_t     writeToParcel(const sp<Surface>& surface, Parcel* parcel);
     static bool         isSameSurface(const sp<Surface>& lhs, const sp<Surface>& rhs);
-    
+
     status_t    setLayer(int32_t layer);
     status_t    setPosition(int32_t x, int32_t y);
     status_t    setSize(uint32_t w, uint32_t h);
@@ -83,13 +82,14 @@
     status_t    setAlpha(float alpha=1.0f);
     status_t    setMatrix(float dsdx, float dtdx, float dsdy, float dtdy);
     status_t    setFreezeTint(uint32_t tint);
-    
+
     uint32_t    getIdentity() const { return mIdentity; }
 private:
     friend class SurfaceComposerClient;
 
-    // camera needs access to the ISurface binder interface for preview
+    // camera and camcorder need access to the ISurface binder interface for preview
     friend class Camera;
+    friend class MediaRecorder;
     // mediaplayer needs access to ISurface for display
     friend class MediaPlayer;
     const sp<ISurface>& getISurface() const { return mSurface; }
@@ -98,19 +98,19 @@
     Surface& operator = (Surface& rhs);
     Surface(const Surface& rhs);
 
-    Surface(const sp<SurfaceComposerClient>& client, 
+    Surface(const sp<SurfaceComposerClient>& client,
             const sp<ISurface>& surface,
             const ISurfaceFlingerClient::surface_data_t& data,
             uint32_t w, uint32_t h, PixelFormat format, uint32_t flags,
             bool owner = true);
-    
+
     Surface(Surface const* rhs);
 
     ~Surface();
 
     Region dirtyRegion() const;
     void setDirtyRegion(const Region& region) const;
-    
+
     // this locks protects calls to lockSurface() / unlockSurface()
     // and is called by SurfaceComposerClient.
     Mutex& getLock() const { return mSurfaceLock; }
@@ -118,7 +118,6 @@
     sp<SurfaceComposerClient>   mClient;
     sp<ISurface>                mSurface;
     sp<IMemoryHeap>             mHeap[2];
-    int                         mMemoryType;
     SurfaceID                   mToken;
     uint32_t                    mIdentity;
     PixelFormat                 mFormat;
diff --git a/include/utils/IPCThreadState.h b/include/utils/IPCThreadState.h
index 47043b8..0490fd3 100644
--- a/include/utils/IPCThreadState.h
+++ b/include/utils/IPCThreadState.h
@@ -20,6 +20,7 @@
 #include <utils/Errors.h>
 #include <utils/Parcel.h>
 #include <utils/ProcessState.h>
+#include <utils/Vector.h>
 
 #ifdef HAVE_WIN32_PROC
 typedef  int  uid_t;
@@ -92,6 +93,8 @@
                                            void* cookie);
     
     const   sp<ProcessState>    mProcess;
+            Vector<BBinder*>    mPendingStrongDerefs;
+            Vector<RefBase::weakref_type*> mPendingWeakDerefs;
                                 
             Parcel              mIn;
             Parcel              mOut;
diff --git a/include/utils/MemoryHeapPmem.h b/include/utils/MemoryHeapPmem.h
index b694b20..60335ad 100644
--- a/include/utils/MemoryHeapPmem.h
+++ b/include/utils/MemoryHeapPmem.h
@@ -23,7 +23,7 @@
 #include <utils/MemoryDealer.h>
 #include <utils/MemoryHeapBase.h>
 #include <utils/IMemory.h>
-#include <utils/Vector.h>
+#include <utils/SortedVector.h>
 
 namespace android {
 
@@ -31,11 +31,21 @@
 
 // ---------------------------------------------------------------------------
 
-class SubRegionMemory;
-
 class MemoryHeapPmem : public HeapInterface, public MemoryHeapBase
 {
 public:
+    class MemoryPmem : public BnMemory {
+    public:
+        MemoryPmem(const sp<MemoryHeapPmem>& heap);
+        ~MemoryPmem();
+    protected:
+        const sp<MemoryHeapPmem>&  getHeap() const { return mClientHeap; }
+    private:
+        friend class MemoryHeapPmem;
+        virtual void revoke() = 0;
+        sp<MemoryHeapPmem>  mClientHeap;
+    };
+    
     MemoryHeapPmem(const sp<MemoryHeapBase>& pmemHeap,
                 uint32_t flags = IMemoryHeap::MAP_ONCE);
     ~MemoryHeapPmem();
@@ -51,11 +61,16 @@
     
     /* revoke all allocations made by this heap */
     virtual void revoke();
-    
+
+private:
+    /* use this to create your own IMemory for mapMemory */
+    virtual sp<MemoryPmem> createMemory(size_t offset, size_t size);
+    void remove(const wp<MemoryPmem>& memory);
+
 private:
     sp<MemoryHeapBase>              mParentHeap;
     mutable Mutex                   mLock;
-    Vector< wp<SubRegionMemory> >   mAllocations;
+    SortedVector< wp<MemoryPmem> >  mAllocations;
 };
 
 
diff --git a/include/utils/ResourceTypes.h b/include/utils/ResourceTypes.h
index 31b9aa8..2d56e3e 100644
--- a/include/utils/ResourceTypes.h
+++ b/include/utils/ResourceTypes.h
@@ -140,8 +140,6 @@
     void serialize(void* outData);
     // Deserialize/Unmarshall the patch data
     static Res_png_9patch* deserialize(const void* data);
-    // Deserialize/Unmarshall the patch data into a newly malloc-ed block
-    static void deserialize(const void* data, Res_png_9patch* outData);
     // Compute the size of the serialized data structure
     size_t serializedSize();
 };
@@ -860,6 +858,7 @@
         KEYSHIDDEN_ANY = 0x0000,
         KEYSHIDDEN_NO = 0x0001,
         KEYSHIDDEN_YES = 0x0002,
+        KEYSHIDDEN_SOFT = 0x0003,
     };
     
     union {
@@ -989,11 +988,20 @@
         return diffs;
     }
     
-    // Return true if 'this' is more specific than 'o'.
+    // Return true if 'this' is more specific than 'o'.  Optionally, if
+    // 'requested' is null, then they will also be compared against the
+    // requested configuration and true will only be returned if 'this'
+    // is a better candidate than 'o' for the configuration.  This assumes that
+    // match() has already been used to remove any configurations that don't
+    // match the requested configuration at all; if they are not first filtered,
+    // non-matching results can be considered better than matching ones.
     inline bool
     isBetterThan(const ResTable_config& o, const ResTable_config* requested = NULL) const {
+        // The order of the following tests defines the importance of one
+        // configuration parameter over another.  Those tests first are more
+        // important, trumping any values in those following them.
         if (imsi != 0 && (!requested || requested->imsi != 0)) {
-            if (mcc != 0 && (!requested || requested->mcc!= 0)) {
+            if (mcc != 0 && (!requested || requested->mcc != 0)) {
                 if (o.mcc == 0) {
                     return true;
                 }
@@ -1034,9 +1042,24 @@
             }
         }
         if (input != 0 && (!requested || requested->input != 0)) {
-            if ((inputFlags&MASK_KEYSHIDDEN) != 0 && (!requested
-                                                      || (requested->inputFlags&MASK_KEYSHIDDEN) != 0)) {
-                if ((o.inputFlags&MASK_KEYSHIDDEN) == 0) {
+            const int keysHidden = inputFlags&MASK_KEYSHIDDEN;
+            const int reqKeysHidden = requested
+                    ? requested->inputFlags&MASK_KEYSHIDDEN : 0;
+            if (keysHidden != 0 && reqKeysHidden != 0) {
+                const int oKeysHidden = o.inputFlags&MASK_KEYSHIDDEN;
+                //LOGI("isBetterThan keysHidden: cur=%d, given=%d, config=%d\n",
+                //        keysHidden, oKeysHidden, reqKeysHidden);
+                if (oKeysHidden == 0) {
+                    //LOGI("Better because 0!");
+                    return true;
+                }
+                // For compatibility, we count KEYSHIDDEN_NO as being
+                // the same as KEYSHIDDEN_SOFT.  Here we disambiguate these
+                // may making an exact match more specific.
+                if (keysHidden == reqKeysHidden && oKeysHidden != reqKeysHidden) {
+                    // The current configuration is an exact match, and
+                    // the given one is not, so the current one is better.
+                    //LOGI("Better because other not same!");
                     return true;
                 }
             }
@@ -1078,7 +1101,8 @@
         return false;
     }
     
-    // Return true if 'this' matches the parameters in 'settings'.
+    // Return true if 'this' can be considered a match for the parameters in
+    // 'settings'.
     inline bool match(const ResTable_config& settings) const {
         if (imsi != 0) {
             if (settings.mcc != 0 && mcc != 0
@@ -1121,7 +1145,14 @@
             const int setKeysHidden = settings.inputFlags&MASK_KEYSHIDDEN;
             if (setKeysHidden != 0 && keysHidden != 0
                 && keysHidden != setKeysHidden) {
-                return false;
+                // For compatibility, we count a request for KEYSHIDDEN_NO as also
+                // matching the more recent KEYSHIDDEN_SOFT.  Basically
+                // KEYSHIDDEN_NO means there is some kind of keyboard available.
+                //LOGI("Matching keysHidden: have=%d, config=%d\n", keysHidden, setKeysHidden);
+                if (keysHidden != KEYSHIDDEN_NO || setKeysHidden != KEYSHIDDEN_SOFT) {
+                    //LOGI("No match!");
+                    return false;
+                }
             }
             if (settings.keyboard != 0 && keyboard != 0
                 && keyboard != settings.keyboard) {
diff --git a/include/utils/TimeUtils.h b/include/utils/TimeUtils.h
index 30e5330..b19e021 100644
--- a/include/utils/TimeUtils.h
+++ b/include/utils/TimeUtils.h
@@ -17,10 +17,11 @@
 #ifndef ANDROID_TIME_H
 #define ANDROID_TIME_H
 
+#include <time.h>
+#include <cutils/tztime.h>
 #include <stdint.h>
 #include <sys/types.h>
 #include <sys/time.h>
-#include <time.h>
 #include <utils/String8.h>
 #include <utils/String16.h>
 
@@ -58,7 +59,7 @@
     Time();
 
     void switchTimezone(const char *timezone);
-    String8 format(const char *format) const;
+    String8 format(const char *format, const struct strftime_locale *locale) const;
     void format2445(short* buf, bool hasTime) const;
     String8 toString() const;
     void setToNow();
diff --git a/include/utils/string_array.h b/include/utils/string_array.h
index ede0644..064dda2 100644
--- a/include/utils/string_array.h
+++ b/include/utils/string_array.h
@@ -111,6 +111,19 @@
         return mArray[idx];
     }
 
+    //
+    // Set entry N to specified string.
+    // [should use operator[] here]
+    //
+    void setEntry(int idx, const char* str) {
+        if (idx < 0 || idx >= mCurrent)
+            return;
+        delete[] mArray[idx];
+        int len = strlen(str);
+        mArray[idx] = new char[len+1];
+        memcpy(mArray[idx], str, len+1);
+    }
+
 private:
     int     mMax;
     int     mCurrent;
diff --git a/libs/audioflinger/A2dpAudioInterface.cpp b/libs/audioflinger/A2dpAudioInterface.cpp
new file mode 100644
index 0000000..d54795c
--- /dev/null
+++ b/libs/audioflinger/A2dpAudioInterface.cpp
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) 2008 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.
+ */
+
+#include <math.h>
+
+#define LOG_NDEBUG 0
+#define LOG_TAG "A2dpAudioInterface"
+#include <utils/Log.h>
+#include <utils/String8.h>
+
+#include "A2dpAudioInterface.h"
+#include "audio/liba2dp.h"
+
+
+namespace android {
+
+// ----------------------------------------------------------------------------
+
+A2dpAudioInterface::A2dpAudioInterface() :
+    mOutput(0)
+{
+}
+
+A2dpAudioInterface::~A2dpAudioInterface()
+{
+    delete mOutput;
+}
+
+status_t A2dpAudioInterface::initCheck()
+{
+    return 0;
+}
+
+AudioStreamOut* A2dpAudioInterface::openOutputStream(
+        int format, int channelCount, uint32_t sampleRate, status_t *status)
+{
+    LOGD("A2dpAudioInterface::openOutputStream %d, %d, %d\n", format, channelCount, sampleRate);
+    Mutex::Autolock lock(mLock);
+    status_t err = 0;
+
+    // only one output stream allowed
+    if (mOutput) {
+        if (status)
+            *status = -1;
+        return NULL;
+    }
+
+    // create new output stream
+    A2dpAudioStreamOut* out = new A2dpAudioStreamOut();
+    if ((err = out->set(format, channelCount, sampleRate)) == NO_ERROR) {
+        mOutput = out;
+    } else {
+        delete out;
+    }
+    
+    if (status)
+        *status = err;
+    return mOutput;
+}
+
+AudioStreamIn* A2dpAudioInterface::openInputStream(
+        int format, int channelCount, uint32_t sampleRate, status_t *status)
+{
+    if (status)
+        *status = -1;
+    return NULL;
+}
+
+status_t A2dpAudioInterface::standby()
+{
+    return 0;
+}
+
+status_t A2dpAudioInterface::setMicMute(bool state)
+{
+    return 0;
+}
+
+status_t A2dpAudioInterface::getMicMute(bool* state)
+{
+    return 0;
+}
+
+status_t A2dpAudioInterface::setParameter(const char *key, const char *value)
+{
+    LOGD("setParameter %s,%s\n", key, value);
+    return 0;
+}
+
+status_t A2dpAudioInterface::setVoiceVolume(float v)
+{
+    return 0;
+}
+
+status_t A2dpAudioInterface::setMasterVolume(float v)
+{
+    return 0;
+}
+
+status_t A2dpAudioInterface::doRouting()
+{
+    return 0;
+}
+
+status_t A2dpAudioInterface::dump(int fd, const Vector<String16>& args)
+{
+    return 0;
+}
+
+// ----------------------------------------------------------------------------
+
+A2dpAudioInterface::A2dpAudioStreamOut::A2dpAudioStreamOut() :
+    mFd(-1), mStartCount(0), mRetryCount(0), mData(NULL),
+    mInitialized(false), mBufferRemaining(0)
+{
+}
+
+status_t A2dpAudioInterface::A2dpAudioStreamOut::set(
+        int format, int channels, uint32_t rate)
+{
+    LOGD("A2dpAudioStreamOut::set %d, %d, %d\n", format, channels, rate);
+
+    // fix up defaults
+    if (format == 0) format = AudioSystem::PCM_16_BIT;
+    if (channels == 0) channels = channelCount();
+    if (rate == 0) rate = sampleRate();
+
+    // check values
+    if ((format != AudioSystem::PCM_16_BIT) ||
+            (channels != channelCount()) ||
+            (rate != sampleRate()))
+        return BAD_VALUE;
+
+    return NO_ERROR;
+}
+
+A2dpAudioInterface::A2dpAudioStreamOut::~A2dpAudioStreamOut()
+{
+    if (mData)
+        a2dp_cleanup(mData);
+}
+
+ssize_t A2dpAudioInterface::A2dpAudioStreamOut::write(const void* buffer, size_t bytes)
+{    
+    if (!mInitialized) {
+        int ret = a2dp_init("00:00:00:00:00:00", 44100, 2, &mData);
+        if (ret)
+            return ret;
+        mInitialized = true;
+    }
+    
+    size_t remaining = bytes;
+    while (remaining > 0) {
+        int written = a2dp_write(mData, buffer, remaining);        
+        remaining -= written;
+        buffer = ((char *)buffer) + written;
+    }
+    
+    return bytes;
+}
+
+status_t A2dpAudioInterface::A2dpAudioStreamOut::standby()
+{
+    return 0;
+}
+
+status_t A2dpAudioInterface::A2dpAudioStreamOut::dump(int fd, const Vector<String16>& args)
+{
+    return NO_ERROR;
+}
+
+
+}; // namespace android
diff --git a/libs/audioflinger/A2dpAudioInterface.h b/libs/audioflinger/A2dpAudioInterface.h
new file mode 100644
index 0000000..03bf933
--- /dev/null
+++ b/libs/audioflinger/A2dpAudioInterface.h
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2008 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.
+ */
+
+#ifndef A2DP_AUDIO_HARDWARE_H
+#define A2DP_AUDIO_HARDWARE_H
+
+#include <stdint.h>
+#include <sys/types.h>
+
+#include <utils/threads.h>
+
+#include <hardware/AudioHardwareBase.h>
+
+
+namespace android {
+
+class A2dpAudioInterface : public AudioHardwareBase
+{
+    class A2dpAudioStreamOut;
+
+public:
+                        A2dpAudioInterface();
+    virtual             ~A2dpAudioInterface();
+    virtual status_t    initCheck();
+    virtual status_t    standby();
+
+    virtual status_t    setVoiceVolume(float volume);
+    virtual status_t    setMasterVolume(float volume);
+
+    // mic mute
+    virtual status_t    setMicMute(bool state);
+    virtual status_t    getMicMute(bool* state);
+
+    // Temporary interface, do not use
+    // TODO: Replace with a more generic key:value get/set mechanism
+    virtual status_t    setParameter(const char *key, const char *value);
+
+    // create I/O streams
+    virtual AudioStreamOut* openOutputStream(
+                                int format=0,
+                                int channelCount=0,
+                                uint32_t sampleRate=0,
+                                status_t *status=0);
+
+    virtual AudioStreamIn* openInputStream(
+                                int format,
+                                int channelCount,
+                                uint32_t sampleRate,
+                                status_t *status);
+
+protected:
+    virtual status_t    doRouting();
+    virtual status_t    dump(int fd, const Vector<String16>& args);
+
+private:
+    class A2dpAudioStreamOut : public AudioStreamOut {
+    public:
+                            A2dpAudioStreamOut();
+        virtual             ~A2dpAudioStreamOut();
+                status_t    set(int format,
+                                int channelCount,
+                                uint32_t sampleRate);
+        virtual uint32_t    sampleRate() const { return 44100; }
+        // must be 32-bit aligned - driver only seems to like 4800
+        virtual size_t      bufferSize() const { return 5120; }
+        virtual int         channelCount() const { return 2; }
+        virtual int         format() const { return AudioSystem::PCM_16_BIT; }
+        virtual uint32_t    latency() const { return 0; }
+        virtual status_t    setVolume(float volume) { return INVALID_OPERATION; }
+        virtual ssize_t     write(const void* buffer, size_t bytes);
+                status_t    standby();
+        virtual status_t    dump(int fd, const Vector<String16>& args);
+
+    private:
+                int         mFd;
+                int         mStartCount;
+                int         mRetryCount;
+                void*       mData;
+                bool        mInitialized;
+
+#define kBufferSize 50000
+                char                    mBuffer[kBufferSize];
+                int                     mBufferRemaining;
+    };
+
+    Mutex                   mLock;
+    A2dpAudioStreamOut*     mOutput;
+};
+
+// ----------------------------------------------------------------------------
+
+}; // namespace android
+
+#endif // A2DP_AUDIO_HARDWARE_H
diff --git a/libs/audioflinger/Android.mk b/libs/audioflinger/Android.mk
index a9cb303..d16e3e1 100644
--- a/libs/audioflinger/Android.mk
+++ b/libs/audioflinger/Android.mk
@@ -45,9 +45,12 @@
 
 LOCAL_MODULE:= libaudioflinger
 
-ifeq ($(TARGET_ARCH),arm)  # not simulator
-  LOCAL_CFLAGS += -DWITH_BLUETOOTH
+ifeq ($(BOARD_HAVE_BLUETOOTH),true)
+  LOCAL_SRC_FILES += A2dpAudioInterface.cpp
+  LOCAL_SHARED_LIBRARIES += liba2dp
+  LOCAL_CFLAGS += -DWITH_BLUETOOTH -DWITH_A2DP
   LOCAL_C_INCLUDES += $(call include-path-for, bluez-libs)
+  LOCAL_C_INCLUDES += $(call include-path-for, bluez-utils)
 endif
 
 include $(BUILD_SHARED_LIBRARY)
diff --git a/libs/audioflinger/AudioDumpInterface.cpp b/libs/audioflinger/AudioDumpInterface.cpp
index 5ff2f18..8eee9cc 100644
--- a/libs/audioflinger/AudioDumpInterface.cpp
+++ b/libs/audioflinger/AudioDumpInterface.cpp
@@ -2,16 +2,16 @@
 **
 ** Copyright 2008, 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 
+** 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 
+**     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 
+** 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.
 */
 
@@ -28,6 +28,8 @@
 
 namespace android {
 
+bool gFirst = true;       // true if first write after a standby
+
 // ----------------------------------------------------------------------------
 
 AudioDumpInterface::AudioDumpInterface(AudioHardwareInterface* hw)
@@ -40,17 +42,25 @@
 }
 
 
+AudioDumpInterface::~AudioDumpInterface()
+{
+    if(mFinalInterface) delete mFinalInterface;
+    if(mStreamOut) delete mStreamOut;
+}
+
+
 status_t AudioDumpInterface::standby()
 {
     if(mStreamOut)  mStreamOut->Close();
+    gFirst = true;
     return mFinalInterface->standby();
 }
 
 
 AudioStreamOut* AudioDumpInterface::openOutputStream(
-        int format, int channelCount, uint32_t sampleRate)
+        int format, int channelCount, uint32_t sampleRate, status_t *status)
 {
-    AudioStreamOut* outFinal = mFinalInterface->openOutputStream(format, channelCount, sampleRate);
+    AudioStreamOut* outFinal = mFinalInterface->openOutputStream(format, channelCount, sampleRate, status);
 
     if(outFinal) {
         mStreamOut =  new AudioStreamOutDump(outFinal);
@@ -69,13 +79,26 @@
     mOutFile = 0;
 }
 
+
+AudioStreamOutDump::~AudioStreamOutDump()
+{
+    Close();
+    delete mFinalStream;
+}
+
 ssize_t AudioStreamOutDump::write(const void* buffer, size_t bytes)
 {
     ssize_t ret;
-    
+
     ret = mFinalStream->write(buffer, bytes);
-    if(!mOutFile) {
-        mOutFile = fopen(FLINGER_DUMP_NAME, "ab");
+    if(!mOutFile && gFirst) {
+        gFirst = false;
+        // check if dump file exist
+        mOutFile = fopen(FLINGER_DUMP_NAME, "r");
+        if(mOutFile) {
+            fclose(mOutFile);
+            mOutFile = fopen(FLINGER_DUMP_NAME, "ab");
+        }
     }
     if (mOutFile) {
         fwrite(buffer, bytes, 1, mOutFile);
diff --git a/libs/audioflinger/AudioDumpInterface.h b/libs/audioflinger/AudioDumpInterface.h
index 732b97d..a65e56a 100644
--- a/libs/audioflinger/AudioDumpInterface.h
+++ b/libs/audioflinger/AudioDumpInterface.h
@@ -2,16 +2,16 @@
 **
 ** Copyright 2008, 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 
+** 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 
+**     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 
+** 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.
 */
 
@@ -21,33 +21,35 @@
 #include <stdint.h>
 #include <sys/types.h>
 
-#include <hardware/AudioHardwareInterface.h>
+#include <hardware/AudioHardwareBase.h>
 
 namespace android {
 
-#define FLINGER_DUMP_NAME "/tmp/FlingerOut.pcm" // name of file used for dump
+#define FLINGER_DUMP_NAME "/data/FlingerOut.pcm" // name of file used for dump
 
 class AudioStreamOutDump : public AudioStreamOut {
 public:
                         AudioStreamOutDump( AudioStreamOut* FinalStream);
+                        ~AudioStreamOutDump();
                         virtual ssize_t     write(const void* buffer, size_t bytes);
-                        
+
     virtual uint32_t    sampleRate() const { return mFinalStream->sampleRate(); }
     virtual size_t      bufferSize() const { return mFinalStream->bufferSize(); }
     virtual int         channelCount() const { return mFinalStream->channelCount(); }
     virtual int         format() const { return mFinalStream->format(); }
+    virtual uint32_t    latency() const { return mFinalStream->latency(); }
     virtual status_t    setVolume(float volume)
                             { return mFinalStream->setVolume(volume); }
     virtual status_t    dump(int fd, const Vector<String16>& args) { return mFinalStream->dump(fd, args); }
     void                Close(void);
 
 private:
-    AudioStreamOut  *mFinalStream;
-    FILE            *mOutFile;     // output file
+    AudioStreamOut      *mFinalStream;
+    FILE                *mOutFile;     // output file
 };
 
 
-class AudioDumpInterface : public  AudioHardwareInterface
+class AudioDumpInterface : public AudioHardwareBase
 {
 
 public:
@@ -56,10 +58,10 @@
     virtual AudioStreamOut* openOutputStream(
                                 int format=0,
                                 int channelCount=0,
-                                uint32_t sampleRate=0);
+                                uint32_t sampleRate=0,
+                                status_t *status=0);
+    virtual             ~AudioDumpInterface();
 
-    virtual             ~AudioDumpInterface()
-                            {delete mFinalInterface;}
     virtual status_t    initCheck()
                             {return mFinalInterface->initCheck();}
     virtual status_t    setVoiceVolume(float volume)
@@ -67,13 +69,6 @@
     virtual status_t    setMasterVolume(float volume)
                             {return mFinalInterface->setMasterVolume(volume);}
 
-    virtual status_t    setRouting(int mode, uint32_t routes)
-                            {return mFinalInterface->setRouting(mode, routes);}
-    virtual status_t    getRouting(int mode, uint32_t* routes)
-                            {return mFinalInterface->getRouting(mode, routes);}
-    virtual status_t    getMode(int* mode)
-                            {return mFinalInterface->getMode(mode);}
-    
     // mic mute
     virtual status_t    setMicMute(bool state)
                             {return mFinalInterface->setMicMute(state);}
@@ -83,17 +78,17 @@
     virtual status_t    setParameter(const char* key, const char* value)
                             {return mFinalInterface->setParameter(key, value);}
 
-    virtual AudioStreamIn* openInputStream( int format, int channelCount, uint32_t sampleRate)
-                            {return mFinalInterface->openInputStream( format, channelCount, sampleRate);}
+    virtual AudioStreamIn* openInputStream( int format, int channelCount, uint32_t sampleRate, status_t *status)
+                            {return mFinalInterface->openInputStream( format, channelCount, sampleRate, status);}
 
     virtual status_t    dump(int fd, const Vector<String16>& args) { return mFinalInterface->dumpState(fd, args); }
 
 protected:
-    virtual status_t    doRouting() {return 0;}
-    
+    virtual status_t    doRouting() {return mFinalInterface->setRouting(mMode, mRoutes[mMode]);}
+
     AudioHardwareInterface  *mFinalInterface;
     AudioStreamOutDump      *mStreamOut;
-    
+
 };
 
 }; // namespace android
diff --git a/libs/audioflinger/AudioFlinger.cpp b/libs/audioflinger/AudioFlinger.cpp
index fb21629..53b18ad 100644
--- a/libs/audioflinger/AudioFlinger.cpp
+++ b/libs/audioflinger/AudioFlinger.cpp
@@ -31,6 +31,8 @@
 #include <utils/String16.h>
 #include <utils/threads.h>
 
+#include <cutils/properties.h>
+
 #include <media/AudioTrack.h>
 #include <media/AudioRecord.h>
 
@@ -41,9 +43,13 @@
 #include "AudioMixer.h"
 #include "AudioFlinger.h"
 
+#ifdef WITH_A2DP
+#include "A2dpAudioInterface.h"
+#endif
+
 namespace android {
 
-static const nsecs_t kStandbyTimeInNsecs = seconds(3);
+//static const nsecs_t kStandbyTimeInNsecs = seconds(3);
 static const unsigned long kBufferRecoveryInUsecs = 2000;
 static const unsigned long kMaxBufferRecoveryInUsecs = 20000;
 static const float MAX_GAIN = 4096.0f;
@@ -93,8 +99,9 @@
 
 AudioFlinger::AudioFlinger()
     : BnAudioFlinger(), Thread(false),
-        mMasterVolume(0), mMasterMute(true),
-        mAudioMixer(0), mAudioHardware(0), mOutput(0), mAudioRecordThread(0),
+        mMasterVolume(0), mMasterMute(true), mHardwareAudioMixer(0), mA2dpAudioMixer(0),
+        mAudioMixer(0), mAudioHardware(0), mA2dpAudioInterface(0),
+        mHardwareOutput(0), mA2dpOutput(0), mOutput(0), mAudioRecordThread(0),
         mSampleRate(0), mFrameCount(0), mChannelCount(0), mFormat(0),
         mMixBuffer(0), mLastWriteTime(0), mNumWrites(0), mNumDelayedWrites(0),
         mStandby(false), mInWrite(false)
@@ -105,17 +112,14 @@
     if (mAudioHardware->initCheck() == NO_ERROR) {
         // open 16-bit output stream for s/w mixer
         mHardwareStatus = AUDIO_HW_OUTPUT_OPEN;
-        mOutput = mAudioHardware->openOutputStream(AudioSystem::PCM_16_BIT);
+        status_t status;
+        mHardwareOutput = mAudioHardware->openOutputStream(AudioSystem::PCM_16_BIT, 0, 0, &status);
         mHardwareStatus = AUDIO_HW_IDLE;
-        if (mOutput) {
-            mSampleRate = mOutput->sampleRate();
-            mChannelCount = mOutput->channelCount();
-            mFormat = mOutput->format();
-            mMixBufferSize = mOutput->bufferSize();
-            mFrameCount = mMixBufferSize / mChannelCount / sizeof(int16_t);
-            mMixBuffer = new int16_t[mFrameCount * mChannelCount];
-            memset(mMixBuffer, 0, mMixBufferSize);
-            mAudioMixer = new AudioMixer(mFrameCount, mSampleRate);
+        if (mHardwareOutput) {
+            mSampleRate = mHardwareOutput->sampleRate();
+            mHardwareAudioMixer = new AudioMixer(getOutputFrameCount(mHardwareOutput), mSampleRate);
+            setOutput(mHardwareOutput);
+
             // FIXME - this should come from settings
             setMasterVolume(1.0f);
             setRouting(AudioSystem::MODE_NORMAL, AudioSystem::ROUTE_SPEAKER, AudioSystem::ROUTE_ALL);
@@ -124,20 +128,87 @@
             setMode(AudioSystem::MODE_NORMAL);
             mMasterMute = false;
         } else {
-            LOGE("Failed to initialize output stream");
+            LOGE("Failed to initialize output stream, status: %d", status);
         }
-    } else {
+        
+#ifdef WITH_A2DP
+        // Create A2DP interface
+        mA2dpAudioInterface = new A2dpAudioInterface();
+        mA2dpOutput = mA2dpAudioInterface->openOutputStream(AudioSystem::PCM_16_BIT, 0, 0, &status);       
+        mA2dpAudioMixer = new AudioMixer(getOutputFrameCount(mA2dpOutput), mA2dpOutput->sampleRate());
+
+        // create a buffer big enough for both hardware and A2DP audio output.
+        size_t hwFrameCount = getOutputFrameCount(mHardwareOutput);
+        size_t a2dpFrameCount = getOutputFrameCount(mA2dpOutput);
+        size_t frameCount = (hwFrameCount > a2dpFrameCount ? hwFrameCount : a2dpFrameCount);
+#else
+        size_t frameCount = getOutputFrameCount(mHardwareOutput);
+#endif
+        // FIXME - Current mixer implementation only supports stereo output: Always
+        // Allocate a stereo buffer even if HW output is mono.
+        mMixBuffer = new int16_t[frameCount * 2];
+        memset(mMixBuffer, 0, frameCount * 2 * sizeof(int16_t));
+        
+        // Start record thread
+        mAudioRecordThread = new AudioRecordThread(mAudioHardware);
+        if (mAudioRecordThread != 0) {
+            mAudioRecordThread->run("AudioRecordThread", PRIORITY_URGENT_AUDIO);            
+        }
+     } else {
         LOGE("Couldn't even initialize the stubbed audio hardware!");
     }
+
+    char value[PROPERTY_VALUE_MAX];
+    // FIXME: What property should this be???
+    property_get("ro.audio.silent", value, "0");
+    if (atoi(value)) {
+        LOGD("Silence is golden");
+        mMasterMute = true;
+    }
 }
 
 AudioFlinger::~AudioFlinger()
 {
+    if (mAudioRecordThread != 0) {
+        mAudioRecordThread->exit();
+        mAudioRecordThread.clear();        
+    }
     delete mOutput;
+    delete mA2dpOutput;
     delete mAudioHardware;
+    delete mA2dpAudioInterface;
     delete [] mMixBuffer;
-    delete mAudioMixer;
-    mAudioRecordThread.clear();
+    delete mHardwareAudioMixer;
+    delete mA2dpAudioMixer;
+}
+ 
+void AudioFlinger::setOutput(AudioStreamOut* output)
+{
+    // lock on mOutputLock to prevent threadLoop() from starving us
+    Mutex::Autolock _l2(mOutputLock);
+    
+    // to synchronize with threadLoop()
+    Mutex::Autolock _l(mLock);
+
+    if (mOutput != output) {
+        mSampleRate = output->sampleRate();
+        mChannelCount = output->channelCount();
+    
+        // FIXME - Current mixer implementation only supports stereo output
+        if (mChannelCount == 1) {
+            LOGE("Invalid audio hardware channel count");
+        }
+        mFormat = output->format();
+        mFrameCount = getOutputFrameCount(output);
+                
+        mAudioMixer = (output == mA2dpOutput ? mA2dpAudioMixer : mHardwareAudioMixer);
+        mOutput = output;
+    }
+}
+
+size_t AudioFlinger::getOutputFrameCount(AudioStreamOut* output) 
+{
+    return output->bufferSize() / output->channelCount() / sizeof(int16_t);
 }
 
 status_t AudioFlinger::dumpClients(int fd, const Vector<String16>& args)
@@ -201,8 +272,8 @@
     const size_t SIZE = 256;
     char buffer[SIZE];
     String8 result;
-    
-    snprintf(buffer, SIZE, "AudioMixer tracks: %08x\n", audioMixer().trackNames());
+
+    snprintf(buffer, SIZE, "AudioMixer tracks: %08x\n", audioMixer()->trackNames());
     result.append(buffer);
     snprintf(buffer, SIZE, "last write occurred (msecs): %llu\n", ns2ms(systemTime() - mLastWriteTime));
     result.append(buffer);
@@ -254,17 +325,26 @@
 // Thread virtuals
 bool AudioFlinger::threadLoop()
 {
-    nsecs_t maxPeriod = seconds(mFrameCount) / mSampleRate * 2;
     unsigned long sleepTime = kBufferRecoveryInUsecs;
-    const size_t mixBufferSize = mFrameCount*mChannelCount*sizeof(int16_t);
     int16_t* curBuf = mMixBuffer;
     Vector< sp<Track> > tracksToRemove;
-    size_t enabledTracks;
+    size_t enabledTracks = 0;
     nsecs_t standbyTime = systemTime();
+    AudioMixer* mixer = 0;
+    size_t frameCount = 0;
+    int channelCount = 0;
+    uint32_t sampleRate = 0;
+    AudioStreamOut* output = 0;
 
     do {
         enabledTracks = 0;
-        { // scope for the lock
+        { // scope for the mLock
+        
+            // locking briefly on the secondary mOutputLock is necessary to avoid
+            // having this thread starve the thread that called setOutput()
+            mOutputLock.lock();
+            mOutputLock.unlock();
+
             Mutex::Autolock _l(mLock);
             const SortedVector< wp<Track> >& activeTracks = mActiveTracks;
 
@@ -286,6 +366,15 @@
                 continue;
             }
 
+            // get active mixer and output parameter while the lock is held and keep them
+            // consistent till the next loop.
+            
+            mixer = audioMixer();
+            frameCount = mFrameCount;
+            channelCount = mChannelCount;
+            sampleRate = mSampleRate;
+            output = mOutput;
+            
             // find out which tracks need to be processed
             size_t count = activeTracks.size();
             for (size_t i=0 ; i<count ; i++) {
@@ -294,13 +383,11 @@
 
                 Track* const track = t.get();
                 audio_track_cblk_t* cblk = track->cblk();
-                uint32_t u = cblk->user;
-                uint32_t s = cblk->server;
 
                 // The first time a track is added we wait
                 // for all its buffers to be filled before processing it
-                audioMixer().setActiveTrack(track->name());
-                if ((u > s) && (track->isReady(u, s) || track->isStopped()) &&
+                mixer->setActiveTrack(track->name());
+                if (cblk->framesReady() && (track->isReady() || track->isStopped()) &&
                         !track->isPaused())
                 {
                     //LOGD("u=%08x, s=%08x [OK]", u, s);
@@ -325,9 +412,8 @@
                     }
 
                     // XXX: these things DON'T need to be done each time
-                    AudioMixer& mixer(audioMixer());
-                    mixer.setBufferProvider(track);
-                    mixer.enable(AudioMixer::MIXING);
+                    mixer->setBufferProvider(track);
+                    mixer->enable(AudioMixer::MIXING);
 
                     int param;
                     if ( track->mFillingUpStatus == Track::FS_FILLED) {
@@ -342,15 +428,15 @@
                     } else {
                         param = AudioMixer::RAMP_VOLUME;
                     }
-                    mixer.setParameter(param, AudioMixer::VOLUME0, left);
-                    mixer.setParameter(param, AudioMixer::VOLUME1, right);
-                    mixer.setParameter(
+                    mixer->setParameter(param, AudioMixer::VOLUME0, left);
+                    mixer->setParameter(param, AudioMixer::VOLUME1, right);
+                    mixer->setParameter(
                         AudioMixer::TRACK,
                         AudioMixer::FORMAT, track->format());
-                    mixer.setParameter(
+                    mixer->setParameter(
                         AudioMixer::TRACK,
                         AudioMixer::CHANNEL_COUNT, track->channelCount());
-                    mixer.setParameter(
+                    mixer->setParameter(
                         AudioMixer::RESAMPLE,
                         AudioMixer::SAMPLE_RATE,
                         int(cblk->sampleRate));
@@ -361,8 +447,7 @@
                 } else {
                     //LOGD("u=%08x, s=%08x [NOT READY]", u, s);
                     if (track->isStopped()) {
-                        track->mFillingUpStatus = Track::FS_FILLING;
-                        track->mFlags = 0;    
+                        track->reset();
                     }
                     if (track->isTerminated() || track->isStopped() || track->isPaused()) {
                         // We have consumed all the buffers of this track.
@@ -378,7 +463,7 @@
                         }
                     }
                     // LOGV("disable(%d)", track->name());
-                    audioMixer().disable(AudioMixer::MIXING);
+                    mixer->disable(AudioMixer::MIXING);
                 }
             }
 
@@ -390,26 +475,27 @@
                     mActiveTracks.remove(track);
                     if (track->isTerminated()) {
                         mTracks.remove(track);
-                        audioMixer().deleteTrackName(track->mName);
+                        mixer->deleteTrackName(track->mName);
                     }
                 }
-            }
-        }
-
+            }  
+       }
         if (LIKELY(enabledTracks)) {
             // mix buffers...
-            audioMixer().process(curBuf);
+            mixer->process(curBuf);
 
             // output audio to hardware
             mLastWriteTime = systemTime();
             mInWrite = true;
-            mOutput->write(curBuf, mixBufferSize);
+            size_t mixBufferSize = frameCount*channelCount*sizeof(int16_t);
+            output->write(curBuf, mixBufferSize);
             mNumWrites++;
             mInWrite = false;
             mStandby = false;
             nsecs_t temp = systemTime();
             standbyTime = temp + kStandbyTimeInNsecs;
             nsecs_t delta = temp - mLastWriteTime;
+            nsecs_t maxPeriod = seconds(frameCount) / sampleRate * 2;
             if (delta > maxPeriod) {
                 LOGW("write blocked for %llu msecs", ns2ms(delta));
                 mNumDelayedWrites++;
@@ -458,43 +544,60 @@
         uint32_t sampleRate,
         int format,
         int channelCount,
-        int bufferCount,
-        uint32_t flags)
+        int frameCount,
+        uint32_t flags,
+        const sp<IMemory>& sharedBuffer,
+        status_t *status)
 {
-    if (streamType >= AudioTrack::NUM_STREAM_TYPES) {
-        LOGE("invalid stream type");
-        return NULL;
-    }
-
-    if (sampleRate > MAX_SAMPLE_RATE) {
-        LOGE("Sample rate out of range: %d", sampleRate);
-        return NULL;
-    }
-
     sp<Track> track;
     sp<TrackHandle> trackHandle;
-    Mutex::Autolock _l(mLock);
-
-    if (mSampleRate == 0) {
-        LOGE("Audio driver not initialized.");
-        return trackHandle;
-    }
-
     sp<Client> client;
-    wp<Client> wclient = mClients.valueFor(pid);
+    wp<Client> wclient;
+    status_t lStatus;
 
-    if (wclient != NULL) {
-        client = wclient.promote();
-    } else {
-        client = new Client(this, pid);
-        mClients.add(pid, client);
+    if (streamType >= AudioTrack::NUM_STREAM_TYPES) {
+        LOGE("invalid stream type");
+        lStatus = BAD_VALUE;
+        goto Exit;
     }
 
-    // FIXME: Buffer size should be based on sample rate for consistent latency
-    track = new Track(this, client, streamType, sampleRate, format,
-            channelCount, bufferCount, channelCount == 1 ? mMixBufferSize>>1 : mMixBufferSize);
-    mTracks.add(track);
-    trackHandle = new TrackHandle(track);
+    // Resampler implementation limits input sampling rate to 2 x output sampling rate.
+    if (sampleRate > MAX_SAMPLE_RATE || sampleRate > mSampleRate*2) {
+        LOGE("Sample rate out of range: %d", sampleRate);
+        lStatus = BAD_VALUE;
+        goto Exit;
+    }
+
+    {
+        Mutex::Autolock _l(mLock);
+
+        if (mSampleRate == 0) {
+            LOGE("Audio driver not initialized.");
+            lStatus = NO_INIT;
+            goto Exit;
+        }
+
+        wclient = mClients.valueFor(pid);
+
+        if (wclient != NULL) {
+            client = wclient.promote();
+        } else {
+            client = new Client(this, pid);
+            mClients.add(pid, client);
+        }
+
+        track = new Track(this, client, streamType, sampleRate, format,
+                channelCount, frameCount, sharedBuffer);
+        mTracks.add(track);
+        trackHandle = new TrackHandle(track);
+
+        lStatus = NO_ERROR;
+    }
+
+Exit:
+    if(status) {
+        *status = lStatus;
+    }
     return trackHandle;
 }
 
@@ -518,6 +621,16 @@
     return mFrameCount;
 }
 
+uint32_t AudioFlinger::latency() const
+{
+    if (mOutput) {
+        return mOutput->latency();
+    }
+    else {
+        return 0;
+    }
+}
+
 status_t AudioFlinger::setMasterVolume(float value)
 {
     // check calling permissions
@@ -549,6 +662,21 @@
         return BAD_VALUE;
     }
 
+#ifdef WITH_A2DP
+    LOGD("setRouting %d %d %d\n", mode, routes, mask);
+    if (mode == AudioSystem::MODE_NORMAL && 
+            (mask & AudioSystem::ROUTE_BLUETOOTH_A2DP)) {
+        if (routes & AudioSystem::ROUTE_BLUETOOTH_A2DP) {
+            LOGD("set output to A2DP\n");
+            setOutput(mA2dpOutput);
+        } else {
+            LOGD("set output to hardware audio\n");
+            setOutput(mHardwareOutput);
+        }
+        LOGD("setOutput done\n");
+    }
+#endif
+
     AutoMutex lock(mHardwareLock);
     mHardwareStatus = AUDIO_HW_GET_ROUTING;
     uint32_t r;
@@ -656,7 +784,7 @@
     if (uint32_t(stream) >= AudioTrack::NUM_STREAM_TYPES) {
         return BAD_VALUE;
     }
-    
+
     mStreamTypes[stream].volume = value;
     status_t ret = NO_ERROR;
     if (stream == AudioTrack::VOICE_CALL) {
@@ -750,6 +878,7 @@
         // buffers before playing. This is to ensure the client will
         // effectively get the latency it requested.
         track->mFillingUpStatus = Track::FS_FILLING;
+        track->mResetDone = false;
         mActiveTracks.add(track);
         return NO_ERROR;
     }
@@ -771,7 +900,7 @@
     if (t!=NULL) {
         t->reset();
     }
-    audioMixer().deleteTrackName(name);
+    audioMixer()->deleteTrackName(name);
     mActiveTracks.remove(track);
     mWaitWorkCV.broadcast();
 }
@@ -789,7 +918,7 @@
     if (mActiveTracks.indexOf(track) < 0) {
         LOGV("remove track (%d) and delete from mixer", track->name());
         mTracks.remove(track);
-        audioMixer().deleteTrackName(keep->name());
+        audioMixer()->deleteTrackName(keep->name());
     }
 }
 
@@ -823,38 +952,53 @@
             uint32_t sampleRate,
             int format,
             int channelCount,
-            int bufferCount,
-            int bufferSize)
+            int frameCount,
+            const sp<IMemory>& sharedBuffer)
     :   RefBase(),
         mAudioFlinger(audioFlinger),
         mClient(client),
         mStreamType(streamType),
-        mFormat(format),
-        mChannelCount(channelCount),
-        mBufferCount(bufferCount),
-        mFlags(0),
-        mBufferSize(bufferSize),
+        mFrameCount(0),
         mState(IDLE),
-        mClientTid(-1)
+        mClientTid(-1),
+        mFormat(format),
+        mFlags(0)
 {
-    mName = audioFlinger->audioMixer().getTrackName();
+    mName = audioFlinger->audioMixer()->getTrackName();
     if (mName < 0) {
         LOGE("no more track names availlable");
         return;
     }
 
+    LOGV_IF(sharedBuffer != 0, "sharedBuffer: %p, size: %d", sharedBuffer->pointer(), sharedBuffer->size());
+
+
     // LOGD("Creating track with %d buffers @ %d bytes", bufferCount, bufferSize);
-    size_t size = sizeof(audio_track_cblk_t) + bufferCount * bufferSize;
+   size_t size = sizeof(audio_track_cblk_t);
+   size_t bufferSize = frameCount*channelCount*sizeof(int16_t);
+   if (sharedBuffer == 0) {
+       size += bufferSize;
+   }
+
     mCblkMemory = client->heap()->allocate(size);
     if (mCblkMemory != 0) {
         mCblk = static_cast<audio_track_cblk_t *>(mCblkMemory->pointer());
         if (mCblk) { // construct the shared structure in-place.
             new(mCblk) audio_track_cblk_t();
             // clear all buffers
-            mCblk->size = bufferSize;
+            mCblk->frameCount = frameCount;
             mCblk->sampleRate = sampleRate;
-            mBuffers = (char*)mCblk + sizeof(audio_track_cblk_t);
-            memset(mBuffers, 0, bufferCount * bufferSize);
+            mCblk->channels = channelCount;
+            if (sharedBuffer == 0) {
+                mBuffer = (char*)mCblk + sizeof(audio_track_cblk_t);
+                memset(mBuffer, 0, frameCount*channelCount*sizeof(int16_t));
+                // Force underrun condition to avoid false underrun callback until first data is
+                // written to buffer
+                mCblk->flowControlFlag = 1;
+            } else {
+                mBuffer = sharedBuffer->pointer();
+            }
+            mBufferEnd = (uint8_t *)mBuffer + bufferSize;
         }
     } else {
         LOGE("not enough memory for AudioTrack size=%u", size);
@@ -873,15 +1017,16 @@
 void AudioFlinger::TrackBase::releaseBuffer(AudioBufferProvider::Buffer* buffer)
 {
     buffer->raw = 0;
-    buffer->frameCount = 0;
+    mFrameCount = buffer->frameCount;
     step();
+    buffer->frameCount = 0;
 }
 
 bool AudioFlinger::TrackBase::step() {
     bool result;
     audio_track_cblk_t* cblk = this->cblk();
-    
-    result = cblk->stepServer(bufferCount()); 
+
+    result = cblk->stepServer(mFrameCount);
     if (!result) {
         LOGV("stepServer failed acquiring cblk mutex");
         mFlags |= STEPSERVER_FAILED;
@@ -894,7 +1039,10 @@
 
     cblk->user = 0;
     cblk->server = 0;
-    mFlags = 0;    
+    cblk->userBase = 0;
+    cblk->serverBase = 0;
+    mFlags = 0;
+    LOGV("TrackBase::reset");
 }
 
 sp<IMemory> AudioFlinger::TrackBase::getCblk() const
@@ -906,6 +1054,27 @@
     return mCblk->sampleRate;
 }
 
+int AudioFlinger::TrackBase::channelCount() const {
+    return mCblk->channels;
+}
+
+void* AudioFlinger::TrackBase::getBuffer(uint32_t offset, uint32_t frames) const {
+    audio_track_cblk_t* cblk = this->cblk();
+    int16_t *bufferStart = (int16_t *)mBuffer + (offset-cblk->serverBase)*cblk->channels;
+    int16_t *bufferEnd = bufferStart + frames * cblk->channels;
+
+    // Check validity of returned pointer in case the track control block would have been corrupted.
+    if (bufferStart < mBuffer || bufferStart > bufferEnd || bufferEnd > mBufferEnd) {
+        LOGW("TrackBase::getBuffer buffer out of range:\n    start: %p, end %p , mBuffer %p mBufferEnd %p\n    \
+                server %d, serverBase %d, user %d, userBase %d",
+                bufferStart, bufferEnd, mBuffer, mBufferEnd,
+                cblk->server, cblk->serverBase, cblk->user, cblk->userBase);
+        return 0;
+    }
+
+    return bufferStart;
+}
+
 // ----------------------------------------------------------------------------
 
 AudioFlinger::Track::Track(
@@ -915,13 +1084,14 @@
             uint32_t sampleRate,
             int format,
             int channelCount,
-            int bufferCount,
-            int bufferSize)
-    :   TrackBase(audioFlinger, client, streamType, sampleRate, format, channelCount, bufferCount, bufferSize)
+            int frameCount,
+            const sp<IMemory>& sharedBuffer)
+    :   TrackBase(audioFlinger, client, streamType, sampleRate, format, channelCount, frameCount, sharedBuffer)
 {
     mVolume[0] = 1.0f;
     mVolume[1] = 1.0f;
     mMute = false;
+    mSharedBuffer = sharedBuffer;
 }
 
 AudioFlinger::Track::~Track()
@@ -943,8 +1113,8 @@
             mClient->pid(),
             mStreamType,
             mFormat,
-            mChannelCount,
-            mBufferCount,
+            mCblk->channels,
+            mFrameCount,
             mState,
             mMute,
             mFillingUpStatus,
@@ -958,36 +1128,50 @@
 status_t AudioFlinger::Track::getNextBuffer(AudioBufferProvider::Buffer* buffer)
 {
      audio_track_cblk_t* cblk = this->cblk();
-     uint32_t u = cblk->user;
-     uint32_t s = cblk->server;
-     
-     // Check if last stepServer failed, try to step now 
+     uint32_t framesReady;
+     uint32_t framesReq = buffer->frameCount;
+
+     // Check if last stepServer failed, try to step now
      if (mFlags & TrackBase::STEPSERVER_FAILED) {
          if (!step())  goto getNextBuffer_exit;
          LOGV("stepServer recovered");
          mFlags &= ~TrackBase::STEPSERVER_FAILED;
      }
 
-     if (LIKELY(u > s)) {
-         int index = s & audio_track_cblk_t::BUFFER_MASK;
-         buffer->raw = getBuffer(index);
-         buffer->frameCount = mAudioFlinger->frameCount();
-         return NO_ERROR;
+     framesReady = cblk->framesReady();
+
+     if (LIKELY(framesReady)) {
+        uint32_t s = cblk->server;
+        uint32_t bufferEnd = cblk->serverBase + cblk->frameCount;
+
+        bufferEnd = (cblk->loopEnd < bufferEnd) ? cblk->loopEnd : bufferEnd;
+        if (framesReq > framesReady) {
+            framesReq = framesReady;
+        }
+        if (s + framesReq > bufferEnd) {
+            framesReq = bufferEnd - s;
+        }
+
+         buffer->raw = getBuffer(s, framesReq);
+         if (buffer->raw == 0) goto getNextBuffer_exit;
+
+         buffer->frameCount = framesReq;
+        return NO_ERROR;
      }
+
 getNextBuffer_exit:
      buffer->raw = 0;
      buffer->frameCount = 0;
      return NOT_ENOUGH_DATA;
 }
 
-bool AudioFlinger::Track::isReady(uint32_t u, int32_t s) const {
+bool AudioFlinger::Track::isReady() const {
     if (mFillingUpStatus != FS_FILLING) return true;
-    const uint32_t u_seq = u & audio_track_cblk_t::SEQUENCE_MASK;
-    const uint32_t u_buf = u & audio_track_cblk_t::BUFFER_MASK;
-    const uint32_t s_seq = s & audio_track_cblk_t::SEQUENCE_MASK;
-    const uint32_t s_buf = s & audio_track_cblk_t::BUFFER_MASK;
-    if (u_seq > s_seq && u_buf == s_buf) {
+
+    if (mCblk->framesReady() >= mCblk->frameCount ||
+        mCblk->forceReady) {
         mFillingUpStatus = FS_FILLED;
+        mCblk->forceReady = 0;
         return true;
     }
     return false;
@@ -1006,7 +1190,7 @@
     Mutex::Autolock _l(mAudioFlinger->mLock);
     if (mState > STOPPED) {
         mState = STOPPED;
-        // If the track is not active (PAUSED and buffers full), flush buffers  
+        // If the track is not active (PAUSED and buffers full), flush buffers
         if (mAudioFlinger->mActiveTracks.indexOf(this) < 0) {
             reset();
         }
@@ -1038,15 +1222,24 @@
     // NOTE: reset() will reset cblk->user and cblk->server with
     // the risk that at the same time, the AudioMixer is trying to read
     // data. In this case, getNextBuffer() would return a NULL pointer
-    // as audio buffer => the AudioMixer code MUST always test that pointer 
-    // returned by getNextBuffer() is not NULL! 
+    // as audio buffer => the AudioMixer code MUST always test that pointer
+    // returned by getNextBuffer() is not NULL!
     reset();
 }
 
 void AudioFlinger::Track::reset()
 {
-    TrackBase::reset();
-    mFillingUpStatus = FS_FILLING;
+    // Do not reset twice to avoid discarding data written just after a flush and before
+    // the audioflinger thread detects the track is stopped.
+    if (!mResetDone) {
+        TrackBase::reset();
+        // Force underrun condition to avoid false underrun callback until first data is
+        // written to buffer
+        mCblk->flowControlFlag = 1;
+        mCblk->forceReady = 0;
+        mFillingUpStatus = FS_FILLING;        
+        mResetDone = true;
+    }
 }
 
 void AudioFlinger::Track::mute(bool muted)
@@ -1112,26 +1305,15 @@
 
 // ----------------------------------------------------------------------------
 
-sp<AudioFlinger::AudioRecordThread> AudioFlinger::audioRecordThread()
-{
-    Mutex::Autolock _l(mLock);
-    return mAudioRecordThread;
-}
-
-void AudioFlinger::endRecord()
-{
-    Mutex::Autolock _l(mLock);
-    mAudioRecordThread.clear();
-}
-
 sp<IAudioRecord> AudioFlinger::openRecord(
         pid_t pid,
         int streamType,
         uint32_t sampleRate,
         int format,
         int channelCount,
-        int bufferCount,
-        uint32_t flags)
+        int frameCount,
+        uint32_t flags,
+        status_t *status)
 {
     sp<AudioRecordThread> thread;
     sp<RecordTrack> recordTrack;
@@ -1139,46 +1321,46 @@
     sp<Client> client;
     wp<Client> wclient;
     AudioStreamIn* input = 0;
+    int inFrameCount;
+    size_t inputBufferSize;
+    status_t lStatus;
 
     // check calling permissions
     if (!recordingAllowed()) {
+        lStatus = PERMISSION_DENIED;
         goto Exit;
     }
 
     if (uint32_t(streamType) >= AudioRecord::NUM_STREAM_TYPES) {
         LOGE("invalid stream type");
+        lStatus = BAD_VALUE;
         goto Exit;
     }
 
     if (sampleRate > MAX_SAMPLE_RATE) {
         LOGE("Sample rate out of range");
+        lStatus = BAD_VALUE;
         goto Exit;
     }
 
     if (mSampleRate == 0) {
         LOGE("Audio driver not initialized");
+        lStatus = NO_INIT;
         goto Exit;
     }
 
-    // Create audio thread - take mutex to prevent race condition
-    {
-        Mutex::Autolock _l(mLock);
-        if (mAudioRecordThread != 0) {
-            LOGE("Record channel already open");
-            goto Exit;
-        }
-        thread = new AudioRecordThread(this);
-        mAudioRecordThread = thread;
+    if (mAudioRecordThread == 0) {
+        LOGE("Audio record thread not started");
+        lStatus = NO_INIT;
+        goto Exit;
     }
-    // It's safe to release the mutex here since the client doesn't get a
-    // handle until we return from this call
 
-    // open driver, initialize h/w
-    input = mAudioHardware->openInputStream(
-            AudioSystem::PCM_16_BIT, channelCount, sampleRate);
-    if (!input) {
-        LOGE("Error opening input stream");
-        mAudioRecordThread.clear();
+
+    // Check that audio input stream accepts requested audio parameters 
+    inputBufferSize = mAudioHardware->getInputBufferSize(sampleRate, format, channelCount);
+    if (inputBufferSize == 0) {
+        lStatus = BAD_VALUE;
+        LOGE("Bad audio input parameters: sampling rate %u, format %d, channels %d",  sampleRate, format, channelCount);
         goto Exit;
     }
 
@@ -1194,37 +1376,38 @@
         }
     }
 
+    // frameCount must be a multiple of input buffer size
+    inFrameCount = inputBufferSize/channelCount/sizeof(short);
+    frameCount = ((frameCount - 1)/inFrameCount + 1) * inFrameCount;
+
     // create new record track and pass to record thread
     recordTrack = new RecordTrack(this, client, streamType, sampleRate,
-            format, channelCount, bufferCount, input->bufferSize());
-
-    // spin up record thread
-    thread->open(recordTrack, input);
-    thread->run("AudioRecordThread", PRIORITY_URGENT_AUDIO);
+            format, channelCount, frameCount);
 
     // return to handle to client
     recordHandle = new RecordHandle(recordTrack);
+    lStatus = NO_ERROR;
 
 Exit:
+    if (status) {
+        *status = lStatus;
+    }
     return recordHandle;
 }
 
-status_t AudioFlinger::startRecord() {
-    sp<AudioRecordThread> t = audioRecordThread();
-    if (t == 0) return NO_INIT;
-    return t->start();
+status_t AudioFlinger::startRecord(RecordTrack* recordTrack) {
+    if (mAudioRecordThread != 0) {
+        return mAudioRecordThread->start(recordTrack);        
+    }
+    return NO_INIT;
 }
 
-void AudioFlinger::stopRecord() {
-    sp<AudioRecordThread> t = audioRecordThread();
-    if (t != 0) t->stop();
+void AudioFlinger::stopRecord(RecordTrack* recordTrack) {
+    if (mAudioRecordThread != 0) {
+        mAudioRecordThread->stop(recordTrack);
+    }
 }
 
-void AudioFlinger::exitRecord()
-{
-    sp<AudioRecordThread> t = audioRecordThread();
-    if (t != 0) t->exit();
-}
 
 // ----------------------------------------------------------------------------
 
@@ -1235,55 +1418,69 @@
             uint32_t sampleRate,
             int format,
             int channelCount,
-            int bufferCount,
-            int bufferSize)
+            int frameCount)
     :   TrackBase(audioFlinger, client, streamType, sampleRate, format,
-            channelCount, bufferCount, bufferSize),
+            channelCount, frameCount, 0),
             mOverflow(false)
 {
 }
 
 AudioFlinger::RecordTrack::~RecordTrack()
 {
-    mAudioFlinger->audioMixer().deleteTrackName(mName);
-    mAudioFlinger->exitRecord();
+    mAudioFlinger->audioMixer()->deleteTrackName(mName);
 }
 
 status_t AudioFlinger::RecordTrack::getNextBuffer(AudioBufferProvider::Buffer* buffer)
 {
-     audio_track_cblk_t* cblk = this->cblk();
-     const uint32_t u_seq = cblk->user & audio_track_cblk_t::SEQUENCE_MASK;
-     const uint32_t u_buf = cblk->user & audio_track_cblk_t::BUFFER_MASK;
-     const uint32_t s_seq = cblk->server & audio_track_cblk_t::SEQUENCE_MASK;
-     const uint32_t s_buf = cblk->server & audio_track_cblk_t::BUFFER_MASK;
-     
-     // Check if last stepServer failed, try to step now 
-     if (mFlags & TrackBase::STEPSERVER_FAILED) {
-         if (!step())  goto getNextBuffer_exit;
-         LOGV("stepServer recovered");
-         mFlags &= ~TrackBase::STEPSERVER_FAILED;
-     }
+    audio_track_cblk_t* cblk = this->cblk();
+    uint32_t framesAvail;
+    uint32_t framesReq = buffer->frameCount;
 
-     if (LIKELY(s_seq == u_seq || s_buf != u_buf)) {
-         buffer->raw = getBuffer(s_buf);
-         buffer->frameCount = mAudioFlinger->frameCount();
-         return NO_ERROR;
-     }
+     // Check if last stepServer failed, try to step now
+    if (mFlags & TrackBase::STEPSERVER_FAILED) {
+        if (!step()) goto getNextBuffer_exit;
+        LOGV("stepServer recovered");
+        mFlags &= ~TrackBase::STEPSERVER_FAILED;
+    }
 
-getNextBuffer_exit:     
-     buffer->raw = 0;
-     buffer->frameCount = 0;
-     return NOT_ENOUGH_DATA;
+    framesAvail = cblk->framesAvailable_l();
+
+    if (LIKELY(framesAvail)) {
+        uint32_t s = cblk->server;
+        uint32_t bufferEnd = cblk->serverBase + cblk->frameCount;
+
+        if (framesReq > framesAvail) {
+            framesReq = framesAvail;
+        }
+        if (s + framesReq > bufferEnd) {
+            framesReq = bufferEnd - s;
+        }
+
+        buffer->raw = getBuffer(s, framesReq);
+        if (buffer->raw == 0) goto getNextBuffer_exit;
+
+        buffer->frameCount = framesReq;
+        return NO_ERROR;
+    }
+
+getNextBuffer_exit:
+    buffer->raw = 0;
+    buffer->frameCount = 0;
+    return NOT_ENOUGH_DATA;
 }
 
 status_t AudioFlinger::RecordTrack::start()
 {
-    return mAudioFlinger->startRecord();
+    return mAudioFlinger->startRecord(this);
 }
 
 void AudioFlinger::RecordTrack::stop()
 {
-    mAudioFlinger->stopRecord();
+    mAudioFlinger->stopRecord(this);
+    TrackBase::reset();
+    // Force overerrun condition to avoid false overrun callback until first data is
+    // read from buffer
+    mCblk->flowControlFlag = 1;
 }
 
 // ----------------------------------------------------------------------------
@@ -1294,7 +1491,9 @@
 {
 }
 
-AudioFlinger::RecordHandle::~RecordHandle() {}
+AudioFlinger::RecordHandle::~RecordHandle() {
+    stop();
+}
 
 status_t AudioFlinger::RecordHandle::start() {
     LOGV("RecordHandle::start()");
@@ -1318,10 +1517,8 @@
 
 // ----------------------------------------------------------------------------
 
-AudioFlinger::AudioRecordThread::AudioRecordThread(const sp<AudioFlinger>& audioFlinger) :
-    mAudioFlinger(audioFlinger),
-    mRecordTrack(0),
-    mInput(0),
+AudioFlinger::AudioRecordThread::AudioRecordThread(AudioHardwareInterface* audioHardware) :
+    mAudioHardware(audioHardware),
     mActive(false)
 {
 }
@@ -1333,108 +1530,123 @@
 bool AudioFlinger::AudioRecordThread::threadLoop()
 {
     LOGV("AudioRecordThread: start record loop");
+    AudioBufferProvider::Buffer buffer;
+    int inBufferSize = 0;
+    int inFrameCount = 0;
+    AudioStreamIn* input = 0;
 
+    mActive = 0;
+    
     // start recording
     while (!exitPending()) {
         if (!mActive) {
             mLock.lock();
             if (!mActive && !exitPending()) {
                 LOGV("AudioRecordThread: loop stopping");
+                if (input) {
+                    delete input;
+                    input = 0;
+                }
+                mRecordTrack.clear();
+
                 mWaitWorkCV.wait(mLock);
+               
                 LOGV("AudioRecordThread: loop starting");
+                if (mRecordTrack != 0) {
+                    input = mAudioHardware->openInputStream(mRecordTrack->format(), 
+                                            mRecordTrack->channelCount(), 
+                                            mRecordTrack->sampleRate(), 
+                                            &mStartStatus);
+                    if (input != 0) {
+                        inBufferSize = input->bufferSize();
+                        inFrameCount = inBufferSize/input->frameSize();                        
+                    }
+                } else {
+                    mStartStatus = NO_INIT;
+                }
+                if (mStartStatus !=NO_ERROR) {
+                    LOGW("record start failed, status %d", mStartStatus);
+                    mActive = false;
+                    mRecordTrack.clear();                    
+                }
+                mWaitWorkCV.signal();
             }
             mLock.unlock();
-        } else {
-            // promote strong ref so track isn't deleted while we access it
-            sp<RecordTrack> t = mRecordTrack.promote();
+        } else if (mRecordTrack != 0){
 
-            // if we lose the weak reference, client is gone.
-            if (t == 0) {
-                LOGV("AudioRecordThread: client deleted track");
-                break;
-            }
-
-            if (LIKELY(t->getNextBuffer(&mBuffer) == NO_ERROR)) {
-                if (mInput->read(mBuffer.raw, t->mBufferSize) < 0) {
+            buffer.frameCount = inFrameCount;
+            if (LIKELY(mRecordTrack->getNextBuffer(&buffer) == NO_ERROR)) {
+                LOGV("AudioRecordThread read: %d frames", buffer.frameCount);
+                if (input->read(buffer.raw, inBufferSize) < 0) {
                     LOGE("Error reading audio input");
                     sleep(1);
                 }
-                t->releaseBuffer(&mBuffer);
+                mRecordTrack->releaseBuffer(&buffer);
+                mRecordTrack->overflow();
             }
 
             // client isn't retrieving buffers fast enough
             else {
-                if (!t->setOverflow())
+                if (!mRecordTrack->setOverflow())
                     LOGW("AudioRecordThread: buffer overflow");
+                // Release the processor for a while before asking for a new buffer.
+                // This will give the application more chance to read from the buffer and
+                // clear the overflow.
+                usleep(5000);
             }
         }
-    };
+    }
 
-    // close hardware
-    close();
 
-    // delete this object - no more data references after this call
-    mAudioFlinger->endRecord();
+    if (input) {
+        delete input;
+    }
+    mRecordTrack.clear();
+    
     return false;
 }
 
-status_t AudioFlinger::AudioRecordThread::open(const sp<RecordTrack>& recordTrack, AudioStreamIn *input) {
-    LOGV("AudioRecordThread::open");
-    // check for record channel already open
-    AutoMutex lock(&mLock);
-    if (mRecordTrack != NULL) {
-        LOGE("Record channel already open");
-        return ALREADY_EXISTS;
-    }
-    mRecordTrack = recordTrack;
-    mInput = input;
-    return NO_ERROR;
-}
-
-status_t AudioFlinger::AudioRecordThread::start()
+status_t AudioFlinger::AudioRecordThread::start(RecordTrack* recordTrack)
 {
     LOGV("AudioRecordThread::start");
     AutoMutex lock(&mLock);
-    if (mActive) return -EBUSY;
+    mActive = true;
+    // If starting the active track, just reset mActive in case a stop
+    // was pending and exit
+    if (recordTrack == mRecordTrack.get()) return NO_ERROR;
 
-    sp<RecordTrack> t = mRecordTrack.promote();
-    if (t == 0) return UNKNOWN_ERROR;
+    if (mRecordTrack != 0) return -EBUSY;
+
+    mRecordTrack = recordTrack;
 
     // signal thread to start
     LOGV("Signal record thread");
-    mActive = true;
     mWaitWorkCV.signal();
-    return NO_ERROR;
+    mWaitWorkCV.wait(mLock);
+    LOGV("Record started, status %d", mStartStatus);
+    return mStartStatus;
 }
 
-void AudioFlinger::AudioRecordThread::stop() {
+void AudioFlinger::AudioRecordThread::stop(RecordTrack* recordTrack) {
     LOGV("AudioRecordThread::stop");
     AutoMutex lock(&mLock);
-    if (mActive) {
+    if (mActive && (recordTrack == mRecordTrack.get())) {
         mActive = false;
-        mWaitWorkCV.signal();
     }
 }
 
 void AudioFlinger::AudioRecordThread::exit()
 {
     LOGV("AudioRecordThread::exit");
-    AutoMutex lock(&mLock);
-    requestExit();
-    mWaitWorkCV.signal();
+    {
+        AutoMutex lock(&mLock);
+        requestExit();
+        mWaitWorkCV.signal();
+    }
+    requestExitAndWait();
 }
 
 
-status_t AudioFlinger::AudioRecordThread::close()
-{
-    LOGV("AudioRecordThread::close");
-    AutoMutex lock(&mLock);
-    if (!mInput) return NO_INIT;
-    delete mInput;
-    mInput = 0;
-    return NO_ERROR;
-}
-
 status_t AudioFlinger::onTransact(
         uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
 {
diff --git a/libs/audioflinger/AudioFlinger.h b/libs/audioflinger/AudioFlinger.h
index 8c02617..d9f7b49 100644
--- a/libs/audioflinger/AudioFlinger.h
+++ b/libs/audioflinger/AudioFlinger.h
@@ -43,13 +43,17 @@
 class AudioMixer;
 class AudioBuffer;
 
+
 // ----------------------------------------------------------------------------
 
 #define LIKELY( exp )       (__builtin_expect( (exp) != 0, true  ))
 #define UNLIKELY( exp )     (__builtin_expect( (exp) != 0, false ))
 
+
 // ----------------------------------------------------------------------------
 
+static const nsecs_t kStandbyTimeInNsecs = seconds(3);
+
 class AudioFlinger : public BnAudioFlinger, protected Thread
 {
 public:
@@ -69,13 +73,16 @@
                                 uint32_t sampleRate,
                                 int format,
                                 int channelCount,
-                                int bufferCount,
-                                uint32_t flags);
+                                int frameCount,
+                                uint32_t flags,
+                                const sp<IMemory>& sharedBuffer,
+                                status_t *status);
 
     virtual     uint32_t    sampleRate() const;
     virtual     int         channelCount() const;
     virtual     int         format() const;
     virtual     size_t      frameCount() const;
+    virtual     size_t      latency() const;
 
     virtual     status_t    setMasterVolume(float value);
     virtual     status_t    setMasterMute(bool muted);
@@ -128,8 +135,9 @@
                                 uint32_t sampleRate,
                                 int format,
                                 int channelCount,
-                                int bufferCount,
-                                uint32_t flags);
+                                int frameCount,
+                                uint32_t flags,
+                                status_t *status);
 
     virtual     status_t    onTransact(
                                 uint32_t code,
@@ -141,12 +149,15 @@
                             AudioFlinger();
     virtual                 ~AudioFlinger();
     
+    void                    setOutput(AudioStreamOut* output);
+    size_t                  getOutputFrameCount(AudioStreamOut* output);
+
     // Internal dump utilites.
     status_t dumpPermissionDenial(int fd, const Vector<String16>& args);
     status_t dumpClients(int fd, const Vector<String16>& args);
     status_t dumpTracks(int fd, const Vector<String16>& args);
     status_t dumpInternals(int fd, const Vector<String16>& args);
-    
+
     // --- Client ---
     class Client : public RefBase {
     public:
@@ -183,17 +194,17 @@
         };
 
         enum track_flags {
-            STEPSERVER_FAILED = 0x01   //  StepServer could not acquire cblk->lock mutex 
+            STEPSERVER_FAILED = 0x01   //  StepServer could not acquire cblk->lock mutex
         };
-        
+
                             TrackBase(  const sp<AudioFlinger>& audioFlinger,
                                     const sp<Client>& client,
                                     int streamType,
                                     uint32_t sampleRate,
                                     int format,
                                     int channelCount,
-                                    int bufferCount,
-                                    int bufferSize);
+                                    int frameCount,
+                                    const sp<IMemory>& sharedBuffer);
                             ~TrackBase();
 
         virtual status_t    start() = 0;
@@ -203,6 +214,7 @@
     protected:
         friend class AudioFlinger;
         friend class RecordHandle;
+        friend class AudioRecordThread;
 
                             TrackBase(const TrackBase&);
                             TrackBase& operator = (const TrackBase&);
@@ -222,19 +234,11 @@
             return mFormat;
         }
 
-        int channelCount() const {
-            return mChannelCount;
-        }
-
-        int bufferCount() const {
-            return mBufferCount;
-        }
+        int channelCount() const ;
 
         int sampleRate() const;
 
-        void* getBuffer(int n) const {
-            return (char*)mBuffers + n * mBufferSize;
-        }
+        void* getBuffer(uint32_t offset, uint32_t frames) const;
 
         int name() const {
             return mName;
@@ -256,16 +260,15 @@
         sp<IMemory>         mCblkMemory;
         audio_track_cblk_t* mCblk;
         int                 mStreamType;
-        uint8_t             mFormat;
-        uint8_t             mChannelCount;
-        uint8_t             mBufferCount;
-        uint8_t             mFlags;
-        void*               mBuffers;
-        size_t              mBufferSize;
+        void*               mBuffer;
+        void*               mBufferEnd;
+        uint32_t            mFrameCount;
         int                 mName;
         // we don't really need a lock for these
         int                 mState;
         int                 mClientTid;
+        uint8_t             mFormat;
+        uint8_t             mFlags;
     };
 
     // playback track
@@ -277,8 +280,8 @@
                                     uint32_t sampleRate,
                                     int format,
                                     int channelCount,
-                                    int bufferCount,
-                                    int bufferSize);
+                                    int frameCount,
+                                    const sp<IMemory>& sharedBuffer);
                             ~Track();
 
                 void        dump(char* buffer, size_t size);
@@ -312,7 +315,7 @@
             return mState == PAUSED;
         }
 
-        bool isReady(uint32_t u, int32_t s) const;
+        bool isReady() const;
 
         void setPaused() { mState = PAUSED; }
         void reset();
@@ -324,6 +327,8 @@
         enum {FS_FILLING, FS_FILLED, FS_ACTIVE};
         mutable uint8_t     mFillingUpStatus;
         int8_t              mRetryCount;
+        sp<IMemory>         mSharedBuffer;
+        bool                mResetDone;
     };  // end of Track
 
     friend class AudioBuffer;
@@ -366,8 +371,8 @@
                 void        remove_track_l(wp<Track> track, int name);
                 void        destroyTrack(const sp<Track>& track);
 
-                AudioMixer& audioMixer() {
-                    return *mAudioMixer;
+                AudioMixer* audioMixer() {
+                    return mAudioMixer;
                 }
 
     // record track
@@ -379,8 +384,7 @@
                                     uint32_t sampleRate,
                                     int format,
                                     int channelCount,
-                                    int bufferCount,
-                                    int bufferSize);
+                                    int frameCount);
                             ~RecordTrack();
 
         virtual status_t    start();
@@ -419,43 +423,34 @@
     class AudioRecordThread : public Thread
     {
     public:
-        AudioRecordThread(const sp<AudioFlinger>& audioFlinger);
+        AudioRecordThread(AudioHardwareInterface* audioHardware);
         virtual             ~AudioRecordThread();
         virtual bool        threadLoop();
         virtual status_t    readyToRun() { return NO_ERROR; }
         virtual void        onFirstRef() {}
 
-                status_t    open(const sp<RecordTrack>& recordTrack, AudioStreamIn *input);
-                status_t    start();
-                void        stop();
-                status_t    close();
+                status_t    start(RecordTrack* recordTrack);
+                void        stop(RecordTrack* recordTrack);
                 void        exit();
-                
-                bool        isOpen() { return bool(mRecordTrack != NULL); }
 
     private:
                 AudioRecordThread();
-                sp<AudioFlinger>                    mAudioFlinger;
-                wp<RecordTrack>                     mRecordTrack;
-                AudioStreamIn*                      mInput;
+                AudioHardwareInterface              *mAudioHardware;
+                sp<RecordTrack>                     mRecordTrack;
                 Mutex                               mLock;
                 Condition                           mWaitWorkCV;
-                AudioBufferProvider::Buffer         mBuffer;
                 volatile bool                       mActive;
+                status_t                            mStartStatus;
     };
 
     friend class AudioRecordThread;
 
-                sp<AudioRecordThread> audioRecordThread();
-                void        endRecord();
-                status_t    startRecord();
-                void        stopRecord();
-                void        exitRecord();
-                
-                AudioHardwareInterface* audioHardware() { return mAudioHardware; }
+                status_t    startRecord(RecordTrack* recordTrack);
+                void        stopRecord(RecordTrack* recordTrack);
 
     mutable     Mutex                                       mHardwareLock;
     mutable     Mutex                                       mLock;
+    mutable     Mutex                                       mOutputLock;
     mutable     Condition                                   mWaitWorkCV;
                 DefaultKeyedVector< pid_t, wp<Client> >     mClients;
                 SortedVector< wp<Track> >                   mActiveTracks;
@@ -465,15 +460,19 @@
                 bool                                mMasterMute;
                 stream_type_t                       mStreamTypes[AudioTrack::NUM_STREAM_TYPES];
 
+                AudioMixer*                         mHardwareAudioMixer;
+                AudioMixer*                         mA2dpAudioMixer;
                 AudioMixer*                         mAudioMixer;
                 AudioHardwareInterface*             mAudioHardware;
+                AudioHardwareInterface*             mA2dpAudioInterface;
+                AudioStreamOut*                     mHardwareOutput;
+                AudioStreamOut*                     mA2dpOutput;
                 AudioStreamOut*                     mOutput;
                 sp<AudioRecordThread>               mAudioRecordThread;
                 uint32_t                            mSampleRate;
                 size_t                              mFrameCount;
                 int                                 mChannelCount;
                 int                                 mFormat;
-                int                                 mMixBufferSize;
                 int16_t*                            mMixBuffer;
     mutable     int                                 mHardwareStatus;
                 nsecs_t                             mLastWriteTime;
diff --git a/libs/audioflinger/AudioHardwareGeneric.cpp b/libs/audioflinger/AudioHardwareGeneric.cpp
index b1e5b7f..e6a163b 100644
--- a/libs/audioflinger/AudioHardwareGeneric.cpp
+++ b/libs/audioflinger/AudioHardwareGeneric.cpp
@@ -2,16 +2,16 @@
 **
 ** Copyright 2007, 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 
+** 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 
+**     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 
+** 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.
 */
 
@@ -68,16 +68,25 @@
 }
 
 AudioStreamOut* AudioHardwareGeneric::openOutputStream(
-        int format, int channelCount, uint32_t sampleRate)
+        int format, int channelCount, uint32_t sampleRate, status_t *status)
 {
     AutoMutex lock(mLock);
 
     // only one output stream allowed
-    if (mOutput) return 0;
+    if (mOutput) {
+        if (status) {
+            *status = INVALID_OPERATION;
+        }
+        return 0;
+    }
 
     // create new output stream
     AudioStreamOutGeneric* out = new AudioStreamOutGeneric();
-    if (out->set(this, mFd, format, channelCount, sampleRate) == NO_ERROR) {
+    status_t lStatus = out->set(this, mFd, format, channelCount, sampleRate);
+    if (status) {
+        *status = lStatus;
+    }
+    if (lStatus == NO_ERROR) {
         mOutput = out;
     } else {
         delete out;
@@ -90,16 +99,25 @@
 }
 
 AudioStreamIn* AudioHardwareGeneric::openInputStream(
-        int format, int channelCount, uint32_t sampleRate)
+        int format, int channelCount, uint32_t sampleRate, status_t *status)
 {
     AutoMutex lock(mLock);
 
     // only one input stream allowed
-    if (mInput) return 0;
+    if (mInput) {
+        if (status) {
+            *status = INVALID_OPERATION;
+        }
+        return 0;
+    }
 
     // create new output stream
     AudioStreamInGeneric* in = new AudioStreamInGeneric();
-    if (in->set(this, mFd, format, channelCount, sampleRate) == NO_ERROR) {
+    status_t lStatus = in->set(this, mFd, format, channelCount, sampleRate);
+    if (status) {
+        *status = lStatus;
+    }
+    if (lStatus == NO_ERROR) {
         mInput = in;
     } else {
         delete in;
diff --git a/libs/audioflinger/AudioHardwareGeneric.h b/libs/audioflinger/AudioHardwareGeneric.h
index 10cc45d..a2342cd 100644
--- a/libs/audioflinger/AudioHardwareGeneric.h
+++ b/libs/audioflinger/AudioHardwareGeneric.h
@@ -2,16 +2,16 @@
 **
 ** Copyright 2007, 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 
+** 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 
+**     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 
+** 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.
 */
 
@@ -23,7 +23,7 @@
 
 #include <utils/threads.h>
 
-#include <hardware/AudioHardwareInterface.h>
+#include <hardware/AudioHardwareBase.h>
 
 namespace android {
 
@@ -47,6 +47,7 @@
     virtual size_t      bufferSize() const { return 4096; }
     virtual int         channelCount() const { return 2; }
     virtual int         format() const { return AudioSystem::PCM_16_BIT; }
+    virtual uint32_t    latency() const { return 0; }
     virtual status_t    setVolume(float volume) { return INVALID_OPERATION; }
     virtual ssize_t     write(const void* buffer, size_t bytes);
     virtual status_t    dump(int fd, const Vector<String16>& args);
@@ -76,6 +77,7 @@
     virtual status_t    setGain(float gain) { return INVALID_OPERATION; }
     virtual ssize_t     read(void* buffer, ssize_t bytes);
     virtual status_t    dump(int fd, const Vector<String16>& args);
+    virtual status_t    standby() { return NO_ERROR; }
 
 private:
     AudioHardwareGeneric *mAudioHardware;
@@ -84,7 +86,7 @@
 };
 
 
-class AudioHardwareGeneric : public  AudioHardwareInterface
+class AudioHardwareGeneric : public AudioHardwareBase
 {
 public:
                         AudioHardwareGeneric();
@@ -105,12 +107,14 @@
     virtual AudioStreamOut* openOutputStream(
             int format=0,
             int channelCount=0,
-            uint32_t sampleRate=0);
+            uint32_t sampleRate=0,
+            status_t *status=0);
 
     virtual AudioStreamIn* openInputStream(
             int format,
             int channelCount,
-            uint32_t sampleRate);
+            uint32_t sampleRate,
+            status_t *status);
 
             void            closeOutputStream(AudioStreamOutGeneric* out);
             void            closeInputStream(AudioStreamInGeneric* in);
@@ -120,7 +124,7 @@
 
 private:
     status_t                dumpInternals(int fd, const Vector<String16>& args);
-    
+
     Mutex                   mLock;
     AudioStreamOutGeneric   *mOutput;
     AudioStreamInGeneric    *mInput;
diff --git a/libs/audioflinger/AudioHardwareInterface.cpp b/libs/audioflinger/AudioHardwareInterface.cpp
index 7387b3d..ac76a19 100644
--- a/libs/audioflinger/AudioHardwareInterface.cpp
+++ b/libs/audioflinger/AudioHardwareInterface.cpp
@@ -26,7 +26,7 @@
 #include "AudioHardwareStub.h"
 #include "AudioHardwareGeneric.h"
 
-// #define DUMP_FLINGER_OUT        // if defined allows recording samples in a file
+//#define DUMP_FLINGER_OUT        // if defined allows recording samples in a file
 #ifdef DUMP_FLINGER_OUT
 #include "AudioDumpInterface.h"
 #endif
@@ -54,6 +54,7 @@
     "SPEAKER ",
     "BLUETOOTH ",
     "HEADSET "
+    "BLUETOOTH_A2DP "
 };
 static const char* routeNone = "NONE";
 
@@ -115,24 +116,10 @@
     // This code adds a record of buffers in a file to write calls made by AudioFlinger.
     // It replaces the current AudioHardwareInterface object by an intermediate one which
     // will record buffers in a file (after sending them to hardware) for testing purpose.
-    // This feature is enabled by defining symbol DUMP_FLINGER_OUT and setting environement
-    // "audioflinger.dump = 1". The output file is "tmp/FlingerOut.pcm". Pause are not recorded
-    // in the file.
+    // This feature is enabled by defining symbol DUMP_FLINGER_OUT.
+    // The output file is FLINGER_DUMP_NAME. Pause are not recorded in the file.
     
-    // read dump mode
-    property_get("audioflinger.dump", value, "0");
-    switch(value[0]) {
-    case '1':
-        LOGV("Dump mode");
-        hw = new AudioDumpInterface(hw);    // replace interface
-        return hw;
-        break;
-    case '0':
-    default:
-        LOGV("No Dump mode");
-        return hw;
-        break;
-    }
+    hw = new AudioDumpInterface(hw);    // replace interface
 #endif
     return hw;
 }
@@ -143,7 +130,7 @@
 
 AudioStreamIn::~AudioStreamIn() {}
 
-AudioHardwareInterface::AudioHardwareInterface()
+AudioHardwareBase::AudioHardwareBase()
 {
     // force a routing update on initialization
     memset(&mRoutes, 0, sizeof(mRoutes));
@@ -151,7 +138,7 @@
 }
 
 // generics for audio routing - the real work is done in doRouting
-status_t AudioHardwareInterface::setRouting(int mode, uint32_t routes)
+status_t AudioHardwareBase::setRouting(int mode, uint32_t routes)
 {
 #if LOG_ROUTING_CALLS
     LOGD("setRouting: mode=%s, routes=[%s]", displayMode(mode), displayRoutes(routes));
@@ -173,7 +160,7 @@
     return doRouting();
 }
 
-status_t AudioHardwareInterface::getRouting(int mode, uint32_t* routes)
+status_t AudioHardwareBase::getRouting(int mode, uint32_t* routes)
 {
     if (mode == AudioSystem::MODE_CURRENT)
         mode = mMode;
@@ -187,7 +174,7 @@
     return NO_ERROR;
 }
 
-status_t AudioHardwareInterface::setMode(int mode)
+status_t AudioHardwareBase::setMode(int mode)
 {
 #if LOG_ROUTING_CALLS
     LOGD("setMode(%s)", displayMode(mode));
@@ -204,25 +191,45 @@
     return doRouting();
 }
 
-status_t AudioHardwareInterface::getMode(int* mode)
+status_t AudioHardwareBase::getMode(int* mode)
 {
     // Implement: set audio routing
     *mode = mMode;
     return NO_ERROR;
 }
 
-status_t AudioHardwareInterface::setParameter(const char* key, const char* value)
+status_t AudioHardwareBase::setParameter(const char* key, const char* value)
 {
     // default implementation is to ignore
     return NO_ERROR;
 }
 
-status_t AudioHardwareInterface::dumpState(int fd, const Vector<String16>& args)
+
+// default implementation
+size_t AudioHardwareBase::getInputBufferSize(uint32_t sampleRate, int format, int channelCount)
+{
+    if (sampleRate != 8000) {
+        LOGW("getInputBufferSize bad sampling rate: %d", sampleRate);
+        return 0;
+    }
+    if (format != AudioSystem::PCM_16_BIT) {
+        LOGW("getInputBufferSize bad format: %d", format);
+        return 0;
+    }
+    if (channelCount != 1) {
+        LOGW("getInputBufferSize bad channel count: %d", channelCount);
+        return 0;
+    }
+
+    return 320;
+}
+
+status_t AudioHardwareBase::dumpState(int fd, const Vector<String16>& args)
 {
     const size_t SIZE = 256;
     char buffer[SIZE];
     String8 result;
-    snprintf(buffer, SIZE, "AudioHardwareInterface::dumpState\n");
+    snprintf(buffer, SIZE, "AudioHardwareBase::dumpState\n");
     result.append(buffer);
     snprintf(buffer, SIZE, "\tmMode: %d\n", mMode);
     result.append(buffer);
diff --git a/libs/audioflinger/AudioHardwareStub.cpp b/libs/audioflinger/AudioHardwareStub.cpp
index 0046db8..d309902 100644
--- a/libs/audioflinger/AudioHardwareStub.cpp
+++ b/libs/audioflinger/AudioHardwareStub.cpp
@@ -2,16 +2,16 @@
 **
 ** Copyright 2007, 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 
+** 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 
+**     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 
+** 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.
 */
 
@@ -47,20 +47,28 @@
 }
 
 AudioStreamOut* AudioHardwareStub::openOutputStream(
-        int format, int channelCount, uint32_t sampleRate)
+        int format, int channelCount, uint32_t sampleRate, status_t *status)
 {
     AudioStreamOutStub* out = new AudioStreamOutStub();
-    if (out->set(format, channelCount, sampleRate) == NO_ERROR)
+    status_t lStatus = out->set(format, channelCount, sampleRate);
+    if (status) {
+        *status = lStatus;
+    }
+    if (lStatus == NO_ERROR)
         return out;
     delete out;
     return 0;
 }
 
 AudioStreamIn* AudioHardwareStub::openInputStream(
-        int format, int channelCount, uint32_t sampleRate)
+        int format, int channelCount, uint32_t sampleRate, status_t *status)
 {
     AudioStreamInStub* in = new AudioStreamInStub();
-    if (in->set(format, channelCount, sampleRate) == NO_ERROR)
+    status_t lStatus = in->set(format, channelCount, sampleRate);
+    if (status) {
+        *status = lStatus;
+    }
+    if (lStatus == NO_ERROR)
         return in;
     delete in;
     return 0;
@@ -102,7 +110,7 @@
     if (format == 0) format = AudioSystem::PCM_16_BIT;
     if (channels == 0) channels = channelCount();
     if (rate == 0) rate = sampleRate();
-    
+
     if ((format == AudioSystem::PCM_16_BIT) &&
             (channels == channelCount()) &&
             (rate == sampleRate()))
@@ -129,7 +137,7 @@
     snprintf(buffer, SIZE, "\tformat: %d\n", format());
     result.append(buffer);
     ::write(fd, result.string(), result.size());
-    return NO_ERROR; 
+    return NO_ERROR;
 }
 
 // ----------------------------------------------------------------------------
diff --git a/libs/audioflinger/AudioHardwareStub.h b/libs/audioflinger/AudioHardwareStub.h
index 1a61552..5316d60 100644
--- a/libs/audioflinger/AudioHardwareStub.h
+++ b/libs/audioflinger/AudioHardwareStub.h
@@ -2,16 +2,16 @@
 **
 ** Copyright 2007, 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 
+** 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 
+**     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 
+** 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.
 */
 
@@ -21,7 +21,7 @@
 #include <stdint.h>
 #include <sys/types.h>
 
-#include <hardware/AudioHardwareInterface.h>
+#include <hardware/AudioHardwareBase.h>
 
 namespace android {
 
@@ -34,6 +34,7 @@
     virtual size_t      bufferSize() const { return 4096; }
     virtual int         channelCount() const { return 2; }
     virtual int         format() const { return AudioSystem::PCM_16_BIT; }
+    virtual uint32_t    latency() const { return 0; }
     virtual status_t    setVolume(float volume) { return NO_ERROR; }
     virtual ssize_t     write(const void* buffer, size_t bytes);
     virtual status_t    dump(int fd, const Vector<String16>& args);
@@ -49,9 +50,10 @@
     virtual status_t    setGain(float gain) { return NO_ERROR; }
     virtual ssize_t     read(void* buffer, ssize_t bytes);
     virtual status_t    dump(int fd, const Vector<String16>& args);
+    virtual status_t    standby() { return NO_ERROR; }
 };
 
-class AudioHardwareStub : public  AudioHardwareInterface
+class AudioHardwareStub : public  AudioHardwareBase
 {
 public:
                         AudioHardwareStub();
@@ -72,12 +74,14 @@
     virtual AudioStreamOut* openOutputStream(
                                 int format=0,
                                 int channelCount=0,
-                                uint32_t sampleRate=0);
+                                uint32_t sampleRate=0,
+                                status_t *status=0);
 
     virtual AudioStreamIn* openInputStream(
                                 int format,
                                 int channelCount,
-                                uint32_t sampleRate);
+                                uint32_t sampleRate,
+                                status_t *status);
 
 protected:
     virtual status_t    doRouting() { return NO_ERROR; }
diff --git a/libs/audioflinger/AudioMixer.cpp b/libs/audioflinger/AudioMixer.cpp
index 9f1b17f..b03467f 100644
--- a/libs/audioflinger/AudioMixer.cpp
+++ b/libs/audioflinger/AudioMixer.cpp
@@ -2,16 +2,16 @@
 **
 ** Copyright 2007, 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 
+** 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 
+**     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 
+** 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.
 */
 
@@ -247,8 +247,8 @@
 void AudioMixer::track_t::adjustVolumeRamp()
 {
     for (int i=0 ; i<2 ; i++) {
-        if (((volumeInc[i]>0) && ((prevVolume[i]>>16) >= volume[i])) ||
-            ((volumeInc[i]<0) && ((prevVolume[i]>>16) <= volume[i]))) {
+        if (((volumeInc[i]>0) && (((prevVolume[i]+volumeInc[i])>>16) >= volume[i])) ||
+            ((volumeInc[i]<0) && (((prevVolume[i]+volumeInc[i])>>16) <= volume[i]))) {
             volumeInc[i] = 0;
             prevVolume[i] = volume[i]<<16;
         }
@@ -307,7 +307,7 @@
         n |= NEEDS_CHANNEL_1 + t.channelCount - 1;
         n |= NEEDS_FORMAT_16;
         n |= t.doesResample() ? NEEDS_RESAMPLE_ENABLED : NEEDS_RESAMPLE_DISABLED;
-        
+       
         if (t.volumeInc[0]|t.volumeInc[1]) {
             volumeRamp = 1;
         } else if (!t.doesResample() && t.volumeRL == 0) {
@@ -370,7 +370,7 @@
 
    state->hook(state, output);
 
-   // Now that the volume ramp has been done, set optimal state and 
+   // Now that the volume ramp has been done, set optimal state and
    // track hooks for subsequent mixer process
    if (countActiveTracks) {
        int allMuted = 1;
@@ -397,7 +397,7 @@
    }
 }
 
-static inline 
+static inline
 int32_t mulAdd(int16_t in, int16_t v, int32_t a)
 {
 #if defined(__arm__) && !defined(__thumb__)
@@ -412,7 +412,7 @@
 #endif
 }
 
-static inline 
+static inline
 int32_t mul(int16_t in, int16_t v)
 {
 #if defined(__arm__) && !defined(__thumb__)
@@ -427,7 +427,7 @@
 #endif
 }
 
-static inline 
+static inline
 int32_t mulAddRL(int left, uint32_t inRL, uint32_t vRL, int32_t a)
 {
 #if defined(__arm__) && !defined(__thumb__)
@@ -453,7 +453,7 @@
 #endif
 }
 
-static inline 
+static inline
 int32_t mulRL(int left, uint32_t inRL, uint32_t vRL)
 {
 #if defined(__arm__) && !defined(__thumb__)
@@ -513,7 +513,7 @@
     //LOGD("[0] %p: inc=%f, v0=%f, v1=%d, final=%f, count=%d",
     //        t, vlInc/65536.0f, vl/65536.0f, t->volume[0],
     //       (vl + vlInc*frameCount)/65536.0f, frameCount);
-    
+   
     // ramp volume
     do {
         *out++ += (vl >> 16) * (*temp++ >> 12);
@@ -548,7 +548,7 @@
             vl += vlInc;
             vr += vrInc;
         } while (--frameCount);
-        
+       
         t->prevVolume[0] = vl;
         t->prevVolume[1] = vr;
         t->adjustVolumeRamp();
@@ -590,7 +590,7 @@
             vl += vlInc;
             vr += vrInc;
         } while (--frameCount);
-        
+       
         t->prevVolume[0] = vl;
         t->prevVolume[1] = vr;
         t->adjustVolumeRamp();
@@ -609,7 +609,7 @@
     t->in = in;
 }
 
-inline 
+inline
 void AudioMixer::ditherAndClamp(int32_t* out, int32_t const *sums, size_t c)
 {
     for (size_t i=0 ; i<c ; i++) {
@@ -633,8 +633,12 @@
         const int i = 31 - __builtin_clz(en);
         en &= ~(1<<i);
         track_t& t = state->tracks[i];
-        t.bufferProvider->getNextBuffer(&t.buffer);
-        if (t.buffer.raw) {
+        size_t outFrames = state->frameCount;
+        while (outFrames) {
+            t.buffer.frameCount = outFrames;
+            t.bufferProvider->getNextBuffer(&t.buffer);
+            if (!t.buffer.raw) break;
+            outFrames -= t.buffer.frameCount;
             t.bufferProvider->releaseBuffer(&t.buffer);
         }
     }
@@ -652,12 +656,14 @@
         const int i = 31 - __builtin_clz(en);
         en &= ~(1<<i);
         track_t& t = state->tracks[i];
+        t.buffer.frameCount = state->frameCount;
         t.bufferProvider->getNextBuffer(&t.buffer);
+        t.frameCount = t.buffer.frameCount;
         t.in = t.buffer.raw;
         // t.in == NULL can happen if the track was flushed just after having
         // been enabled for mixing.
         if (t.in == NULL)
-            enabledTracks &= ~(1<<i); 
+            enabledTracks &= ~(1<<i);
     }
 
     // this assumes output 16 bits stereo, no resampling
@@ -671,12 +677,31 @@
             const int i = 31 - __builtin_clz(en);
             en &= ~(1<<i);
             track_t& t = state->tracks[i];
-            (t.hook)(&t, outTemp, BLOCKSIZE, state->resampleTemp);
+            size_t outFrames = BLOCKSIZE;
+           
+            while (outFrames) {
+                size_t inFrames = (t.frameCount > outFrames)?outFrames:t.frameCount;
+                if (inFrames) {
+                    (t.hook)(&t, outTemp + (BLOCKSIZE-outFrames)*MAX_NUM_CHANNELS, inFrames, state->resampleTemp);
+                    t.frameCount -= inFrames;
+                    outFrames -= inFrames;
+                }
+                if (t.frameCount == 0 && outFrames) {
+                    t.bufferProvider->releaseBuffer(&t.buffer);
+                    t.buffer.frameCount = numFrames - (BLOCKSIZE - outFrames);
+                    t.bufferProvider->getNextBuffer(&t.buffer);
+                    t.in = t.buffer.raw;
+                    if (t.in == NULL) {
+                        enabledTracks &= ~(1<<i);
+                        break;
+                    }
+                    t.frameCount = t.buffer.frameCount;
+                 }
+            }
         }
 
         ditherAndClamp(out, outTemp, BLOCKSIZE);
         out += BLOCKSIZE;
-
         numFrames -= BLOCKSIZE;
     } while (numFrames);
 
@@ -713,12 +738,19 @@
         if ((t.needs & NEEDS_RESAMPLE__MASK) == NEEDS_RESAMPLE_ENABLED) {
             (t.hook)(&t, outTemp, numFrames, state->resampleTemp);
         } else {
-            t.bufferProvider->getNextBuffer(&t.buffer);
-            t.in = t.buffer.raw;
-            // t.in == NULL can happen if the track was flushed just after having
-            // been enabled for mixing.
-            if (t.in) {
-                (t.hook)(&t, outTemp, numFrames, state->resampleTemp);
+
+            size_t outFrames = numFrames;
+           
+            while (outFrames) {
+                t.buffer.frameCount = outFrames;
+                t.bufferProvider->getNextBuffer(&t.buffer);
+                t.in = t.buffer.raw;
+                // t.in == NULL can happen if the track was flushed just after having
+                // been enabled for mixing.
+                if (t.in == NULL) break;
+
+                (t.hook)(&t, outTemp + (numFrames-outFrames)*MAX_NUM_CHANNELS, t.buffer.frameCount, state->resampleTemp);
+                outFrames -= t.buffer.frameCount;
                 t.bufferProvider->releaseBuffer(&t.buffer);
             }
         }
@@ -734,45 +766,51 @@
     const track_t& t = state->tracks[i];
 
     AudioBufferProvider::Buffer& b(t.buffer);
-    t.bufferProvider->getNextBuffer(&b);
-    int16_t const *in = t.buffer.i16;
-
-    // in == NULL can happen if the track was flushed just after having
-    // been enabled for mixing.
-    if (in == NULL) {
-        memset(output, 0, state->frameCount*MAX_NUM_CHANNELS*sizeof(int16_t));
-        return;
-    }
-    
+   
     int32_t* out = static_cast<int32_t*>(output);
     size_t numFrames = state->frameCount;
+  
     const int16_t vl = t.volume[0];
     const int16_t vr = t.volume[1];
     const uint32_t vrl = t.volumeRL;
-    if (UNLIKELY(uint32_t(vl) > UNITY_GAIN || uint32_t(vr) > UNITY_GAIN)) {
-        // volume is boosted, so we might need to clamp even though
-        // we process only one track.
-        do {
-            uint32_t rl = *reinterpret_cast<uint32_t const *>(in);
-            in += 2;
-            int32_t l = mulRL(1, rl, vrl) >> 12;
-            int32_t r = mulRL(0, rl, vrl) >> 12;
-            // clamping...
-            l = clamp16(l);
-            r = clamp16(r);
-            *out++ = (r<<16) | (l & 0xFFFF);
-        } while (--numFrames);
-    } else {
-        do {
-            uint32_t rl = *reinterpret_cast<uint32_t const *>(in);
-            in += 2;
-            int32_t l = mulRL(1, rl, vrl) >> 12;
-            int32_t r = mulRL(0, rl, vrl) >> 12;
-            *out++ = (r<<16) | (l & 0xFFFF);
-        } while (--numFrames);
-    }
+    while (numFrames) {
+        b.frameCount = numFrames;
+        t.bufferProvider->getNextBuffer(&b);
+        int16_t const *in = b.i16;
 
-    t.bufferProvider->releaseBuffer(&b);
+        // in == NULL can happen if the track was flushed just after having
+        // been enabled for mixing.
+        if (in == NULL) {
+            memset(out, 0, numFrames*MAX_NUM_CHANNELS*sizeof(int16_t));
+            return;
+        }
+        size_t outFrames = b.frameCount;
+       
+        if (UNLIKELY(uint32_t(vl) > UNITY_GAIN || uint32_t(vr) > UNITY_GAIN)) {
+            // volume is boosted, so we might need to clamp even though
+            // we process only one track.
+            do {
+                uint32_t rl = *reinterpret_cast<uint32_t const *>(in);
+                in += 2;
+                int32_t l = mulRL(1, rl, vrl) >> 12;
+                int32_t r = mulRL(0, rl, vrl) >> 12;
+                // clamping...
+                l = clamp16(l);
+                r = clamp16(r);
+                *out++ = (r<<16) | (l & 0xFFFF);
+            } while (--outFrames);
+        } else {
+            do {
+                uint32_t rl = *reinterpret_cast<uint32_t const *>(in);
+                in += 2;
+                int32_t l = mulRL(1, rl, vrl) >> 12;
+                int32_t r = mulRL(0, rl, vrl) >> 12;
+                *out++ = (r<<16) | (l & 0xFFFF);
+            } while (--outFrames);
+        }
+        numFrames -= b.frameCount;
+        t.bufferProvider->releaseBuffer(&b);
+    }
 }
 
 // 2 tracks is also a common case
@@ -784,71 +822,89 @@
     i = 31 - __builtin_clz(en);
     const track_t& t0 = state->tracks[i];
     AudioBufferProvider::Buffer& b0(t0.buffer);
-    t0.bufferProvider->getNextBuffer(&b0);
 
     en &= ~(1<<i);
     i = 31 - __builtin_clz(en);
     const track_t& t1 = state->tracks[i];
     AudioBufferProvider::Buffer& b1(t1.buffer);
-    t1.bufferProvider->getNextBuffer(&b1);
-
+   
     int16_t const *in0;
     const int16_t vl0 = t0.volume[0];
     const int16_t vr0 = t0.volume[1];
+    size_t frameCount0 = 0;
+  
     int16_t const *in1;
     const int16_t vl1 = t1.volume[0];
     const int16_t vr1 = t1.volume[1];
-    size_t numFrames = state->frameCount;
+    size_t frameCount1 = 0;
+   
     int32_t* out = static_cast<int32_t*>(output);
+    size_t numFrames = state->frameCount;
+    int16_t const *buff = NULL;
 
-    // t0/1.buffer.i16 == NULL can happen if the track was flushed just after having
-    // been enabled for mixing.
-    if (t0.buffer.i16 != NULL) {
-        in0 = t0.buffer.i16;
-        if (t1.buffer.i16 != NULL) {
-            in1 = t1.buffer.i16;
-        } else {
-            in1 = new int16_t[MAX_NUM_CHANNELS * state->frameCount];
-            memset((void *)in1, 0, state->frameCount*MAX_NUM_CHANNELS*sizeof(int16_t));
+  
+    while (numFrames) {
+   
+        if (frameCount0 == 0) {
+            b0.frameCount = numFrames;
+            t0.bufferProvider->getNextBuffer(&b0);
+            if (b0.i16 == NULL) {
+                if (buff == NULL) {
+                    buff = new int16_t[MAX_NUM_CHANNELS * state->frameCount];
+                }
+                in0 = buff;
+                b0.frameCount = numFrames;
+            } else {
+                in0 = b0.i16;
+            }
+            frameCount0 = b0.frameCount;
         }
-    } else {
-        in0 = new int16_t[MAX_NUM_CHANNELS * state->frameCount];
-        memset((void *)in0, 0, state->frameCount*MAX_NUM_CHANNELS*sizeof(int16_t));
-        if (t1.buffer.i16 != NULL) {
-            in1 = t1.buffer.i16;
-        } else {
-            in1 = in0;
+        if (frameCount1 == 0) {
+            b1.frameCount = numFrames;
+            t1.bufferProvider->getNextBuffer(&b1);
+            if (b1.i16 == NULL) {
+                if (buff == NULL) {
+                    buff = new int16_t[MAX_NUM_CHANNELS * state->frameCount];
+                }
+                in1 = buff;
+                b1.frameCount = numFrames;
+               } else {
+                in1 = b1.i16;
+            }
+            frameCount1 = b1.frameCount;
         }
-    }
-    
-    do {
-        int32_t l0 = *in0++;
-        int32_t r0 = *in0++;
-        l0 = mul(l0, vl0);
-        r0 = mul(r0, vr0);
-        int32_t l = *in1++;
-        int32_t r = *in1++;
-        l = mulAdd(l, vl1, l0) >> 12;
-        r = mulAdd(r, vr1, r0) >> 12;
-        // clamping...
-        l = clamp16(l);
-        r = clamp16(r);
-        *out++ = (r<<16) | (l & 0xFFFF);
-    } while (--numFrames);
+       
+        size_t outFrames = frameCount0 < frameCount1?frameCount0:frameCount1;
 
-    
-    if (t0.buffer.i16 != NULL) {
-        t0.bufferProvider->releaseBuffer(&b0);
-        if (t1.buffer.i16 != NULL) {
-            t1.bufferProvider->releaseBuffer(&b1);
-        } else {
-            delete [] in1;
+        numFrames -= outFrames;
+        frameCount0 -= outFrames;
+        frameCount1 -= outFrames;
+       
+        do {
+            int32_t l0 = *in0++;
+            int32_t r0 = *in0++;
+            l0 = mul(l0, vl0);
+            r0 = mul(r0, vr0);
+            int32_t l = *in1++;
+            int32_t r = *in1++;
+            l = mulAdd(l, vl1, l0) >> 12;
+            r = mulAdd(r, vr1, r0) >> 12;
+            // clamping...
+            l = clamp16(l);
+            r = clamp16(r);
+            *out++ = (r<<16) | (l & 0xFFFF);
+        } while (--outFrames);
+       
+        if (frameCount0 == 0) {
+            t0.bufferProvider->releaseBuffer(&b0);
         }
-    } else {
-        delete [] in0;
-        if (t1.buffer.i16 != NULL) {
+        if (frameCount1 == 0) {
             t1.bufferProvider->releaseBuffer(&b1);
         }
+    }   
+       
+    if (buff != NULL) {
+        delete [] buff;       
     }
 }
 
diff --git a/libs/audioflinger/AudioMixer.h b/libs/audioflinger/AudioMixer.h
index 9ca109f..72ca28a 100644
--- a/libs/audioflinger/AudioMixer.h
+++ b/libs/audioflinger/AudioMixer.h
@@ -2,16 +2,16 @@
 **
 ** Copyright 2007, 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 
+** 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 
+**     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 
+** 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.
 */
 
@@ -130,7 +130,7 @@
 
         int32_t     volumeInc[2];
 
-        uint16_t    reserved;
+        uint16_t    frameCount;
 
         uint8_t     channelCount : 4;
         uint8_t     enabled      : 1;
diff --git a/libs/audioflinger/AudioResampler.cpp b/libs/audioflinger/AudioResampler.cpp
index c93ead3..5dabacb 100644
--- a/libs/audioflinger/AudioResampler.cpp
+++ b/libs/audioflinger/AudioResampler.cpp
@@ -14,17 +14,23 @@
  * limitations under the License.
  */
 
+#define LOG_TAG "AudioResampler"
+//#define LOG_NDEBUG 0
+
 #include <stdint.h>
 #include <stdlib.h>
 #include <sys/types.h>
 #include <cutils/log.h>
 #include <cutils/properties.h>
-
 #include "AudioResampler.h"
 #include "AudioResamplerSinc.h"
 #include "AudioResamplerCubic.h"
 
 namespace android {
+
+#ifdef __ARM_ARCH_5E__  // optimized asm option
+    #define ASM_ARM_RESAMP1 // enable asm optimisation for ResamplerOrder1
+#endif // __ARM_ARCH_5E__
 // ----------------------------------------------------------------------------
 
 class AudioResamplerOrder1 : public AudioResampler {
@@ -46,6 +52,15 @@
             AudioBufferProvider* provider);
     void resampleStereo16(int32_t* out, size_t outFrameCount,
             AudioBufferProvider* provider);
+#ifdef ASM_ARM_RESAMP1  // asm optimisation for ResamplerOrder1
+    void AsmMono16Loop(int16_t *in, int32_t* maxOutPt, int32_t maxInIdx,
+            size_t &outputIndex, int32_t* out, size_t &inputIndex, int32_t vl, int32_t vr,
+            uint32_t &phaseFraction, uint32_t phaseIncrement);
+    void AsmStereo16Loop(int16_t *in, int32_t* maxOutPt, int32_t maxInIdx,
+            size_t &outputIndex, int32_t* out, size_t &inputIndex, int32_t vl, int32_t vr,
+            uint32_t &phaseFraction, uint32_t phaseIncrement);
+#endif  // ASM_ARM_RESAMP1
+
     static inline int32_t Interp(int32_t x0, int32_t x1, uint32_t f) {
         return x0 + (((x1 - x0) * (int32_t)(f >> kPreInterpShift)) >> kNumInterpBits);
     }
@@ -73,20 +88,23 @@
 
     if (quality == DEFAULT)
         quality = LOW_QUALITY;
-    
+
     switch (quality) {
     default:
     case LOW_QUALITY:
+        LOGV("Create linear Resampler");
         resampler = new AudioResamplerOrder1(bitDepth, inChannelCount, sampleRate);
         break;
     case MED_QUALITY:
+        LOGV("Create cubic Resampler");
         resampler = new AudioResamplerCubic(bitDepth, inChannelCount, sampleRate);
         break;
     case HIGH_QUALITY:
+        LOGV("Create sinc Resampler");
         resampler = new AudioResamplerSinc(bitDepth, inChannelCount, sampleRate);
         break;
     }
-    
+
     // initialize resampler
     resampler->init();
     return resampler;
@@ -103,10 +121,10 @@
                 inChannelCount);
         // LOG_ASSERT(0);
     }
-    
+
     // initialize common members
     mVolume[0] = mVolume[1] = 0;
-    mBuffer.raw = NULL;
+    mBuffer.frameCount = 0;
 
     // save format for quick lookup
     if (inChannelCount == 1) {
@@ -160,19 +178,31 @@
     uint32_t phaseIncrement = mPhaseIncrement;
     size_t outputIndex = 0;
     size_t outputSampleCount = outFrameCount * 2;
+    size_t inFrameCount = (outFrameCount*mInSampleRate)/mSampleRate;
 
     // LOGE("starting resample %d frames, inputIndex=%d, phaseFraction=%d, phaseIncrement=%d\n",
-    //		outFrameCount, inputIndex, phaseFraction, phaseIncrement);
+    //      outFrameCount, inputIndex, phaseFraction, phaseIncrement);
 
     while (outputIndex < outputSampleCount) {
 
         // buffer is empty, fetch a new one
-        if (mBuffer.raw == NULL) {
+        while (mBuffer.frameCount == 0) {
+            mBuffer.frameCount = inFrameCount;
             provider->getNextBuffer(&mBuffer);
-            if (mBuffer.raw == NULL)
-                break;
+            if (mBuffer.raw == NULL) {
+                goto resampleStereo16_exit;
+            }
+
             // LOGE("New buffer fetched: %d frames\n", mBuffer.frameCount);
+            if (mBuffer.frameCount > inputIndex) break;
+
+            inputIndex -= mBuffer.frameCount;
+            mX0L = mBuffer.i16[mBuffer.frameCount*2-2];
+            mX0R = mBuffer.i16[mBuffer.frameCount*2-1];
+            provider->releaseBuffer(&mBuffer);
+             // mBuffer.frameCount == 0 now so we reload a new buffer
         }
+
         int16_t *in = mBuffer.i16;
 
         // handle boundary case
@@ -187,34 +217,47 @@
 
         // process input samples
         // LOGE("general case\n");
-        while (outputIndex < outputSampleCount) {
+
+#ifdef ASM_ARM_RESAMP1  // asm optimisation for ResamplerOrder1
+        if (inputIndex + 2 < mBuffer.frameCount) {
+            int32_t* maxOutPt;
+            int32_t maxInIdx;
+
+            maxOutPt = out + (outputSampleCount - 2);   // 2 because 2 frames per loop
+            maxInIdx = mBuffer.frameCount - 2;
+            AsmStereo16Loop(in, maxOutPt, maxInIdx, outputIndex, out, inputIndex, vl, vr,
+                    phaseFraction, phaseIncrement);
+        }
+#endif  // ASM_ARM_RESAMP1
+
+        while (outputIndex < outputSampleCount && inputIndex < mBuffer.frameCount) {
             out[outputIndex++] += vl * Interp(in[inputIndex*2-2],
                     in[inputIndex*2], phaseFraction);
             out[outputIndex++] += vr * Interp(in[inputIndex*2-1],
                     in[inputIndex*2+1], phaseFraction);
             Advance(&inputIndex, &phaseFraction, phaseIncrement);
-            if (inputIndex >= mBuffer.frameCount)
-                break;
         }
+
         // LOGE("loop done - outputIndex=%d, inputIndex=%d\n", outputIndex, inputIndex);
 
         // if done with buffer, save samples
         if (inputIndex >= mBuffer.frameCount) {
             inputIndex -= mBuffer.frameCount;
 
-            // LOGE("buffer done, new input index", inputIndex);
+            // LOGE("buffer done, new input index %d", inputIndex);
 
             mX0L = mBuffer.i16[mBuffer.frameCount*2-2];
             mX0R = mBuffer.i16[mBuffer.frameCount*2-1];
             provider->releaseBuffer(&mBuffer);
 
-            // verify that the releaseBuffer NULLS the buffer pointer 
-            // LOG_ASSERT(mBuffer.raw == NULL);
+            // verify that the releaseBuffer resets the buffer frameCount
+            // LOG_ASSERT(mBuffer.frameCount == 0);
         }
     }
 
     // LOGE("output buffer full - outputIndex=%d, inputIndex=%d\n", outputIndex, inputIndex);
 
+resampleStereo16_exit:
     // save state
     mInputIndex = inputIndex;
     mPhaseFraction = phaseFraction;
@@ -231,18 +274,27 @@
     uint32_t phaseIncrement = mPhaseIncrement;
     size_t outputIndex = 0;
     size_t outputSampleCount = outFrameCount * 2;
+    size_t inFrameCount = (outFrameCount*mInSampleRate)/mSampleRate;
 
     // LOGE("starting resample %d frames, inputIndex=%d, phaseFraction=%d, phaseIncrement=%d\n",
     //      outFrameCount, inputIndex, phaseFraction, phaseIncrement);
-
     while (outputIndex < outputSampleCount) {
-
         // buffer is empty, fetch a new one
-        if (mBuffer.raw == NULL) {
+        while (mBuffer.frameCount == 0) {
+            mBuffer.frameCount = inFrameCount;
             provider->getNextBuffer(&mBuffer);
-            if (mBuffer.raw == NULL)
-                break;
+            if (mBuffer.raw == NULL) {
+                mInputIndex = inputIndex;
+                mPhaseFraction = phaseFraction;
+                goto resampleMono16_exit;
+            }
             // LOGE("New buffer fetched: %d frames\n", mBuffer.frameCount);
+            if (mBuffer.frameCount >  inputIndex) break;
+
+            inputIndex -= mBuffer.frameCount;
+            mX0L = mBuffer.i16[mBuffer.frameCount-1];
+            provider->releaseBuffer(&mBuffer);
+            // mBuffer.frameCount == 0 now so we reload a new buffer
         }
         int16_t *in = mBuffer.i16;
 
@@ -259,38 +311,284 @@
 
         // process input samples
         // LOGE("general case\n");
-        while (outputIndex < outputSampleCount) {
+
+#ifdef ASM_ARM_RESAMP1  // asm optimisation for ResamplerOrder1
+        if (inputIndex + 2 < mBuffer.frameCount) {
+            int32_t* maxOutPt;
+            int32_t maxInIdx;
+
+            maxOutPt = out + (outputSampleCount - 2);
+            maxInIdx = (int32_t)mBuffer.frameCount - 2;
+                AsmMono16Loop(in, maxOutPt, maxInIdx, outputIndex, out, inputIndex, vl, vr,
+                        phaseFraction, phaseIncrement);
+        }
+#endif  // ASM_ARM_RESAMP1
+
+        while (outputIndex < outputSampleCount && inputIndex < mBuffer.frameCount) {
             int32_t sample = Interp(in[inputIndex-1], in[inputIndex],
                     phaseFraction);
             out[outputIndex++] += vl * sample;
             out[outputIndex++] += vr * sample;
             Advance(&inputIndex, &phaseFraction, phaseIncrement);
-            if (inputIndex >= mBuffer.frameCount)
-                break;
         }
+
+
         // LOGE("loop done - outputIndex=%d, inputIndex=%d\n", outputIndex, inputIndex);
 
         // if done with buffer, save samples
         if (inputIndex >= mBuffer.frameCount) {
             inputIndex -= mBuffer.frameCount;
 
-            // LOGE("buffer done, new input index", inputIndex);
+            // LOGE("buffer done, new input index %d", inputIndex);
 
             mX0L = mBuffer.i16[mBuffer.frameCount-1];
             provider->releaseBuffer(&mBuffer);
 
-            // verify that the releaseBuffer NULLS the buffer pointer 
-            // LOG_ASSERT(mBuffer.raw == NULL);
+            // verify that the releaseBuffer resets the buffer frameCount
+            // LOG_ASSERT(mBuffer.frameCount == 0);
         }
     }
 
     // LOGE("output buffer full - outputIndex=%d, inputIndex=%d\n", outputIndex, inputIndex);
 
+resampleMono16_exit:
     // save state
     mInputIndex = inputIndex;
     mPhaseFraction = phaseFraction;
 }
 
+#ifdef ASM_ARM_RESAMP1  // asm optimisation for ResamplerOrder1
+
+/*******************************************************************
+*
+*   AsmMono16Loop
+*   asm optimized monotonic loop version; one loop is 2 frames
+*   Input:
+*       in : pointer on input samples
+*       maxOutPt : pointer on first not filled
+*       maxInIdx : index on first not used
+*       outputIndex : pointer on current output index
+*       out : pointer on output buffer
+*       inputIndex : pointer on current input index
+*       vl, vr : left and right gain
+*       phaseFraction : pointer on current phase fraction
+*       phaseIncrement
+*   Ouput:
+*       outputIndex :
+*       out : updated buffer
+*       inputIndex : index of next to use
+*       phaseFraction : phase fraction for next interpolation
+*
+*******************************************************************/
+void AudioResamplerOrder1::AsmMono16Loop(int16_t *in, int32_t* maxOutPt, int32_t maxInIdx,
+            size_t &outputIndex, int32_t* out, size_t &inputIndex, int32_t vl, int32_t vr,
+            uint32_t &phaseFraction, uint32_t phaseIncrement)
+{
+#define MO_PARAM5   "36"        // offset of parameter 5 (outputIndex)
+
+    asm(
+        "stmfd  sp!, {r4, r5, r6, r7, r8, r9, r10, r11, lr}\n"
+        // get parameters
+        "   ldr r6, [sp, #" MO_PARAM5 " + 20]\n"    // &phaseFraction
+        "   ldr r6, [r6]\n"                         // phaseFraction
+        "   ldr r7, [sp, #" MO_PARAM5 " + 8]\n"     // &inputIndex
+        "   ldr r7, [r7]\n"                         // inputIndex
+        "   ldr r8, [sp, #" MO_PARAM5 " + 4]\n"     // out
+        "   ldr r0, [sp, #" MO_PARAM5 " + 0]\n"     // &outputIndex
+        "   ldr r0, [r0]\n"                         // outputIndex
+        "   add r8, r0, asl #2\n"                   // curOut
+        "   ldr r9, [sp, #" MO_PARAM5 " + 24]\n"    // phaseIncrement
+        "   ldr r10, [sp, #" MO_PARAM5 " + 12]\n"   // vl
+        "   ldr r11, [sp, #" MO_PARAM5 " + 16]\n"   // vr
+
+        // r0 pin, x0, Samp
+
+        // r1 in
+        // r2 maxOutPt
+        // r3 maxInIdx
+
+        // r4 x1, i1, i3, Out1
+        // r5 out0
+
+        // r6 frac
+        // r7 inputIndex
+        // r8 curOut
+
+        // r9 inc
+        // r10 vl
+        // r11 vr
+
+        // r12
+        // r13 sp
+        // r14
+
+        // the following loop works on 2 frames
+
+        ".Y4L01:\n"
+        "   cmp r8, r2\n"                   // curOut - maxCurOut
+        "   bcs .Y4L02\n"
+
+#define MO_ONE_FRAME \
+    "   add r0, r1, r7, asl #1\n"       /* in + inputIndex */\
+    "   ldrsh r4, [r0]\n"               /* in[inputIndex] */\
+    "   ldr r5, [r8]\n"                 /* out[outputIndex] */\
+    "   ldrsh r0, [r0, #-2]\n"          /* in[inputIndex-1] */\
+    "   bic r6, r6, #0xC0000000\n"      /* phaseFraction & ... */\
+    "   sub r4, r4, r0\n"               /* in[inputIndex] - in[inputIndex-1] */\
+    "   mov r4, r4, lsl #2\n"           /* <<2 */\
+    "   smulwt r4, r4, r6\n"            /* (x1-x0)*.. */\
+    "   add r6, r6, r9\n"               /* phaseFraction + phaseIncrement */\
+    "   add r0, r0, r4\n"               /* x0 - (..) */\
+    "   mla r5, r0, r10, r5\n"          /* vl*interp + out[] */\
+    "   ldr r4, [r8, #4]\n"             /* out[outputIndex+1] */\
+    "   str r5, [r8], #4\n"             /* out[outputIndex++] = ... */\
+    "   mla r4, r0, r11, r4\n"          /* vr*interp + out[] */\
+    "   add r7, r7, r6, lsr #30\n"      /* inputIndex + phaseFraction>>30 */\
+    "   str r4, [r8], #4\n"             /* out[outputIndex++] = ... */
+
+        MO_ONE_FRAME    // frame 1
+        MO_ONE_FRAME    // frame 2
+
+        "   cmp r7, r3\n"                   // inputIndex - maxInIdx
+        "   bcc .Y4L01\n"
+        ".Y4L02:\n"
+
+        "   bic r6, r6, #0xC0000000\n"             // phaseFraction & ...
+        // save modified values
+        "   ldr r0, [sp, #" MO_PARAM5 " + 20]\n"    // &phaseFraction
+        "   str r6, [r0]\n"                         // phaseFraction
+        "   ldr r0, [sp, #" MO_PARAM5 " + 8]\n"     // &inputIndex
+        "   str r7, [r0]\n"                         // inputIndex
+        "   ldr r0, [sp, #" MO_PARAM5 " + 4]\n"     // out
+        "   sub r8, r0\n"                           // curOut - out
+        "   asr r8, #2\n"                           // new outputIndex
+        "   ldr r0, [sp, #" MO_PARAM5 " + 0]\n"     // &outputIndex
+        "   str r8, [r0]\n"                         // save outputIndex
+
+        "   ldmfd   sp!, {r4, r5, r6, r7, r8, r9, r10, r11, pc}\n"
+    );
+}
+
+/*******************************************************************
+*
+*   AsmStereo16Loop
+*   asm optimized stereo loop version; one loop is 2 frames
+*   Input:
+*       in : pointer on input samples
+*       maxOutPt : pointer on first not filled
+*       maxInIdx : index on first not used
+*       outputIndex : pointer on current output index
+*       out : pointer on output buffer
+*       inputIndex : pointer on current input index
+*       vl, vr : left and right gain
+*       phaseFraction : pointer on current phase fraction
+*       phaseIncrement
+*   Ouput:
+*       outputIndex :
+*       out : updated buffer
+*       inputIndex : index of next to use
+*       phaseFraction : phase fraction for next interpolation
+*
+*******************************************************************/
+void AudioResamplerOrder1::AsmStereo16Loop(int16_t *in, int32_t* maxOutPt, int32_t maxInIdx,
+            size_t &outputIndex, int32_t* out, size_t &inputIndex, int32_t vl, int32_t vr,
+            uint32_t &phaseFraction, uint32_t phaseIncrement)
+{
+#define ST_PARAM5    "40"     // offset of parameter 5 (outputIndex)
+    asm(
+        "stmfd  sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, lr}\n"
+        // get parameters
+        "   ldr r6, [sp, #" ST_PARAM5 " + 20]\n"    // &phaseFraction
+        "   ldr r6, [r6]\n"                         // phaseFraction
+        "   ldr r7, [sp, #" ST_PARAM5 " + 8]\n"     // &inputIndex
+        "   ldr r7, [r7]\n"                         // inputIndex
+        "   ldr r8, [sp, #" ST_PARAM5 " + 4]\n"     // out
+        "   ldr r0, [sp, #" ST_PARAM5 " + 0]\n"     // &outputIndex
+        "   ldr r0, [r0]\n"                         // outputIndex
+        "   add r8, r0, asl #2\n"                   // curOut
+        "   ldr r9, [sp, #" ST_PARAM5 " + 24]\n"    // phaseIncrement
+        "   ldr r10, [sp, #" ST_PARAM5 " + 12]\n"   // vl
+        "   ldr r11, [sp, #" ST_PARAM5 " + 16]\n"   // vr
+
+        // r0 pin, x0, Samp
+
+        // r1 in
+        // r2 maxOutPt
+        // r3 maxInIdx
+
+        // r4 x1, i1, i3, out1
+        // r5 out0
+
+        // r6 frac
+        // r7 inputIndex
+        // r8 curOut
+
+        // r9 inc
+        // r10 vl
+        // r11 vr
+
+        // r12 temporary
+        // r13 sp
+        // r14
+
+        ".Y5L01:\n"
+        "   cmp r8, r2\n"                   // curOut - maxCurOut
+        "   bcs .Y5L02\n"
+
+#define ST_ONE_FRAME \
+    "   bic r6, r6, #0xC0000000\n"      /* phaseFraction & ... */\
+\
+    "   add r0, r1, r7, asl #2\n"       /* in + 2*inputIndex */\
+\
+    "   ldrsh r4, [r0]\n"               /* in[2*inputIndex] */\
+    "   ldr r5, [r8]\n"                 /* out[outputIndex] */\
+    "   ldrsh r12, [r0, #-4]\n"         /* in[2*inputIndex-2] */\
+    "   sub r4, r4, r12\n"              /* in[2*InputIndex] - in[2*InputIndex-2] */\
+    "   mov r4, r4, lsl #2\n"           /* <<2 */\
+    "   smulwt r4, r4, r6\n"            /* (x1-x0)*.. */\
+    "   add r12, r12, r4\n"             /* x0 - (..) */\
+    "   mla r5, r12, r10, r5\n"         /* vl*interp + out[] */\
+    "   ldr r4, [r8, #4]\n"             /* out[outputIndex+1] */\
+    "   str r5, [r8], #4\n"             /* out[outputIndex++] = ... */\
+\
+    "   ldrsh r12, [r0, #+2]\n"         /* in[2*inputIndex+1] */\
+    "   ldrsh r0, [r0, #-2]\n"          /* in[2*inputIndex-1] */\
+    "   sub r12, r12, r0\n"             /* in[2*InputIndex] - in[2*InputIndex-2] */\
+    "   mov r12, r12, lsl #2\n"         /* <<2 */\
+    "   smulwt r12, r12, r6\n"          /* (x1-x0)*.. */\
+    "   add r12, r0, r12\n"             /* x0 - (..) */\
+    "   mla r4, r12, r11, r4\n"         /* vr*interp + out[] */\
+    "   str r4, [r8], #4\n"             /* out[outputIndex++] = ... */\
+\
+    "   add r6, r6, r9\n"               /* phaseFraction + phaseIncrement */\
+    "   add r7, r7, r6, lsr #30\n"      /* inputIndex + phaseFraction>>30 */
+
+    ST_ONE_FRAME    // frame 1
+    ST_ONE_FRAME    // frame 1
+
+        "   cmp r7, r3\n"                       // inputIndex - maxInIdx
+        "   bcc .Y5L01\n"
+        ".Y5L02:\n"
+
+        "   bic r6, r6, #0xC0000000\n"              // phaseFraction & ...
+        // save modified values
+        "   ldr r0, [sp, #" ST_PARAM5 " + 20]\n"    // &phaseFraction
+        "   str r6, [r0]\n"                         // phaseFraction
+        "   ldr r0, [sp, #" ST_PARAM5 " + 8]\n"     // &inputIndex
+        "   str r7, [r0]\n"                         // inputIndex
+        "   ldr r0, [sp, #" ST_PARAM5 " + 4]\n"     // out
+        "   sub r8, r0\n"                           // curOut - out
+        "   asr r8, #2\n"                           // new outputIndex
+        "   ldr r0, [sp, #" ST_PARAM5 " + 0]\n"     // &outputIndex
+        "   str r8, [r0]\n"                         // save outputIndex
+
+        "   ldmfd   sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, pc}\n"
+    );
+}
+
+#endif  // ASM_ARM_RESAMP1
+
+
 // ----------------------------------------------------------------------------
 }
 ; // namespace android
diff --git a/libs/audioflinger/AudioResamplerCubic.cpp b/libs/audioflinger/AudioResamplerCubic.cpp
index 4f437bf..1d247bd 100644
--- a/libs/audioflinger/AudioResamplerCubic.cpp
+++ b/libs/audioflinger/AudioResamplerCubic.cpp
@@ -60,9 +60,11 @@
     uint32_t phaseIncrement = mPhaseIncrement;
     size_t outputIndex = 0;
     size_t outputSampleCount = outFrameCount * 2;
-    
+    size_t inFrameCount = (outFrameCount*mInSampleRate)/mSampleRate;
+
     // fetch first buffer
-    if (mBuffer.raw == NULL) {
+    if (mBuffer.frameCount == 0) {
+        mBuffer.frameCount = inFrameCount;
         provider->getNextBuffer(&mBuffer);
         if (mBuffer.raw == NULL)
             return;
@@ -79,7 +81,7 @@
         out[outputIndex++] += vl * interp(&left, x);
         out[outputIndex++] += vr * interp(&right, x);
         // out[outputIndex++] += vr * in[inputIndex*2];
-        
+
         // increment phase
         phaseFraction += phaseIncrement;
         uint32_t indexIncrement = (phaseFraction >> kNumPhaseBits);
@@ -92,6 +94,7 @@
             if (inputIndex == mBuffer.frameCount) {
                 inputIndex = 0;
                 provider->releaseBuffer(&mBuffer);
+                mBuffer.frameCount = inFrameCount;
                 provider->getNextBuffer(&mBuffer);
                 if (mBuffer.raw == NULL)
                     goto save_state;  // ugly, but efficient
@@ -122,9 +125,11 @@
     uint32_t phaseIncrement = mPhaseIncrement;
     size_t outputIndex = 0;
     size_t outputSampleCount = outFrameCount * 2;
-    
+    size_t inFrameCount = (outFrameCount*mInSampleRate)/mSampleRate;
+
     // fetch first buffer
-    if (mBuffer.raw == NULL) {
+    if (mBuffer.frameCount == 0) {
+        mBuffer.frameCount = inFrameCount;
         provider->getNextBuffer(&mBuffer);
         if (mBuffer.raw == NULL)
             return;
@@ -141,7 +146,7 @@
         sample = interp(&left, x);
         out[outputIndex++] += vl * sample;
         out[outputIndex++] += vr * sample;
-        
+
         // increment phase
         phaseFraction += phaseIncrement;
         uint32_t indexIncrement = (phaseFraction >> kNumPhaseBits);
@@ -154,6 +159,7 @@
             if (inputIndex == mBuffer.frameCount) {
                 inputIndex = 0;
                 provider->releaseBuffer(&mBuffer);
+                mBuffer.frameCount = inFrameCount;
                 provider->getNextBuffer(&mBuffer);
                 if (mBuffer.raw == NULL)
                     goto save_state;  // ugly, but efficient
diff --git a/libs/audioflinger/AudioResamplerSinc.cpp b/libs/audioflinger/AudioResamplerSinc.cpp
index e710d16..9e5e254 100644
--- a/libs/audioflinger/AudioResamplerSinc.cpp
+++ b/libs/audioflinger/AudioResamplerSinc.cpp
@@ -25,18 +25,18 @@
  * These coeficients are computed with the "fir" utility found in
  * tools/resampler_tools
  * TODO: A good optimization would be to transpose this matrix, to take
- * better advantage of the data-cache. 
+ * better advantage of the data-cache.
  */
 const int32_t AudioResamplerSinc::mFirCoefsUp[] = {
-		0x7fffffff, 0x7f15d078, 0x7c5e0da6, 0x77ecd867, 0x71e2e251, 0x6a6c304a, 0x61be7269, 0x58170412, 0x4db8ab05, 0x42e92ea6, 0x37eee214, 0x2d0e3bb1, 0x22879366, 0x18951e95, 0x0f693d0d, 0x072d2621, 
-	    0x00000000, 0xf9f66655, 0xf51a5fd7, 0xf16bbd84, 0xeee0d9ac, 0xed67a922, 0xece70de6, 0xed405897, 0xee50e505, 0xeff3be30, 0xf203370f, 0xf45a6741, 0xf6d67d53, 0xf957db66, 0xfbc2f647, 0xfe00f2b9, 
-	    0x00000000, 0x01b37218, 0x0313a0c6, 0x041d930d, 0x04d28057, 0x053731b0, 0x05534dff, 0x05309bfd, 0x04da440d, 0x045c1aee, 0x03c1fcdd, 0x03173ef5, 0x02663ae8, 0x01b7f736, 0x0113ec79, 0x007fe6a9, 
-	    0x00000000, 0xff96b229, 0xff44f99f, 0xff0a86be, 0xfee5f803, 0xfed518fd, 0xfed521fd, 0xfee2f4fd, 0xfefb54f8, 0xff1b159b, 0xff3f4203, 0xff6539e0, 0xff8ac502, 0xffae1ddd, 0xffcdf3f9, 0xffe96798, 
-	    0x00000000, 0x00119de6, 0x001e6b7e, 0x0026cb7a, 0x002b4830, 0x002c83d6, 0x002b2a82, 0x0027e67a, 0x002356f9, 0x001e098e, 0x001875e4, 0x0012fbbe, 0x000de2d1, 0x00095c10, 0x00058414, 0x00026636, 
-	    0x00000000, 0xfffe44a9, 0xfffd206d, 0xfffc7b7f, 0xfffc3c8f, 0xfffc4ac2, 0xfffc8f2b, 0xfffcf5c4, 0xfffd6df3, 0xfffdeab2, 0xfffe6275, 0xfffececf, 0xffff2c07, 0xffff788c, 0xffffb471, 0xffffe0f2, 
-	    0x00000000, 0x000013e6, 0x00001f03, 0x00002396, 0x00002399, 0x000020b6, 0x00001c3c, 0x00001722, 0x00001216, 0x00000d81, 0x0000099c, 0x0000067c, 0x00000419, 0x0000025f, 0x00000131, 0x00000070, 
-	    0x00000000, 0xffffffc7, 0xffffffb3, 0xffffffb3, 0xffffffbe, 0xffffffcd, 0xffffffdb, 0xffffffe7, 0xfffffff0, 0xfffffff7, 0xfffffffb, 0xfffffffe, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 
-	    0x00000000 // this one is needed for lerping the last coefficient
+        0x7fffffff, 0x7f15d078, 0x7c5e0da6, 0x77ecd867, 0x71e2e251, 0x6a6c304a, 0x61be7269, 0x58170412, 0x4db8ab05, 0x42e92ea6, 0x37eee214, 0x2d0e3bb1, 0x22879366, 0x18951e95, 0x0f693d0d, 0x072d2621,
+        0x00000000, 0xf9f66655, 0xf51a5fd7, 0xf16bbd84, 0xeee0d9ac, 0xed67a922, 0xece70de6, 0xed405897, 0xee50e505, 0xeff3be30, 0xf203370f, 0xf45a6741, 0xf6d67d53, 0xf957db66, 0xfbc2f647, 0xfe00f2b9,
+        0x00000000, 0x01b37218, 0x0313a0c6, 0x041d930d, 0x04d28057, 0x053731b0, 0x05534dff, 0x05309bfd, 0x04da440d, 0x045c1aee, 0x03c1fcdd, 0x03173ef5, 0x02663ae8, 0x01b7f736, 0x0113ec79, 0x007fe6a9,
+        0x00000000, 0xff96b229, 0xff44f99f, 0xff0a86be, 0xfee5f803, 0xfed518fd, 0xfed521fd, 0xfee2f4fd, 0xfefb54f8, 0xff1b159b, 0xff3f4203, 0xff6539e0, 0xff8ac502, 0xffae1ddd, 0xffcdf3f9, 0xffe96798,
+        0x00000000, 0x00119de6, 0x001e6b7e, 0x0026cb7a, 0x002b4830, 0x002c83d6, 0x002b2a82, 0x0027e67a, 0x002356f9, 0x001e098e, 0x001875e4, 0x0012fbbe, 0x000de2d1, 0x00095c10, 0x00058414, 0x00026636,
+        0x00000000, 0xfffe44a9, 0xfffd206d, 0xfffc7b7f, 0xfffc3c8f, 0xfffc4ac2, 0xfffc8f2b, 0xfffcf5c4, 0xfffd6df3, 0xfffdeab2, 0xfffe6275, 0xfffececf, 0xffff2c07, 0xffff788c, 0xffffb471, 0xffffe0f2,
+        0x00000000, 0x000013e6, 0x00001f03, 0x00002396, 0x00002399, 0x000020b6, 0x00001c3c, 0x00001722, 0x00001216, 0x00000d81, 0x0000099c, 0x0000067c, 0x00000419, 0x0000025f, 0x00000131, 0x00000070,
+        0x00000000, 0xffffffc7, 0xffffffb3, 0xffffffb3, 0xffffffbe, 0xffffffcd, 0xffffffdb, 0xffffffe7, 0xfffffff0, 0xfffffff7, 0xfffffffb, 0xfffffffe, 0xffffffff, 0x00000000, 0x00000000, 0x00000000,
+        0x00000000 // this one is needed for lerping the last coefficient
 };
 
 /*
@@ -46,20 +46,20 @@
  * these coefficient from the above by "Stretching" them in time).
  */
 const int32_t AudioResamplerSinc::mFirCoefsDown[] = {
-		0x7fffffff, 0x7f55e46d, 0x7d5b4c60, 0x7a1b4b98, 0x75a7fb14, 0x7019f0bd, 0x698f875a, 0x622bfd59, 0x5a167256, 0x5178cc54, 0x487e8e6c, 0x3f53aae8, 0x36235ad4, 0x2d17047b, 0x245539ab, 0x1c00d540, 
-	    0x14383e57, 0x0d14d5ca, 0x06aa910b, 0x0107c38b, 0xfc351654, 0xf835abae, 0xf5076b45, 0xf2a37202, 0xf0fe9faa, 0xf00a3bbd, 0xefb4aa81, 0xefea2b05, 0xf0959716, 0xf1a11e83, 0xf2f6f7a0, 0xf481fff4, 
-	    0xf62e48ce, 0xf7e98ca5, 0xf9a38b4c, 0xfb4e4bfa, 0xfcde456f, 0xfe4a6d30, 0xff8c2fdf, 0x009f5555, 0x0181d393, 0x0233940f, 0x02b62f06, 0x030ca07d, 0x033afa62, 0x03461725, 0x03334f83, 0x030835fa, 
-	    0x02ca59cc, 0x027f12d1, 0x022b570d, 0x01d39a49, 0x017bb78f, 0x0126e414, 0x00d7aaaf, 0x008feec7, 0x0050f584, 0x001b73e3, 0xffefa063, 0xffcd46ed, 0xffb3ddcd, 0xffa29aaa, 0xff988691, 0xff949066, 
-	    0xff959d24, 0xff9a959e, 0xffa27195, 0xffac4011, 0xffb72d2b, 0xffc28569, 0xffcdb706, 0xffd85171, 0xffe20364, 0xffea97e9, 0xfff1f2b2, 0xfff80c06, 0xfffcec92, 0x0000a955, 0x00035fd8, 0x000532cf, 
-	    0x00064735, 0x0006c1f9, 0x0006c62d, 0x000673ba, 0x0005e68f, 0x00053630, 0x000475a3, 0x0003b397, 0x0002fac1, 0x00025257, 0x0001be9e, 0x0001417a, 0x0000dafd, 0x000089eb, 0x00004c28, 0x00001f1d, 
-	    0x00000000, 0xffffec10, 0xffffe0be, 0xffffdbc5, 0xffffdb39, 0xffffdd8b, 0xffffe182, 0xffffe638, 0xffffeb0a, 0xffffef8f, 0xfffff38b, 0xfffff6e3, 0xfffff993, 0xfffffba6, 0xfffffd30, 0xfffffe4a, 
-	    0xffffff09, 0xffffff85, 0xffffffd1, 0xfffffffb, 0x0000000f, 0x00000016, 0x00000015, 0x00000012, 0x0000000d, 0x00000009, 0x00000006, 0x00000003, 0x00000002, 0x00000001, 0x00000000, 0x00000000, 
-	    0x00000000 // this one is needed for lerping the last coefficient
+        0x7fffffff, 0x7f55e46d, 0x7d5b4c60, 0x7a1b4b98, 0x75a7fb14, 0x7019f0bd, 0x698f875a, 0x622bfd59, 0x5a167256, 0x5178cc54, 0x487e8e6c, 0x3f53aae8, 0x36235ad4, 0x2d17047b, 0x245539ab, 0x1c00d540,
+        0x14383e57, 0x0d14d5ca, 0x06aa910b, 0x0107c38b, 0xfc351654, 0xf835abae, 0xf5076b45, 0xf2a37202, 0xf0fe9faa, 0xf00a3bbd, 0xefb4aa81, 0xefea2b05, 0xf0959716, 0xf1a11e83, 0xf2f6f7a0, 0xf481fff4,
+        0xf62e48ce, 0xf7e98ca5, 0xf9a38b4c, 0xfb4e4bfa, 0xfcde456f, 0xfe4a6d30, 0xff8c2fdf, 0x009f5555, 0x0181d393, 0x0233940f, 0x02b62f06, 0x030ca07d, 0x033afa62, 0x03461725, 0x03334f83, 0x030835fa,
+        0x02ca59cc, 0x027f12d1, 0x022b570d, 0x01d39a49, 0x017bb78f, 0x0126e414, 0x00d7aaaf, 0x008feec7, 0x0050f584, 0x001b73e3, 0xffefa063, 0xffcd46ed, 0xffb3ddcd, 0xffa29aaa, 0xff988691, 0xff949066,
+        0xff959d24, 0xff9a959e, 0xffa27195, 0xffac4011, 0xffb72d2b, 0xffc28569, 0xffcdb706, 0xffd85171, 0xffe20364, 0xffea97e9, 0xfff1f2b2, 0xfff80c06, 0xfffcec92, 0x0000a955, 0x00035fd8, 0x000532cf,
+        0x00064735, 0x0006c1f9, 0x0006c62d, 0x000673ba, 0x0005e68f, 0x00053630, 0x000475a3, 0x0003b397, 0x0002fac1, 0x00025257, 0x0001be9e, 0x0001417a, 0x0000dafd, 0x000089eb, 0x00004c28, 0x00001f1d,
+        0x00000000, 0xffffec10, 0xffffe0be, 0xffffdbc5, 0xffffdb39, 0xffffdd8b, 0xffffe182, 0xffffe638, 0xffffeb0a, 0xffffef8f, 0xfffff38b, 0xfffff6e3, 0xfffff993, 0xfffffba6, 0xfffffd30, 0xfffffe4a,
+        0xffffff09, 0xffffff85, 0xffffffd1, 0xfffffffb, 0x0000000f, 0x00000016, 0x00000015, 0x00000012, 0x0000000d, 0x00000009, 0x00000006, 0x00000003, 0x00000002, 0x00000001, 0x00000000, 0x00000000,
+        0x00000000 // this one is needed for lerping the last coefficient
 };
 
 // ----------------------------------------------------------------------------
 
-static inline 
+static inline
 int32_t mulRL(int left, int32_t in, uint32_t vRL)
 {
 #if defined(__arm__) && !defined(__thumb__)
@@ -85,7 +85,7 @@
 #endif
 }
 
-static inline 
+static inline
 int32_t mulAdd(int16_t in, int32_t v, int32_t a)
 {
 #if defined(__arm__) && !defined(__thumb__)
@@ -95,12 +95,14 @@
          : [in]"%r"(in), [v]"r"(v), [a]"r"(a)
          : );
     return out;
-#else    
-    return a + ((in * int32_t(v))>>16);
+#else
+    return a + in * (v>>16);
+    // improved precision
+    // return a + in * (v>>16) + ((in * (v & 0xffff)) >> 16);
 #endif
 }
 
-static inline 
+static inline
 int32_t mulAddRL(int left, uint32_t inRL, int32_t v, int32_t a)
 {
 #if defined(__arm__) && !defined(__thumb__)
@@ -119,9 +121,11 @@
     return out;
 #else
     if (left) {
-        return a + ((int16_t(inRL&0xFFFF) * int32_t(v))>>16);
+        return a + (int16_t(inRL&0xFFFF) * (v>>16));
+        //improved precision
+        // return a + (int16_t(inRL&0xFFFF) * (v>>16)) + ((int16_t(inRL&0xFFFF) * (v & 0xffff)) >> 16);
     } else {
-        return a + ((int16_t(inRL>>16) * int32_t(v))>>16);
+        return a + (int16_t(inRL>>16) * (v>>16));
     }
 #endif
 }
@@ -129,37 +133,37 @@
 // ----------------------------------------------------------------------------
 
 AudioResamplerSinc::AudioResamplerSinc(int bitDepth,
-		int inChannelCount, int32_t sampleRate)
-	: AudioResampler(bitDepth, inChannelCount, sampleRate),
-	mState(0)
+        int inChannelCount, int32_t sampleRate)
+    : AudioResampler(bitDepth, inChannelCount, sampleRate),
+    mState(0)
 {
-	/* 
-	 * Layout of the state buffer for 32 tap:
-	 * 
-	 * "present" sample            beginning of 2nd buffer
-	 *                 v                v
-	 *  0              01               2              23              3
-	 *  0              F0               0              F0              F
-	 * [pppppppppppppppInnnnnnnnnnnnnnnnpppppppppppppppInnnnnnnnnnnnnnnn]
-	 *                 ^               ^ head
-	 * 
-	 * p = past samples, convoluted with the (p)ositive side of sinc()
-	 * n = future samples, convoluted with the (n)egative side of sinc()
-	 * r = extra space for implementing the ring buffer
-	 * 
-	 */
+    /*
+     * Layout of the state buffer for 32 tap:
+     *
+     * "present" sample            beginning of 2nd buffer
+     *                 v                v
+     *  0              01               2              23              3
+     *  0              F0               0              F0              F
+     * [pppppppppppppppInnnnnnnnnnnnnnnnpppppppppppppppInnnnnnnnnnnnnnnn]
+     *                 ^               ^ head
+     *
+     * p = past samples, convoluted with the (p)ositive side of sinc()
+     * n = future samples, convoluted with the (n)egative side of sinc()
+     * r = extra space for implementing the ring buffer
+     *
+     */
 
-	const size_t numCoefs = 2*halfNumCoefs;
-	const size_t stateSize = numCoefs * inChannelCount * 2;
-	mState = new int16_t[stateSize];
-	memset(mState, 0, sizeof(int16_t)*stateSize);
-	mImpulse = mState + (halfNumCoefs-1)*inChannelCount;
-	mRingFull = mImpulse + (numCoefs+1)*inChannelCount;
+    const size_t numCoefs = 2*halfNumCoefs;
+    const size_t stateSize = numCoefs * inChannelCount * 2;
+    mState = new int16_t[stateSize];
+    memset(mState, 0, sizeof(int16_t)*stateSize);
+    mImpulse = mState + (halfNumCoefs-1)*inChannelCount;
+    mRingFull = mImpulse + (numCoefs+1)*inChannelCount;
 }
 
 AudioResamplerSinc::~AudioResamplerSinc()
 {
-	delete [] mState;
+    delete [] mState;
 }
 
 void AudioResamplerSinc::init() {
@@ -168,9 +172,9 @@
 void AudioResamplerSinc::resample(int32_t* out, size_t outFrameCount,
             AudioBufferProvider* provider)
 {
-	mFirCoefs = (mInSampleRate <= mSampleRate) ? mFirCoefsUp : mFirCoefsDown;
+    mFirCoefs = (mInSampleRate <= mSampleRate) ? mFirCoefsUp : mFirCoefsDown;
 
-	// select the appropriate resampler
+    // select the appropriate resampler
     switch (mChannelCount) {
     case 1:
         resample<1>(out, outFrameCount, provider);
@@ -193,43 +197,68 @@
     uint32_t phaseIncrement = mPhaseIncrement;
     size_t outputIndex = 0;
     size_t outputSampleCount = outFrameCount * 2;
+    size_t inFrameCount = (outFrameCount*mInSampleRate)/mSampleRate;
 
     AudioBufferProvider::Buffer& buffer(mBuffer);
     while (outputIndex < outputSampleCount) {
         // buffer is empty, fetch a new one
-        if (buffer.raw == NULL) {
+        while (buffer.frameCount == 0) {
+            buffer.frameCount = inFrameCount;
             provider->getNextBuffer(&buffer);
-            if (buffer.raw == NULL)
-                break;
-    		const uint32_t phaseIndex = phaseFraction >> kNumPhaseBits;
-        	if (phaseIndex) {
-        		read<CHANNELS>(impulse, phaseFraction, buffer.i16, inputIndex);
+            if (buffer.raw == NULL) {
+                goto resample_exit;
             }
+            const uint32_t phaseIndex = phaseFraction >> kNumPhaseBits;
+            if (phaseIndex == 1) {
+                // read one frame
+                read<CHANNELS>(impulse, phaseFraction, buffer.i16, inputIndex);
+            } else if (phaseIndex == 2) {
+                // read 2 frames
+                read<CHANNELS>(impulse, phaseFraction, buffer.i16, inputIndex);
+                inputIndex++;
+                if (inputIndex >= mBuffer.frameCount) {
+                    inputIndex -= mBuffer.frameCount;
+                    provider->releaseBuffer(&buffer);
+                } else {
+                    read<CHANNELS>(impulse, phaseFraction, buffer.i16, inputIndex);
+                }
+           }
         }
         int16_t *in = buffer.i16;
-    	const size_t frameCount = buffer.frameCount;
+        const size_t frameCount = buffer.frameCount;
 
-    	// Always read-in the first samples from the input buffer
-    	int16_t* head = impulse + halfNumCoefs*CHANNELS;
-		head[0] = in[inputIndex*CHANNELS + 0];
-		if (CHANNELS == 2)
-			head[1] = in[inputIndex*CHANNELS + 1];
+        // Always read-in the first samples from the input buffer
+        int16_t* head = impulse + halfNumCoefs*CHANNELS;
+        head[0] = in[inputIndex*CHANNELS + 0];
+        if (CHANNELS == 2)
+            head[1] = in[inputIndex*CHANNELS + 1];
 
         // handle boundary case
-    	int32_t l, r;
+        int32_t l, r;
         while (outputIndex < outputSampleCount) {
-        	filterCoefficient<CHANNELS>(l, r, phaseFraction, impulse);
-    		out[outputIndex++] = mulRL(1, l, vRL);
-    		out[outputIndex++] = mulRL(0, r, vRL);
+            filterCoefficient<CHANNELS>(l, r, phaseFraction, impulse);
+            out[outputIndex++] += 2 * mulRL(1, l, vRL);
+            out[outputIndex++] += 2 * mulRL(0, r, vRL);
 
-        	phaseFraction += phaseIncrement;
-    		const uint32_t phaseIndex = phaseFraction >> kNumPhaseBits;
-        	if (phaseIndex) {
-        		inputIndex += phaseIndex;
-        		if (inputIndex >= frameCount)
-        			break;
-        		read<CHANNELS>(impulse, phaseFraction, in, inputIndex);
-        	}
+            phaseFraction += phaseIncrement;
+            const uint32_t phaseIndex = phaseFraction >> kNumPhaseBits;
+            if (phaseIndex == 1) {
+                inputIndex++;
+                if (inputIndex >= frameCount)
+                    break;  // need a new buffer
+                read<CHANNELS>(impulse, phaseFraction, in, inputIndex);
+            } else if(phaseIndex == 2) {    // maximum value
+                inputIndex++;
+                if (inputIndex >= frameCount)
+                    break;  // 0 frame available, 2 frames needed
+                // read first frame
+                read<CHANNELS>(impulse, phaseFraction, in, inputIndex);
+                inputIndex++;
+                if (inputIndex >= frameCount)
+                    break;  // 0 frame available, 1 frame needed
+                // read second frame
+                read<CHANNELS>(impulse, phaseFraction, in, inputIndex);
+            }
         }
 
         // if done with buffer, save samples
@@ -239,80 +268,89 @@
         }
     }
 
+resample_exit:
     mImpulse = impulse;
     mInputIndex = inputIndex;
     mPhaseFraction = phaseFraction;
 }
 
 template<int CHANNELS>
+/***
+* read()
+*
+* This function reads only one frame from input buffer and writes it in
+* state buffer
+*
+**/
 void AudioResamplerSinc::read(
-		int16_t*& impulse, uint32_t& phaseFraction,
-		int16_t const* in, size_t inputIndex)
+        int16_t*& impulse, uint32_t& phaseFraction,
+        int16_t const* in, size_t inputIndex)
 {
-	// read new samples into the ring buffer
-	while (phaseFraction >> kNumPhaseBits) {
-		const uint32_t phaseIndex = phaseFraction >> kNumPhaseBits;
-		impulse += CHANNELS;
-		phaseFraction -= 1LU<<kNumPhaseBits;
-		if (impulse >= mRingFull) {
-			const size_t stateSize = (halfNumCoefs*2)*CHANNELS;
-			memcpy(mState, mState+stateSize, sizeof(int16_t)*stateSize);
-			impulse -= stateSize;
-		}
-		int16_t* head = impulse + halfNumCoefs*CHANNELS;
-		head[0] = in[inputIndex*CHANNELS + 0];
-		if (CHANNELS == 2)
-			head[1] = in[inputIndex*CHANNELS + 1];
-	}
+    const uint32_t phaseIndex = phaseFraction >> kNumPhaseBits;
+    impulse += CHANNELS;
+    phaseFraction -= 1LU<<kNumPhaseBits;
+    if (impulse >= mRingFull) {
+        const size_t stateSize = (halfNumCoefs*2)*CHANNELS;
+        memcpy(mState, mState+stateSize, sizeof(int16_t)*stateSize);
+        impulse -= stateSize;
+    }
+    int16_t* head = impulse + halfNumCoefs*CHANNELS;
+    head[0] = in[inputIndex*CHANNELS + 0];
+    if (CHANNELS == 2)
+        head[1] = in[inputIndex*CHANNELS + 1];
 }
 
 template<int CHANNELS>
 void AudioResamplerSinc::filterCoefficient(
-		int32_t& l, int32_t& r, uint32_t phase, int16_t const *samples)
-{	
-	// compute the index of the coefficient on the positive side and
-	// negative side
-	uint32_t indexP = (phase & cMask) >> cShift;
-	uint16_t lerpP  = (phase & pMask) >> pShift;
-	uint32_t indexN = (-phase & cMask) >> cShift;
-	uint16_t lerpN  = (-phase & pMask) >> pShift;
-	
-	l = 0;
-	r = 0;
-	int32_t const* coefs = mFirCoefs;
-	int16_t const *sP = samples;
-	int16_t const *sN = samples+CHANNELS;
-	for (unsigned int i=0 ; i<halfNumCoefs/4 ; i++) {
-		interpolate<CHANNELS>(l, r, coefs+indexP, lerpP, sP);
-		interpolate<CHANNELS>(l, r, coefs+indexN, lerpN, sN);
-		sP -= CHANNELS; sN += CHANNELS; coefs += 1<<coefsBits;
+        int32_t& l, int32_t& r, uint32_t phase, int16_t const *samples)
+{
+    // compute the index of the coefficient on the positive side and
+    // negative side
+    uint32_t indexP = (phase & cMask) >> cShift;
+    uint16_t lerpP  = (phase & pMask) >> pShift;
+    uint32_t indexN = (-phase & cMask) >> cShift;
+    uint16_t lerpN  = (-phase & pMask) >> pShift;
+    if ((indexP == 0) && (lerpP == 0)) {
+        indexN = cMask >> cShift;
+        lerpN = pMask >> pShift;
+    }
+
+    l = 0;
+    r = 0;
+    int32_t const* coefs = mFirCoefs;
+    int16_t const *sP = samples;
+    int16_t const *sN = samples+CHANNELS;
+    for (unsigned int i=0 ; i<halfNumCoefs/4 ; i++) {
         interpolate<CHANNELS>(l, r, coefs+indexP, lerpP, sP);
         interpolate<CHANNELS>(l, r, coefs+indexN, lerpN, sN);
-		sP -= CHANNELS; sN += CHANNELS; coefs += 1<<coefsBits;
+        sP -= CHANNELS; sN += CHANNELS; coefs += 1<<coefsBits;
         interpolate<CHANNELS>(l, r, coefs+indexP, lerpP, sP);
         interpolate<CHANNELS>(l, r, coefs+indexN, lerpN, sN);
-		sP -= CHANNELS; sN += CHANNELS; coefs += 1<<coefsBits;
+        sP -= CHANNELS; sN += CHANNELS; coefs += 1<<coefsBits;
         interpolate<CHANNELS>(l, r, coefs+indexP, lerpP, sP);
         interpolate<CHANNELS>(l, r, coefs+indexN, lerpN, sN);
-		sP -= CHANNELS; sN += CHANNELS; coefs += 1<<coefsBits;
-	}
+        sP -= CHANNELS; sN += CHANNELS; coefs += 1<<coefsBits;
+        interpolate<CHANNELS>(l, r, coefs+indexP, lerpP, sP);
+        interpolate<CHANNELS>(l, r, coefs+indexN, lerpN, sN);
+        sP -= CHANNELS; sN += CHANNELS; coefs += 1<<coefsBits;
+    }
 }
 
 template<int CHANNELS>
 void AudioResamplerSinc::interpolate(
         int32_t& l, int32_t& r,
-		int32_t const* coefs, int16_t lerp, int16_t const* samples)
+        int32_t const* coefs, int16_t lerp, int16_t const* samples)
 {
-	int32_t c0 = coefs[0];
-	int32_t c1 = coefs[1];
-	int32_t sinc = mulAdd(lerp, (c1-c0)<<1, c0);
-	if (CHANNELS == 2) {
-		uint32_t rl = *reinterpret_cast<uint32_t const*>(samples);
-		l = mulAddRL(1, rl, sinc, l);
-		r = mulAddRL(0, rl, sinc, r);
-	} else {
-		r = l = mulAdd(samples[0], sinc, l);
-	}
+    int32_t c0 = coefs[0];
+    int32_t c1 = coefs[1];
+    int32_t sinc = mulAdd(lerp, (c1-c0)<<1, c0);
+    if (CHANNELS == 2) {
+        uint32_t rl = *reinterpret_cast<uint32_t const*>(samples);
+        l = mulAddRL(1, rl, sinc, l);
+        r = mulAddRL(0, rl, sinc, r);
+    } else {
+        r = l = mulAdd(samples[0], sinc, l);
+    }
 }
 
 // ----------------------------------------------------------------------------
diff --git a/libs/audioflinger/AudioResamplerSinc.h b/libs/audioflinger/AudioResamplerSinc.h
index 89b9577..e6cb90b 100644
--- a/libs/audioflinger/AudioResamplerSinc.h
+++ b/libs/audioflinger/AudioResamplerSinc.h
@@ -24,19 +24,20 @@
 #include "AudioResampler.h"
 
 namespace android {
+
 // ----------------------------------------------------------------------------
 
 class AudioResamplerSinc : public AudioResampler {
 public:
-	AudioResamplerSinc(int bitDepth, int inChannelCount, int32_t sampleRate);
+    AudioResamplerSinc(int bitDepth, int inChannelCount, int32_t sampleRate);
 
-	~AudioResamplerSinc();
-	
+    ~AudioResamplerSinc();
+
     virtual void resample(int32_t* out, size_t outFrameCount,
             AudioBufferProvider* provider);
 private:
     void init();
-    
+
     template<int CHANNELS>
     void resample(int32_t* out, size_t outFrameCount,
             AudioBufferProvider* provider);
@@ -52,12 +53,12 @@
 
     template<int CHANNELS>
     inline void read(int16_t*& impulse, uint32_t& phaseFraction,
-    		int16_t const* in, size_t inputIndex);
+            int16_t const* in, size_t inputIndex);
 
     int16_t *mState;
     int16_t *mImpulse;
     int16_t *mRingFull;
-    
+
     int32_t const * mFirCoefs;
     static const int32_t mFirCoefsDown[];
     static const int32_t mFirCoefsUp[];
@@ -67,15 +68,15 @@
     static const int32_t RESAMPLE_FIR_LERP_INT_BITS  = 4;
 
     // we have 16 coefs samples per zero-crossing
-    static const int coefsBits = RESAMPLE_FIR_LERP_INT_BITS;
-    static const int cShift = kNumPhaseBits - coefsBits;
-    static const uint32_t cMask  = ((1<<coefsBits)-1) << cShift;
+    static const int coefsBits = RESAMPLE_FIR_LERP_INT_BITS;        // 4
+    static const int cShift = kNumPhaseBits - coefsBits;            // 26
+    static const uint32_t cMask  = ((1<<coefsBits)-1) << cShift;    // 0xf<<26 = 3c00 0000
 
     // and we use 15 bits to interpolate between these samples
     // this cannot change because the mul below rely on it.
     static const int pLerpBits = 15;
-    static const int pShift = kNumPhaseBits - coefsBits - pLerpBits;
-    static const uint32_t pMask  = ((1<<pLerpBits)-1) << pShift;
+    static const int pShift = kNumPhaseBits - coefsBits - pLerpBits;    // 11
+    static const uint32_t pMask  = ((1<<pLerpBits)-1) << pShift;    // 0x7fff << 11
 
     // number of zero-crossing on each side
     static const unsigned int halfNumCoefs = RESAMPLE_FIR_NUM_COEF;
diff --git a/libs/surfaceflinger/Android.mk b/libs/surfaceflinger/Android.mk
index 7741456..d14cebf 100644
--- a/libs/surfaceflinger/Android.mk
+++ b/libs/surfaceflinger/Android.mk
@@ -31,6 +31,7 @@
 endif
 
 LOCAL_SHARED_LIBRARIES := \
+	libhardware \
 	libutils \
 	libcutils \
 	libui \
diff --git a/libs/surfaceflinger/DisplayHardware/DisplayHardware.cpp b/libs/surfaceflinger/DisplayHardware/DisplayHardware.cpp
index 5dd9446..cd72179 100644
--- a/libs/surfaceflinger/DisplayHardware/DisplayHardware.cpp
+++ b/libs/surfaceflinger/DisplayHardware/DisplayHardware.cpp
@@ -19,6 +19,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
+#include <math.h>
 
 #include <GLES/egl.h>
 
@@ -27,7 +28,9 @@
 #include <ui/EGLDisplaySurface.h>
 
 #include "DisplayHardware/DisplayHardware.h"
-#include "ui/BlitHardware.h"
+
+#include <hardware/copybit.h>
+#include <hardware/overlay.h>
 
 using namespace android;
 
@@ -91,19 +94,13 @@
     fini();
 }
 
-float DisplayHardware::getDpiX() const           { return mDpiX; }
-float DisplayHardware::getDpiY() const           { return mDpiY; }
-float DisplayHardware::getRefreshRate() const    { return mRefreshRate; }
-
-int DisplayHardware::getWidth() const {
-    return mWidth;
-}
-int DisplayHardware::getHeight() const {
-    return mHeight;
-}
-PixelFormat DisplayHardware::getFormat() const {
-    return mFormat;
-}
+float DisplayHardware::getDpiX() const          { return mDpiX; }
+float DisplayHardware::getDpiY() const          { return mDpiY; }
+float DisplayHardware::getDensity() const       { return mDensity; }
+float DisplayHardware::getRefreshRate() const   { return mRefreshRate; }
+int DisplayHardware::getWidth() const           { return mWidth; }
+int DisplayHardware::getHeight() const          { return mHeight; }
+PixelFormat DisplayHardware::getFormat() const  { return mFormat; }
 
 void DisplayHardware::init(uint32_t dpy)
 {
@@ -195,6 +192,12 @@
         mDpiY = 25.4f * float(value)/EGL_DISPLAY_SCALING;
     }
     mRefreshRate = 60.f;    // TODO: get the real refresh rate 
+    
+    // compute a "density" automatically as a scale factor from 160 dpi
+    // TODO: this value should be calculated a compile time based on the
+    // board.
+    mDensity = floorf((mDpiX>mDpiY ? mDpiX : mDpiY)*0.1f + 0.5f) * (10.0f/160.0f);
+    LOGI("density = %f", mDensity);
 
     /*
      * Create our OpenGL ES context
@@ -237,8 +240,18 @@
     mSurface = surface;
     mContext = context;
     mFormat  = GGL_PIXEL_FORMAT_RGB_565;
+    
+    hw_module_t const* module;
 
-    mBlitEngine = copybit_init();
+    mBlitEngine = NULL;
+    if (hw_get_module(COPYBIT_HARDWARE_MODULE_ID, &module) == 0) {
+        copybit_open(module, &mBlitEngine);
+    }
+
+    mOverlayEngine = NULL;
+    if (hw_get_module(OVERLAY_HARDWARE_MODULE_ID, &module) == 0) {
+        overlay_open(module, &mOverlayEngine);
+    }
 }
 
 /*
@@ -252,7 +265,8 @@
 {
     eglMakeCurrent(mDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
     eglTerminate(mDisplay);
-    copybit_term(mBlitEngine);
+    copybit_close(mBlitEngine);
+    overlay_close(mOverlayEngine);
 }
 
 void DisplayHardware::releaseScreen() const
diff --git a/libs/surfaceflinger/DisplayHardware/DisplayHardware.h b/libs/surfaceflinger/DisplayHardware/DisplayHardware.h
index 299e236..de4a2cc 100644
--- a/libs/surfaceflinger/DisplayHardware/DisplayHardware.h
+++ b/libs/surfaceflinger/DisplayHardware/DisplayHardware.h
@@ -26,6 +26,8 @@
 
 #include "DisplayHardware/DisplayHardwareBase.h"
 
+struct overlay_device_t;
+struct copybit_device_t;
 struct copybit_image_t;
 struct copybit_t;
 
@@ -64,6 +66,7 @@
     float       getDpiX() const;
     float       getDpiY() const;
     float       getRefreshRate() const;
+    float       getDensity() const;
     int         getWidth() const;
     int         getHeight() const;
     PixelFormat getFormat() const;
@@ -74,7 +77,8 @@
     void getDisplaySurface(copybit_image_t* img) const;
     void getDisplaySurface(GGLSurface* fb) const;
     EGLDisplay getEGLDisplay() const { return mDisplay; }
-    copybit_t* getBlitEngine() const { return mBlitEngine; }
+    copybit_device_t* getBlitEngine() const { return mBlitEngine; }
+    overlay_device_t* getOverlayEngine() const { return mOverlayEngine; }
     
     Rect bounds() const {
         return Rect(mWidth, mHeight);
@@ -91,13 +95,15 @@
     float           mDpiX;
     float           mDpiY;
     float           mRefreshRate;
+    float           mDensity;
     int             mWidth;
     int             mHeight;
     PixelFormat     mFormat;
     uint32_t        mFlags;
     mutable Region  mDirty;
     sp<EGLDisplaySurface> mDisplaySurface;
-    copybit_t*      mBlitEngine;
+    copybit_device_t*     mBlitEngine;
+    overlay_device_t*     mOverlayEngine;
 };
 
 }; // namespace android
diff --git a/libs/surfaceflinger/DisplayHardware/DisplayHardwareBase.cpp b/libs/surfaceflinger/DisplayHardware/DisplayHardwareBase.cpp
index 90f6287..f75e5c2 100644
--- a/libs/surfaceflinger/DisplayHardware/DisplayHardwareBase.cpp
+++ b/libs/surfaceflinger/DisplayHardware/DisplayHardwareBase.cpp
@@ -49,8 +49,10 @@
 // ----------------------------------------------------------------------------
 namespace android {
 
-static char const * const kSleepFileName = "/sys/android_power/wait_for_fb_sleep";
-static char const * const kWakeFileName = "/sys/android_power/wait_for_fb_wake";
+static char const * kSleepFileName = "/sys/power/wait_for_fb_sleep";
+static char const * kWakeFileName = "/sys/power/wait_for_fb_wake";
+static char const * const kOldSleepFileName = "/sys/android_power/wait_for_fb_sleep";
+static char const * const kOldWakeFileName = "/sys/android_power/wait_for_fb_wake";
 
 // This dir exists if the framebuffer console is present, either built into
 // the kernel or loaded as a module.
@@ -123,16 +125,22 @@
 status_t DisplayHardwareBase::DisplayEventThread::readyToRun()
 {
     if (access(kSleepFileName, R_OK) || access(kWakeFileName, R_OK)) {
-        LOGE("Couldn't open %s or %s", kSleepFileName, kWakeFileName);
-        return NO_INIT;
+        if (access(kOldSleepFileName, R_OK) || access(kOldWakeFileName, R_OK)) {
+            LOGE("Couldn't open %s or %s", kSleepFileName, kWakeFileName);
+            return NO_INIT;
+        }
+        kSleepFileName = kOldSleepFileName;
+        kWakeFileName = kOldWakeFileName;
     }
     return NO_ERROR;
 }
 
 status_t DisplayHardwareBase::DisplayEventThread::initCheck() const
 {
-    return (access(kSleepFileName, R_OK) == 0 &&
-            access(kWakeFileName, R_OK) == 0 &&
+    return (((access(kSleepFileName, R_OK) == 0 &&
+            access(kWakeFileName, R_OK) == 0) ||
+            (access(kOldSleepFileName, R_OK) == 0 &&
+            access(kOldWakeFileName, R_OK) == 0)) &&
             access(kFbconSysDir, F_OK) != 0) ? NO_ERROR : NO_INIT;
 }
 
diff --git a/libs/surfaceflinger/GPUHardware/GPUHardware.cpp b/libs/surfaceflinger/GPUHardware/GPUHardware.cpp
index b24a0f2..eb75f99 100644
--- a/libs/surfaceflinger/GPUHardware/GPUHardware.cpp
+++ b/libs/surfaceflinger/GPUHardware/GPUHardware.cpp
@@ -30,6 +30,7 @@
 #include <cutils/log.h>
 #include <cutils/properties.h>
 
+#include <utils/IBinder.h>
 #include <utils/MemoryDealer.h>
 #include <utils/MemoryBase.h>
 #include <utils/MemoryHeapPmem.h>
@@ -48,36 +49,113 @@
 
 #include "GPUHardware/GPUHardware.h"
 
+
 /* 
- * This file manages the GPU if there is one. The intent is that this code
- * needs to be different for every devce. Currently there is no abstraction,
- * but in the long term, this code needs to be refactored so that API and
- * implementation are separated.
+ * Manage the GPU. This implementation is very specific to the G1.
+ * There are no abstraction here. 
  * 
- * In this particular implementation, the GPU, its memory and register are
- * managed here. Clients (such as OpenGL ES) request the GPU when then need
- * it and are given a revokable heap containing the registers on memory. 
+ * All this code will soon go-away and be replaced by a new architecture
+ * for managing graphics accelerators.
+ * 
+ * In the meantime, it is conceptually possible to instantiate a
+ * GPUHardwareInterface for another GPU (see GPUFactory at the bottom
+ * of this file); practically... doubtful.
  * 
  */
 
 namespace android {
+
 // ---------------------------------------------------------------------------
 
+class GPUClientHeap;
+class GPUAreaHeap;
+
+class GPUHardware : public GPUHardwareInterface, public IBinder::DeathRecipient
+{
+public:
+    static const int GPU_RESERVED_SIZE;
+    static const int GPUR_SIZE;
+
+            GPUHardware();
+    virtual ~GPUHardware();
+    
+    virtual void revoke(int pid);
+    virtual sp<MemoryDealer> request(int pid);
+    virtual status_t request(int pid, 
+            const sp<IGPUCallback>& callback,
+            ISurfaceComposer::gpu_info_t* gpu);
+
+    virtual status_t friendlyRevoke();
+    virtual void unconditionalRevoke();
+    
+    virtual pid_t getOwner() const { return mOwner; }
+
+    // used for debugging only...
+    virtual sp<SimpleBestFitAllocator> getAllocator() const;
+
+private:
+    
+    
+    enum {
+        NO_OWNER = -1,
+    };
+        
+    struct GPUArea {
+        sp<GPUAreaHeap>     heap;
+        sp<MemoryHeapPmem>  clientHeap;
+        sp<IMemory> map();
+    };
+    
+    struct Client {
+        pid_t       pid;
+        GPUArea     smi;
+        GPUArea     ebi;
+        GPUArea     reg;
+        void createClientHeaps();
+        void revokeAllHeaps();
+    };
+    
+    Client& getClientLocked(pid_t pid);
+    status_t requestLocked(int pid);
+    void releaseLocked();
+    void takeBackGPULocked();
+    void registerCallbackLocked(const sp<IGPUCallback>& callback,
+            Client& client);
+
+    virtual void binderDied(const wp<IBinder>& who);
+
+    mutable Mutex           mLock;
+    sp<GPUAreaHeap>         mSMIHeap;
+    sp<GPUAreaHeap>         mEBIHeap;
+    sp<GPUAreaHeap>         mREGHeap;
+
+    KeyedVector<pid_t, Client> mClients;
+    DefaultKeyedVector< wp<IBinder>, pid_t > mRegisteredClients;
+    
+    pid_t                   mOwner;
+
+    sp<MemoryDealer>        mCurrentAllocator;
+    sp<IGPUCallback>        mCallback;
+    
+    sp<SimpleBestFitAllocator>  mAllocator;
+
+    Condition               mCondition;
+};
+
 // size reserved for GPU surfaces
 // 1200 KB fits exactly:
 //  - two 320*480 16-bits double-buffered surfaces
 //  - one 320*480 32-bits double-buffered surface
-//  - one 320*240 16-bits double-bufferd, 4x anti-aliased surface
-static const int GPU_RESERVED_SIZE  = 1200 * 1024;
-
-static const int GPUR_SIZE          = 1 * 1024 * 1024;
+//  - one 320*240 16-bits double-buffered, 4x anti-aliased surface
+const int GPUHardware::GPU_RESERVED_SIZE  = 1200 * 1024;
+const int GPUHardware::GPUR_SIZE          = 1 * 1024 * 1024;
 
 // ---------------------------------------------------------------------------
 
 /* 
  * GPUHandle is a special IMemory given to the client. It represents their
  * handle to the GPU. Once they give it up, they loose GPU access, or if
- * they explicitely revoke their acces through the binder code 1000.
+ * they explicitly revoke their access through the binder code 1000.
  * In both cases, this triggers a callback to revoke()
  * first, and then actually powers down the chip.
  * 
@@ -92,42 +170,99 @@
  * 
  */
 
-class GPUHandle : public BnMemory
+class GPUClientHeap : public MemoryHeapPmem
 {
 public:
-            GPUHandle(const sp<GPUHardware>& gpu, const sp<IMemoryHeap>& heap)
-                : mGPU(gpu), mClientHeap(heap) {
-            }
-    virtual ~GPUHandle();
-    virtual sp<IMemoryHeap> getMemory(ssize_t* offset, size_t* size) const;
-    virtual status_t onTransact(
-            uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags);
-    void setOwner(int owner) { mOwner = owner; }
-private:
-    void revokeNotification();
+    GPUClientHeap(const wp<GPUHardware>& gpu, 
+            const sp<MemoryHeapBase>& heap)
+        :  MemoryHeapPmem(heap), mGPU(gpu) { }
+protected:
     wp<GPUHardware> mGPU;
-    sp<IMemoryHeap> mClientHeap;
-    int mOwner;
 };
 
-GPUHandle::~GPUHandle() { 
+class GPUAreaHeap : public MemoryHeapBase
+{
+public:
+    GPUAreaHeap(const wp<GPUHardware>& gpu,
+            const char* const vram, size_t size=0, size_t reserved=0)
+    : MemoryHeapBase(vram, size), mGPU(gpu) { 
+        if (base() != MAP_FAILED) {
+            if (reserved == 0)
+                reserved = virtualSize();
+            mAllocator = new SimpleBestFitAllocator(reserved);
+        }
+    }
+    virtual sp<MemoryHeapPmem> createClientHeap() {
+        sp<MemoryHeapBase> parentHeap(this);
+        return new GPUClientHeap(mGPU, parentHeap);
+    }
+    virtual const sp<SimpleBestFitAllocator>& getAllocator() const {
+        return mAllocator; 
+    }
+private:
+    sp<SimpleBestFitAllocator>  mAllocator;
+protected:
+    wp<GPUHardware> mGPU;
+};
+
+class GPURegisterHeap : public GPUAreaHeap
+{
+public:
+    GPURegisterHeap(const sp<GPUHardware>& gpu)
+        : GPUAreaHeap(gpu, "/dev/hw3d", GPUHardware::GPUR_SIZE) { }
+    virtual sp<MemoryHeapPmem> createClientHeap() {
+        sp<MemoryHeapBase> parentHeap(this);
+        return new MemoryHeapRegs(mGPU, parentHeap);
+    }
+private:
+    class MemoryHeapRegs : public GPUClientHeap  {
+    public:
+        MemoryHeapRegs(const wp<GPUHardware>& gpu, 
+             const sp<MemoryHeapBase>& heap)
+            : GPUClientHeap(gpu, heap) { }
+        sp<MemoryHeapPmem::MemoryPmem> createMemory(size_t offset, size_t size);
+        virtual void revoke();
+    private:
+        class GPUHandle : public MemoryHeapPmem::MemoryPmem {
+        public:
+            GPUHandle(const sp<GPUHardware>& gpu,
+                    const sp<MemoryHeapPmem>& heap)
+                : MemoryHeapPmem::MemoryPmem(heap), 
+                  mGPU(gpu), mOwner(gpu->getOwner()) { }
+            virtual ~GPUHandle();
+            virtual sp<IMemoryHeap> getMemory(
+                    ssize_t* offset, size_t* size) const;
+            virtual void revoke() { };
+            virtual status_t onTransact(
+                    uint32_t code, const Parcel& data, 
+                    Parcel* reply, uint32_t flags);
+        private:
+            void revokeNotification();
+            wp<GPUHardware> mGPU;
+            pid_t mOwner;
+        };
+    };
+};
+
+GPURegisterHeap::MemoryHeapRegs::GPUHandle::~GPUHandle() { 
     //LOGD("GPUHandle %p released, revoking GPU", this);
     revokeNotification(); 
 }
-
-void GPUHandle::revokeNotification()  {
+void GPURegisterHeap::MemoryHeapRegs::GPUHandle::revokeNotification()  {
     sp<GPUHardware> hw(mGPU.promote());
     if (hw != 0) {
         hw->revoke(mOwner);
     }
 }
-sp<IMemoryHeap> GPUHandle::getMemory(ssize_t* offset, size_t* size) const
+sp<IMemoryHeap> GPURegisterHeap::MemoryHeapRegs::GPUHandle::getMemory(
+        ssize_t* offset, size_t* size) const
 {
+    sp<MemoryHeapPmem> heap = getHeap();
     if (offset) *offset = 0;
-    if (size)   *size = mClientHeap !=0 ? mClientHeap->virtualSize() : 0;
-    return mClientHeap;
+    if (size)   *size = heap !=0 ? heap->virtualSize() : 0;
+    return heap;
 }
-status_t GPUHandle::onTransact(
+status_t GPURegisterHeap::MemoryHeapRegs::GPUHandle::onTransact(
         uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
 {
     status_t err = BnMemory::onTransact(code, data, reply, flags);
@@ -150,22 +285,14 @@
 
 // ---------------------------------------------------------------------------
 
-class MemoryHeapRegs : public MemoryHeapPmem 
-{
-public:
-            MemoryHeapRegs(const wp<GPUHardware>& gpu, const sp<MemoryHeapBase>& heap);
-    virtual ~MemoryHeapRegs();
-    sp<IMemory> mapMemory(size_t offset, size_t size);
-    virtual void revoke();
-private:
-    wp<GPUHardware> mGPU;
-};
 
-MemoryHeapRegs::MemoryHeapRegs(const wp<GPUHardware>& gpu, const sp<MemoryHeapBase>& heap)
-    :  MemoryHeapPmem(heap), mGPU(gpu)
+sp<MemoryHeapPmem::MemoryPmem> GPURegisterHeap::MemoryHeapRegs::createMemory(
+        size_t offset, size_t size)
 {
+    sp<GPUHandle> memory;
+    sp<GPUHardware> gpu = mGPU.promote();
+    if (heapID()>0 && gpu!=0) {
 #if HAVE_ANDROID_OS
-    if (heapID()>0) {
         /* this is where the GPU is powered on and the registers are mapped
          * in the client */
         //LOGD("ioctl(HW3D_GRANT_GPU)");
@@ -174,27 +301,16 @@
             // it can happen if the master heap has been closed already
             // in which case the GPU already is revoked (app crash for
             // instance).
-            //LOGW("HW3D_GRANT_GPU failed (%s), mFD=%d, base=%p",
-            //        strerror(errno), heapID(), base());
+            LOGW("HW3D_GRANT_GPU failed (%s), mFD=%d, base=%p",
+                    strerror(errno), heapID(), base());
         }
-    }
-#endif
-}
-
-MemoryHeapRegs::~MemoryHeapRegs() 
-{
-}
-
-sp<IMemory> MemoryHeapRegs::mapMemory(size_t offset, size_t size)
-{
-    sp<GPUHandle> memory;
-    sp<GPUHardware> gpu = mGPU.promote();
-    if (heapID()>0 && gpu!=0) 
         memory = new GPUHandle(gpu, this);
+#endif
+    }
     return memory;
 }
 
-void MemoryHeapRegs::revoke() 
+void GPURegisterHeap::MemoryHeapRegs::revoke() 
 {
     MemoryHeapPmem::revoke();
 #if HAVE_ANDROID_OS
@@ -207,25 +323,6 @@
 #endif
 }
 
-// ---------------------------------------------------------------------------
-
-class GPURegisterHeap : public PMemHeapInterface
-{
-public:
-    GPURegisterHeap(const sp<GPUHardware>& gpu)
-        : PMemHeapInterface("/dev/hw3d", GPUR_SIZE), mGPU(gpu)
-    {
-    }
-    virtual ~GPURegisterHeap() {
-    }
-    virtual sp<MemoryHeapPmem> createClientHeap() {
-        sp<MemoryHeapBase> parentHeap(this);
-        return new MemoryHeapRegs(mGPU, parentHeap);
-    }
-private:
-    wp<GPUHardware> mGPU;
-};
-
 /*****************************************************************************/
 
 GPUHardware::GPUHardware()
@@ -237,85 +334,87 @@
 {
 }
 
-sp<MemoryDealer> GPUHardware::request(int pid)
+status_t GPUHardware::requestLocked(int pid)
 {
-    sp<MemoryDealer> dealer;
-
-    LOGD("pid %d requesting gpu surface (current owner = %d)", pid, mOwner);
-
     const int self_pid = getpid();
     if (pid == self_pid) {
         // can't use GPU from surfaceflinger's process
-        return dealer;
-    }
-
-    Mutex::Autolock _l(mLock);
-    
-    if (mOwner != pid) {
-        // someone already has the gpu.
-        takeBackGPULocked();
-
-        // releaseLocked() should be a no-op most of the time
-        releaseLocked();
-
-        requestLocked(); 
-    }
-
-    dealer = mAllocator;
-    mOwner = pid;
-    if (dealer == 0) {
-        mOwner = SURFACE_FAILED;
-    }
-    
-    LOGD_IF(dealer!=0, "gpu surface granted to pid %d", mOwner);
-    return dealer;
-}
-
-status_t GPUHardware::request(const sp<IGPUCallback>& callback,
-        ISurfaceComposer::gpu_info_t* gpu)
-{
-    sp<IMemory> gpuHandle;
-    IPCThreadState* ipc = IPCThreadState::self();
-    const int pid = ipc->getCallingPid();
-    const int self_pid = getpid();
-
-    LOGD("pid %d requesting gpu core (owner = %d)", pid, mOwner);
-
-    if (pid == self_pid) {
-        // can't use GPU from surfaceflinger's process
         return PERMISSION_DENIED;
     }
 
-    Mutex::Autolock _l(mLock);
     if (mOwner != pid) {
-        // someone already has the gpu.
-        takeBackGPULocked();
-
-        // releaseLocked() should be a no-op most of the time
-        releaseLocked();
-
-        requestLocked(); 
+        if (mREGHeap != 0) {
+            if (mOwner != NO_OWNER) {
+                // someone already has the gpu.
+                takeBackGPULocked();
+                releaseLocked();
+            }
+        } else {
+            // first time, initialize the stuff.
+            if (mSMIHeap == 0)
+                mSMIHeap = new GPUAreaHeap(this, "/dev/pmem_gpu0");
+            if (mEBIHeap == 0)
+                mEBIHeap = new GPUAreaHeap(this, 
+                        "/dev/pmem_gpu1", 0, GPU_RESERVED_SIZE);
+            mREGHeap = new GPURegisterHeap(this);
+            mAllocator = mEBIHeap->getAllocator();
+            if (mAllocator == NULL) {
+                // something went terribly wrong.
+                mSMIHeap.clear();
+                mEBIHeap.clear();
+                mREGHeap.clear();
+                return INVALID_OPERATION;
+            }
+        }
+        Client& client = getClientLocked(pid);
+        mCurrentAllocator = new MemoryDealer(client.ebi.clientHeap, mAllocator);
+        mOwner = pid;
     }
+    return NO_ERROR;
+}
 
-    if (mHeapR.isValid()) {
+sp<MemoryDealer> GPUHardware::request(int pid)
+{
+    sp<MemoryDealer> dealer;
+    Mutex::Autolock _l(mLock);
+    Client* client;
+    LOGD("pid %d requesting gpu surface (current owner = %d)", pid, mOwner);
+    if (requestLocked(pid) == NO_ERROR) {
+        dealer = mCurrentAllocator;
+        LOGD_IF(dealer!=0, "gpu surface granted to pid %d", mOwner);
+    }
+    return dealer;
+}
+
+status_t GPUHardware::request(int pid, const sp<IGPUCallback>& callback,
+        ISurfaceComposer::gpu_info_t* gpu)
+{
+    if (callback == 0)
+        return BAD_VALUE;
+
+    sp<IMemory> gpuHandle;
+    LOGD("pid %d requesting gpu core (owner = %d)", pid, mOwner);
+    Mutex::Autolock _l(mLock);
+    status_t err = requestLocked(pid);
+    if (err == NO_ERROR) {
+        // it's guaranteed to be there, be construction
+        Client& client = mClients.editValueFor(pid);
+        registerCallbackLocked(callback, client);
         gpu->count = 2;
-        gpu->regions[0].region = mHeap0.map(true);
-        gpu->regions[0].reserved = mHeap0.reserved;
-        gpu->regions[1].region = mHeap1.map(true);
-        gpu->regions[1].reserved = mHeap1.reserved;
-        gpu->regs = mHeapR.map();
+        gpu->regions[0].region = client.smi.map();
+        gpu->regions[1].region = client.ebi.map();
+        gpu->regs              = client.reg.map();
+        gpu->regions[0].reserved = 0;
+        gpu->regions[1].reserved = GPU_RESERVED_SIZE;
         if (gpu->regs != 0) {
-            static_cast< GPUHandle* >(gpu->regs.get())->setOwner(pid);
+            //LOGD("gpu core granted to pid %d, handle base=%p",
+            //        mOwner, gpu->regs->pointer());
         }
         mCallback = callback;
-        mOwner = pid;
-        //LOGD("gpu core granted to pid %d, handle base=%p",
-        //        mOwner, gpu->regs->pointer());
     } else {
         LOGW("couldn't grant gpu core to pid %d", pid);
     }
-
-    return NO_ERROR;
+    return err;
 }
 
 void GPUHardware::revoke(int pid)
@@ -330,16 +429,16 @@
         // mOwner could be <0 if the same process acquired the GPU
         // several times without releasing it first.
         mCondition.signal();
-        releaseLocked(true);
+        releaseLocked();
     }
 }
 
 status_t GPUHardware::friendlyRevoke()
 {
     Mutex::Autolock _l(mLock);
-    takeBackGPULocked();
     //LOGD("friendlyRevoke owner=%d", mOwner);
-    releaseLocked(true);
+    takeBackGPULocked();
+    releaseLocked();
     return NO_ERROR;
 }
 
@@ -353,90 +452,37 @@
     }
 }
 
-void GPUHardware::requestLocked()
+void GPUHardware::releaseLocked()
 {
-    if (mAllocator == 0) {
-        GPUPart* part = 0;
-        sp<PMemHeap> surfaceHeap;
-        if (mHeap1.promote() == false) {
-            //LOGD("requestLocked: (1) creating new heap");
-            mHeap1.set(new PMemHeap("/dev/pmem_gpu1", 0, GPU_RESERVED_SIZE));
+    //LOGD("revoking gpu from pid %d", mOwner);
+    if (mOwner != NO_OWNER) {
+        // this may fail because the client might have died, and have
+        // been removed from the list.
+        ssize_t index = mClients.indexOfKey(mOwner);
+        if (index >= 0) {
+            Client& client(mClients.editValueAt(index));
+            client.revokeAllHeaps();
         }
-        if (mHeap1.isValid()) {
-            //LOGD("requestLocked: (1) heap is valid");
-            // NOTE: if GPU1 is available we use it for our surfaces
-            // this could be device specific, so we should do something more
-            // generic
-            surfaceHeap = static_cast< PMemHeap* >( mHeap1.getHeap().get() );
-            part = &mHeap1;
-            if (mHeap0.promote() == false) {
-                //LOGD("requestLocked: (0) creating new heap");
-                mHeap0.set(new PMemHeap("/dev/pmem_gpu0"));
-            }
-        } else {
-            //LOGD("requestLocked: (1) heap is not valid");
-            // No GPU1, use GPU0 only
-            if (mHeap0.promote() == false) {
-                //LOGD("requestLocked: (0) creating new heap");
-                mHeap0.set(new PMemHeap("/dev/pmem_gpu0", 0, GPU_RESERVED_SIZE));
-            }
-            if (mHeap0.isValid()) {
-                //LOGD("requestLocked: (0) heap is valid");
-                surfaceHeap = static_cast< PMemHeap* >( mHeap0.getHeap().get() );
-                part = &mHeap0;
-            }
-        }
-        
-        if (mHeap0.isValid() || mHeap1.isValid()) {
-            if (mHeapR.promote() == false) {
-                //LOGD("requestLocked: (R) creating new register heap");
-                mHeapR.set(new GPURegisterHeap(this));
-            }
-        } else {
-            // we got nothing...
-            mHeap0.clear();
-            mHeap1.clear();
-        }
-
-        if (mHeapR.isValid() == false) {
-            //LOGD("requestLocked: (R) register heap not valid!!!");
-            // damn, couldn't get the gpu registers!
-            mHeap0.clear();
-            mHeap1.clear();
-            surfaceHeap.clear();
-            part = NULL;
-        }
-
-        if (surfaceHeap != 0 && part && part->getClientHeap()!=0) {
-            part->reserved = GPU_RESERVED_SIZE;
-            part->surface = true;
-            mAllocatorDebug = static_cast<SimpleBestFitAllocator*>(
-                    surfaceHeap->getAllocator().get());
-            mAllocator = new MemoryDealer(
-                    part->getClientHeap(),
-                    surfaceHeap->getAllocator());
-        }
+        mOwner = NO_OWNER;
+        mCurrentAllocator.clear();
+        mCallback.clear();
     }
 }
 
-void GPUHardware::releaseLocked(bool dispose)
+GPUHardware::Client& GPUHardware::getClientLocked(pid_t pid)
 {
-    /* 
-     * if dispose is set, we will force the destruction of the heap,
-     * so it is given back to other systems, such as camera.
-     * Otherwise, we'll keep a weak pointer to it, this way we might be able
-     * to reuse it later if it's still around. 
-     */
-    //LOGD("revoking gpu from pid %d", mOwner);
-    mOwner = NO_OWNER;
-    mAllocator.clear();
-    mCallback.clear();
-
-    /* if we're asked for a full revoke, dispose only of the heap
-     * we're not using for surface (as we might need it while drawing) */
-    mHeap0.release(mHeap0.surface ? false : dispose);
-    mHeap1.release(mHeap1.surface ? false : dispose);
-    mHeapR.release(false);
+    ssize_t index = mClients.indexOfKey(pid);
+    if (index < 0) {
+        Client client;
+        client.pid = pid;
+        client.smi.heap = mSMIHeap;
+        client.ebi.heap = mEBIHeap;
+        client.reg.heap = mREGHeap;
+        index = mClients.add(pid, client);
+    }
+    Client& client(mClients.editValueAt(index));
+    client.createClientHeaps();
+    return client;
 }
 
 // ----------------------------------------------------------------------------
@@ -444,8 +490,7 @@
 
 sp<SimpleBestFitAllocator> GPUHardware::getAllocator() const {
     Mutex::Autolock _l(mLock);
-    sp<SimpleBestFitAllocator> allocator = mAllocatorDebug.promote();
-    return allocator;
+    return mAllocator;
 }
 
 void GPUHardware::unconditionalRevoke()
@@ -456,102 +501,81 @@
 
 // ---------------------------------------------------------------------------
 
-
-GPUHardware::GPUPart::GPUPart()
-    : surface(false), reserved(0)
-{
-}
-
-GPUHardware::GPUPart::~GPUPart() {
-}
-    
-const sp<PMemHeapInterface>& GPUHardware::GPUPart::getHeap() const {
-    return mHeap;
-}
-
-const sp<MemoryHeapPmem>& GPUHardware::GPUPart::getClientHeap() const {
-    return mClientHeap;
-}
-
-bool GPUHardware::GPUPart::isValid() const {
-    return ((mHeap!=0) && (mHeap->base() != MAP_FAILED));
-}
-
-void GPUHardware::GPUPart::clear() 
-{
-    mHeap.clear();
-    mHeapWeak.clear();
-    mClientHeap.clear();
-    surface = false;
-}
-
-void GPUHardware::GPUPart::set(const sp<PMemHeapInterface>& heap) 
-{
-    mHeapWeak.clear();
-    if (heap!=0 && heap->base() == MAP_FAILED) {
-        mHeap.clear();
-        mClientHeap.clear();
-    } else { 
-        mHeap = heap;
-        mClientHeap = mHeap->createClientHeap();
-    }
-}
-
-bool GPUHardware::GPUPart::promote() 
-{
-    //LOGD("mHeapWeak=%p, mHeap=%p", mHeapWeak.unsafe_get(), mHeap.get());
-    if (mHeap == 0) {
-        mHeap = mHeapWeak.promote();
-    }
-    if (mHeap != 0) {
-        if (mClientHeap != 0) {
-            mClientHeap->revoke();
-        }
-        mClientHeap = mHeap->createClientHeap();
-    }  else {
-        surface = false;
-    }
-    return mHeap != 0;
-}
-
-sp<IMemory> GPUHardware::GPUPart::map(bool clear) 
-{
+sp<IMemory> GPUHardware::GPUArea::map() {
     sp<IMemory> memory;
-    if (mClientHeap != NULL) {
-        memory = mClientHeap->mapMemory(0, mHeap->virtualSize());
-        if (clear && memory!=0) {
-            //StopWatch sw("memset");
-            memset(memory->pointer(), 0, memory->size());
-        }
+    if (clientHeap != 0 && heap != 0) {
+        memory = clientHeap->mapMemory(0, heap->virtualSize());
     }
     return memory;
 }
 
-void GPUHardware::GPUPart::release(bool dispose)
+void GPUHardware::Client::createClientHeaps() 
 {
-    if (mClientHeap != 0) {
-        mClientHeap->revoke();
-        mClientHeap.clear();
+    if (smi.clientHeap == 0)
+        smi.clientHeap = smi.heap->createClientHeap();
+    if (ebi.clientHeap == 0)
+        ebi.clientHeap = ebi.heap->createClientHeap();
+    if (reg.clientHeap == 0)
+        reg.clientHeap = reg.heap->createClientHeap();
+}
+
+void GPUHardware::Client::revokeAllHeaps() 
+{
+    if (smi.clientHeap != 0)
+        smi.clientHeap->revoke();
+    if (ebi.clientHeap != 0)
+        ebi.clientHeap->revoke();
+    if (reg.clientHeap != 0)
+        reg.clientHeap->revoke();
+}
+
+void GPUHardware::registerCallbackLocked(const sp<IGPUCallback>& callback,
+        Client& client)
+{
+    sp<IBinder> binder = callback->asBinder();
+    if (mRegisteredClients.add(binder, client.pid) >= 0) {
+        binder->linkToDeath(this);
     }
-    if (dispose) {
-        if (mHeapWeak!=0 && mHeap==0) {
-            mHeap = mHeapWeak.promote();
-        }
-        if (mHeap != 0) {
-            mHeap->dispose();
-            mHeapWeak.clear();
-            mHeap.clear();
-        } else {
-            surface = false;
-        }
-    } else {
-        if (mHeap != 0) {
-            mHeapWeak = mHeap;
-            mHeap.clear();
+}
+
+void GPUHardware::binderDied(const wp<IBinder>& who)
+{
+    Mutex::Autolock _l(mLock);
+    pid_t pid = mRegisteredClients.valueFor(who);
+    if (pid != 0) {
+        ssize_t index = mClients.indexOfKey(pid);
+        if (index >= 0) {
+            //LOGD("*** removing client at %d", index);
+            Client& client(mClients.editValueAt(index));
+            client.revokeAllHeaps(); // not really needed in theory
+            mClients.removeItemsAt(index);
+            if (mClients.size() == 0) {
+                //LOGD("*** was last client closing everything");
+                mCallback.clear();
+                mAllocator.clear();
+                mCurrentAllocator.clear();
+                mSMIHeap.clear();
+                mREGHeap.clear();
+                
+                // NOTE: we cannot clear the EBI heap because surfaceflinger
+                // itself may be using it, since this is where surfaces
+                // are allocated. if we're in the middle of compositing 
+                // a surface (even if its process just died), we cannot
+                // rip the heap under our feet.
+                
+                mOwner = NO_OWNER;
+            }
         }
     }
 }
 
 // ---------------------------------------------------------------------------
+
+sp<GPUHardwareInterface> GPUFactory::getGPU()
+{
+    return new GPUHardware();
+}
+
+// ---------------------------------------------------------------------------
 }; // namespace android
 
diff --git a/libs/surfaceflinger/GPUHardware/GPUHardware.h b/libs/surfaceflinger/GPUHardware/GPUHardware.h
index 9a78b99..3354528 100644
--- a/libs/surfaceflinger/GPUHardware/GPUHardware.h
+++ b/libs/surfaceflinger/GPUHardware/GPUHardware.h
@@ -22,92 +22,39 @@
 
 #include <utils/RefBase.h>
 #include <utils/threads.h>
+#include <utils/KeyedVector.h>
+
+#include <ui/ISurfaceComposer.h>
 
 namespace android {
 
 // ---------------------------------------------------------------------------
 
-class GPUHardwareInterface : public RefBase
+class IGPUCallback;
+
+class GPUHardwareInterface : public virtual RefBase
 {
 public:
     virtual void                revoke(int pid) = 0;
     virtual sp<MemoryDealer>    request(int pid) = 0;
-    virtual status_t            request(const sp<IGPUCallback>& callback,
+    virtual status_t            request(int pid, const sp<IGPUCallback>& callback,
             ISurfaceComposer::gpu_info_t* gpu) = 0;
 
     virtual status_t            friendlyRevoke() = 0;
-    virtual void                unconditionalRevoke() = 0;
     
     // used for debugging only...
     virtual sp<SimpleBestFitAllocator> getAllocator() const  = 0;
     virtual pid_t getOwner() const = 0;
+    virtual void unconditionalRevoke() = 0;
 };
 
 // ---------------------------------------------------------------------------
 
-class IMemory;
-class MemoryHeapPmem;
-class PMemHeap;
-
-class GPUHardware : public GPUHardwareInterface
-{
+class GPUFactory
+{    
 public:
-            GPUHardware();
-    virtual ~GPUHardware();
-    
-    virtual void                revoke(int pid);
-    virtual sp<MemoryDealer>    request(int pid);
-    virtual status_t            request(const sp<IGPUCallback>& callback,
-            ISurfaceComposer::gpu_info_t* gpu);
-
-    virtual status_t            friendlyRevoke();
-    virtual void                unconditionalRevoke();
-    
-    // used for debugging only...
-    virtual sp<SimpleBestFitAllocator> getAllocator() const;
-    virtual pid_t getOwner() const { return mOwner; }
-    
-private:
-    enum {
-        NO_OWNER        = -1,
-        SURFACE_FAILED  = -2
-    };
-    
-    void requestLocked();
-    void releaseLocked(bool dispose = false);
-    void takeBackGPULocked();
-    
-    class GPUPart
-    {
-    public:
-        bool surface;
-        size_t reserved;
-        GPUPart();
-        ~GPUPart();
-        const sp<PMemHeapInterface>& getHeap() const;
-        const sp<MemoryHeapPmem>& getClientHeap() const;
-        bool isValid() const;
-        void clear();
-        void set(const sp<PMemHeapInterface>& heap);
-        bool promote();
-        sp<IMemory> map(bool clear = false);
-        void release(bool dispose);
-    private:
-        sp<PMemHeapInterface>   mHeap;
-        wp<PMemHeapInterface>   mHeapWeak;
-        sp<MemoryHeapPmem>      mClientHeap;
-    };
-    
-    mutable Mutex   mLock;
-    GPUPart         mHeap0; // SMI
-    GPUPart         mHeap1; // EBI1
-    GPUPart         mHeapR;
-    sp<MemoryDealer> mAllocator;
-    pid_t            mOwner;
-    sp<IGPUCallback> mCallback;
-    wp<SimpleBestFitAllocator> mAllocatorDebug;
-    
-    Condition       mCondition;
+    // the gpu factory
+    static sp<GPUHardwareInterface> getGPU();
 };
 
 // ---------------------------------------------------------------------------
diff --git a/libs/surfaceflinger/Layer.cpp b/libs/surfaceflinger/Layer.cpp
index 4f6bae1..8ba0851 100644
--- a/libs/surfaceflinger/Layer.cpp
+++ b/libs/surfaceflinger/Layer.cpp
@@ -92,26 +92,29 @@
     status_t err = getPixelFormatInfo(format, &info);
     if (err) return err;
 
-    // TODO: if eHardware is explicitely requested, we should fail
+    // TODO: if eHardware is explicitly requested, we should fail
     // on systems where we can't allocate memory that can be used with
     // DMA engines for instance.
+    
+    // FIXME: we always ask for hardware for now (this should come from copybit)
+    flags |= ISurfaceComposer::eHardware;
 
-    int memory_type = NATIVE_MEMORY_TYPE_PMEM;
+    const uint32_t memory_flags = flags & 
+            (ISurfaceComposer::eGPU | 
+             ISurfaceComposer::eHardware | 
+             ISurfaceComposer::eSecure);
     
     // pixel-alignment. the final alignment may be bigger because
     // we always force a 4-byte aligned bpr.
     uint32_t alignment = 1;
 
-    const uint32_t mask = ISurfaceComposer::eGPU | ISurfaceComposer::eSecure;
-    if ((flags & mask) == ISurfaceComposer::eGPU) {
-        // don't grant GPU memory if GPU is disabled
-        char value[PROPERTY_VALUE_MAX];
-        property_get("debug.egl.hw", value, "1");
-        if (atoi(value) != 0) {
-            flags |= ISurfaceComposer::eHardware;
-            memory_type = NATIVE_MEMORY_TYPE_GPU;
-            // TODO: this value should come from the h/w
-            alignment = 8; 
+    if (flags & ISurfaceComposer::eGPU) {
+        // FIXME: this value should come from the h/w
+        alignment = 8; 
+        // FIXME: this is msm7201A specific, as its GPU only supports
+        // BGRA_8888.
+        if (format == PIXEL_FORMAT_RGBA_8888) {
+            format = PIXEL_FORMAT_BGRA_8888;
         }
     }
 
@@ -119,7 +122,7 @@
     mNeedsBlending = (info.h_alpha - info.l_alpha) > 0;
     sp<MemoryDealer> allocators[2];
     for (int i=0 ; i<2 ; i++) {
-        allocators[i] = client->createAllocator(memory_type);
+        allocators[i] = client->createAllocator(memory_flags);
         if (allocators[i] == 0)
             return NO_MEMORY;
         mBuffers[i].init(allocators[i]);
@@ -133,7 +136,7 @@
     mSurface = new Surface(clientIndex(),
             allocators[0]->getMemoryHeap(),
             allocators[1]->getMemoryHeap(),
-            memory_type, mIdentity);
+            mIdentity);
 
     return NO_ERROR;
 }
@@ -180,7 +183,7 @@
         front.getBitmapSurface(&src);
         copybit_rect_t srect = { 0, 0, t.width, t.height };
 
-        copybit_t* copybit = mFlinger->getBlitEngine();
+        copybit_device_t* copybit = mFlinger->getBlitEngine();
         copybit->set_parameter(copybit, COPYBIT_TRANSFORM, getOrientation());
         copybit->set_parameter(copybit, COPYBIT_PLANE_ALPHA, s.alpha);
         copybit->set_parameter(copybit, COPYBIT_DITHER,
diff --git a/libs/surfaceflinger/LayerBase.cpp b/libs/surfaceflinger/LayerBase.cpp
index 17c9f42..af353e2 100644
--- a/libs/surfaceflinger/LayerBase.cpp
+++ b/libs/surfaceflinger/LayerBase.cpp
@@ -30,7 +30,7 @@
 #include "DisplayHardware/DisplayHardware.h"
 
 
-// We don't honor the premultipliad alpha flags, which means that
+// We don't honor the premultiplied alpha flags, which means that
 // premultiplied surface may be composed using a non-premultiplied
 // equation. We do this because it may be a lot faster on some hardware
 // The correct value is HONOR_PREMULTIPLIED_ALPHA = 1
@@ -256,7 +256,7 @@
 
     // see if we can/should use 2D h/w with the new configuration
     mCanUseCopyBit = false;
-    copybit_t* copybit = mFlinger->getBlitEngine();
+    copybit_device_t* copybit = mFlinger->getBlitEngine();
     if (copybit) { 
         const int step = copybit->get(copybit, COPYBIT_ROTATION_STEP_DEG);
         const int scaleBits = copybit->get(copybit, COPYBIT_SCALING_FRAC_BITS);
@@ -413,7 +413,7 @@
         // premultiplied alpha.
         
         // If the texture doesn't have an alpha channel we can
-        // use REPLACE and switch to non premultiplied-alpha
+        // use REPLACE and switch to non premultiplied alpha
         // blending (SRCA/ONE_MINUS_SRCA).
         
         GLenum env, src;
@@ -431,11 +431,11 @@
         glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, env);
     } else {
         glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+        glColor4x(0x10000, 0x10000, 0x10000, 0x10000);
         if (needsBlending()) {
             GLenum src = mPremultipliedAlpha ? GL_ONE : GL_SRC_ALPHA;
             glEnable(GL_BLEND);
             glBlendFunc(src, GL_ONE_MINUS_SRC_ALPHA);
-            glColor4x(0x10000, 0x10000, 0x10000, 0x10000);
         } else {
             glDisable(GL_BLEND);
         }
@@ -463,7 +463,7 @@
             glMatrixMode(GL_TEXTURE);
             glLoadIdentity();
             if (!(mFlags & DisplayHardware::NPOT_EXTENSION)) {
-                // find the smalest power-of-two that will accomodate our surface
+                // find the smallest power-of-two that will accommodate our surface
                 GLuint tw = 1 << (31 - clz(t.width));
                 GLuint th = 1 << (31 - clz(t.height));
                 if (tw < t.width)  tw <<= 1;
@@ -556,7 +556,7 @@
     GLuint texture_w = tw;
     GLuint texture_h = th;
     if (!(flags & DisplayHardware::NPOT_EXTENSION)) {
-        // find the smalest power-of-two that will accomodate our surface
+        // find the smallest power-of-two that will accommodate our surface
         texture_w = 1 << (31 - clz(t.width));
         texture_h = 1 << (31 - clz(t.height));
         if (texture_w < t.width)  texture_w <<= 1;
@@ -582,6 +582,8 @@
             glTexImage2D(GL_DIRECT_TEXTURE_2D_QUALCOMM, 0,
                     GL_RGBA, tw, th, 0,
                     GL_RGBA, GL_UNSIGNED_BYTE, t.data);
+        } else if (t.format == GGL_PIXEL_FORMAT_BGRA_8888) {
+            // TODO: add GL_BGRA extension
         } else {
             // oops, we don't handle this format, try the regular path
             goto regular;
@@ -592,7 +594,7 @@
 regular:
         Rect bounds(dirty.bounds());
         GLvoid* data = 0;
-        if (texture_w!=textureWidth || texture_w!=textureHeight) {
+        if (texture_w!=textureWidth || texture_h!=textureHeight) {
             // texture size changed, we need to create a new one
 
             if (!textureWidth || !textureHeight) {
@@ -606,31 +608,36 @@
                     bounds.set(Rect(tw, th));
                 }
             }
-
+            
             if (t.format == GGL_PIXEL_FORMAT_RGB_565) {
                 glTexImage2D(GL_TEXTURE_2D, 0,
-                        GL_RGB, tw, th, 0,
+                        GL_RGB, texture_w, texture_h, 0,
                         GL_RGB, GL_UNSIGNED_SHORT_5_6_5, data);
             } else if (t.format == GGL_PIXEL_FORMAT_RGBA_4444) {
                 glTexImage2D(GL_TEXTURE_2D, 0,
-                        GL_RGBA, tw, th, 0,
+                        GL_RGBA, texture_w, texture_h, 0,
                         GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, data);
             } else if (t.format == GGL_PIXEL_FORMAT_RGBA_8888) {
                 glTexImage2D(GL_TEXTURE_2D, 0,
-                        GL_RGBA, tw, th, 0,
+                        GL_RGBA, texture_w, texture_h, 0,
                         GL_RGBA, GL_UNSIGNED_BYTE, data);
             } else if ( t.format == GGL_PIXEL_FORMAT_YCbCr_422_SP ||
                         t.format == GGL_PIXEL_FORMAT_YCbCr_420_SP) {
                 // just show the Y plane of YUV buffers
                 data = t.data;
                 glTexImage2D(GL_TEXTURE_2D, 0,
-                        GL_LUMINANCE, tw, th, 0,
+                        GL_LUMINANCE, texture_w, texture_h, 0,
                         GL_LUMINANCE, GL_UNSIGNED_BYTE, data);
+            } else {
+                // oops, we don't handle this format!
+                LOGE("layer %p, texture=%d, using format %d, which is not "
+                     "supported by the GL", this, textureName, t.format);
+                textureName = -1;
             }
-            textureWidth = tw;
-            textureHeight = th;
+            textureWidth = texture_w;
+            textureHeight = texture_h;
         }
-        if (!data) {
+        if (!data && textureName>=0) {
             if (t.format == GGL_PIXEL_FORMAT_RGB_565) {
                 glTexSubImage2D(GL_TEXTURE_2D, 0,
                         0, bounds.top, t.width, bounds.height(),
diff --git a/libs/surfaceflinger/LayerBase.h b/libs/surfaceflinger/LayerBase.h
index 10c1bc1..b3f3771 100644
--- a/libs/surfaceflinger/LayerBase.h
+++ b/libs/surfaceflinger/LayerBase.h
@@ -23,6 +23,8 @@
 #include <private/ui/LayerState.h>
 
 #include <ui/Region.h>
+#include <ui/Overlay.h>
+
 #include <pixelflinger/pixelflinger.h>
 
 #include "Transform.h"
@@ -223,16 +225,14 @@
         Surface(SurfaceID id, int identity) { 
             mParams.token = id;
             mParams.identity = identity;
-            mParams.type = 0;
         }
         Surface(SurfaceID id, 
                 const sp<IMemoryHeap>& heap0,
                 const sp<IMemoryHeap>& heap1,
-                int memory_type, int identity)
+                int identity)
         {
             mParams.token = id;
             mParams.identity = identity;
-            mParams.type = memory_type;
             mParams.heap[0] = heap0;
             mParams.heap[1] = heap1;
         }
@@ -240,8 +240,8 @@
             // TODO: We now have a point here were we can clean-up the
             // client's mess.
             // This is also where surface id should be recycled.
-            //LOGD("Surface %d, heaps={%p, %p}, type=%d destroyed",
-            //        mId, mHeap[0].get(), mHeap[1].get(), mMemoryType);
+            //LOGD("Surface %d, heaps={%p, %p} destroyed",
+            //        mId, mHeap[0].get(), mHeap[1].get());
         }
 
         virtual void getSurfaceData(
@@ -254,6 +254,10 @@
                 { return INVALID_OPERATION; }
         virtual void postBuffer(ssize_t offset) { }
         virtual void unregisterBuffers() { };
+        virtual sp<Overlay> createOverlay(
+                uint32_t w, uint32_t h, int32_t format) {
+            return NULL;
+        };
 
     private:
         ISurfaceFlingerClient::surface_data_t mParams;
diff --git a/libs/surfaceflinger/LayerBlur.cpp b/libs/surfaceflinger/LayerBlur.cpp
index 192ceda..e3ae7fb 100644
--- a/libs/surfaceflinger/LayerBlur.cpp
+++ b/libs/surfaceflinger/LayerBlur.cpp
@@ -145,11 +145,13 @@
             mRefreshCache = false;
             mAutoRefreshPending = false;
             
-            uint16_t* const pixels = (uint16_t*)malloc(w*h*2);
+            // allocate enough memory for 4-bytes (2 pixels) aligned data
+            const int32_t s = (w + 1) & ~1;
+            uint16_t* const pixels = (uint16_t*)malloc(s*h*2);
 
-            // this reads the frame-buffer, so a h/w GL would have to
+            // This reads the frame-buffer, so a h/w GL would have to
             // finish() its rendering first. we don't want to do that
-            // too often.
+            // too often. Read data is 4-bytes aligned.
             glReadPixels(X, Y, w, h, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, pixels);
             
             // blur that texture.
@@ -157,7 +159,7 @@
             bl.version = sizeof(GGLSurface);
             bl.width = w;
             bl.height = h;
-            bl.stride = w;
+            bl.stride = s;
             bl.format = GGL_PIXEL_FORMAT_RGB_565;
             bl.data = (GGLubyte*)pixels;            
             blurFilter(&bl, 8, 2);
diff --git a/libs/surfaceflinger/LayerBuffer.cpp b/libs/surfaceflinger/LayerBuffer.cpp
index d871fc3..3861e68 100644
--- a/libs/surfaceflinger/LayerBuffer.cpp
+++ b/libs/surfaceflinger/LayerBuffer.cpp
@@ -104,7 +104,7 @@
          * the requested scale factor, in which case we perform the scaling
          * in several passes. */
 
-        copybit_t* copybit = mFlinger->getBlitEngine();
+        copybit_device_t* copybit = mFlinger->getBlitEngine();
         const float min = copybit->get(copybit, COPYBIT_MINIFICATION_LIMIT);
         const float mag = copybit->get(copybit, COPYBIT_MAGNIFICATION_LIMIT);
 
@@ -123,7 +123,7 @@
             if (UNLIKELY(mTemporaryDealer == 0)) {
                 // allocate a memory-dealer for this the first time
                 mTemporaryDealer = mFlinger->getSurfaceHeapManager()
-                        ->createHeap(NATIVE_MEMORY_TYPE_PMEM);
+                        ->createHeap(ISurfaceComposer::eHardware);
                 mTempBitmap.init(mTemporaryDealer);
             }
 
@@ -230,7 +230,18 @@
 status_t LayerBuffer::registerBuffers(int w, int h, int hstride, int vstride,
             PixelFormat format, const sp<IMemoryHeap>& memoryHeap)
 {
-    status_t err = (memoryHeap!=0 && memoryHeap->heapID() >= 0) ? NO_ERROR : NO_INIT;
+    if (memoryHeap == NULL) {
+        // this is allowed, but in this case, it is illegal to receive
+        // postBuffer(). The surface just erases the framebuffer with
+        // fully transparent pixels.
+        mHeap.clear();
+        mWidth = w;
+        mHeight = h;
+        mNeedsBlending = false;
+        return NO_ERROR;
+    }
+    
+    status_t err = (memoryHeap->heapID() >= 0) ? NO_ERROR : NO_INIT;
     if (err != NO_ERROR)
         return err;
 
@@ -281,6 +292,32 @@
     invalidateLocked();
 }
 
+sp<Overlay> LayerBuffer::createOverlay(uint32_t w, uint32_t h, int32_t format)
+{
+    sp<Overlay> result;
+    Mutex::Autolock _l(mLock);
+    if (mHeap != 0 || mBuffer != 0) {
+        // we're a push surface. error.
+        return result;
+    }
+    
+    overlay_device_t* overlay_dev = mFlinger->getOverlayEngine();
+    if (overlay_dev == NULL) {
+        // overlays not supported
+        return result;
+    }
+
+    overlay_t* overlay = overlay_dev->createOverlay(overlay_dev, w, h, format);
+    if (overlay == NULL) {
+        // couldn't create the overlay (no memory? no more overlays?)
+        return result;
+    }
+    
+    /* TODO: implement the real stuff here */
+    
+    return result;
+}
+
 sp<LayerBuffer::Buffer> LayerBuffer::getBuffer() const
 {
     Mutex::Autolock _l(mLock);
@@ -330,6 +367,15 @@
         owner->unregisterBuffers();
 }
 
+sp<Overlay> LayerBuffer::SurfaceBuffer::createOverlay(
+        uint32_t w, uint32_t h, int32_t format) {
+    sp<Overlay> result;
+    LayerBuffer* owner(getOwner());
+    if (owner)
+        result = owner->createOverlay(w, h, format);
+    return result;
+}
+
 void LayerBuffer::SurfaceBuffer::disown()
 {
     Mutex::Autolock _l(mLock);
diff --git a/libs/surfaceflinger/LayerBuffer.h b/libs/surfaceflinger/LayerBuffer.h
index ef473dd..3e616f2 100644
--- a/libs/surfaceflinger/LayerBuffer.h
+++ b/libs/surfaceflinger/LayerBuffer.h
@@ -33,6 +33,7 @@
 
 class MemoryDealer;
 class Region;
+class Overlay;
 
 class LayerBuffer : public LayerBaseClient
 {
@@ -56,6 +57,7 @@
             PixelFormat format, const sp<IMemoryHeap>& heap);
     void postBuffer(ssize_t offset);
     void unregisterBuffers();
+    sp<Overlay> createOverlay(uint32_t w, uint32_t h, int32_t format);
     void invalidate();
     void invalidateLocked();
 
@@ -107,7 +109,9 @@
                 PixelFormat format, const sp<IMemoryHeap>& heap);
         virtual void postBuffer(ssize_t offset);
         virtual void unregisterBuffers();
-        void disown();
+        virtual sp<Overlay> createOverlay(
+                uint32_t w, uint32_t h, int32_t format);
+       void disown();
     private:
         LayerBuffer* getOwner() const {
             Mutex::Autolock _l(mLock);
diff --git a/libs/surfaceflinger/LayerDim.cpp b/libs/surfaceflinger/LayerDim.cpp
index fc23d53..0c347cc 100644
--- a/libs/surfaceflinger/LayerDim.cpp
+++ b/libs/surfaceflinger/LayerDim.cpp
@@ -48,7 +48,7 @@
 {
     // must only be called once.
     mDimmerDealer = flinger->getSurfaceHeapManager()
-            ->createHeap(NATIVE_MEMORY_TYPE_PMEM);
+            ->createHeap(ISurfaceComposer::eHardware);
     if (mDimmerDealer != 0) {
         mDimmerBitmap.init(mDimmerDealer);
         mDimmerBitmap.setBits(w, h, 1, PIXEL_FORMAT_RGB_565);
@@ -81,7 +81,7 @@
             mDimmerBitmap.getBitmapSurface(&src);
             const copybit_rect_t& srect(drect);
 
-            copybit_t* copybit = mFlinger->getBlitEngine();
+            copybit_device_t* copybit = mFlinger->getBlitEngine();
             copybit->set_parameter(copybit, COPYBIT_TRANSFORM, 0);
             copybit->set_parameter(copybit, COPYBIT_PLANE_ALPHA, s.alpha);
             copybit->set_parameter(copybit, COPYBIT_DITHER, COPYBIT_ENABLE);
diff --git a/libs/surfaceflinger/SurfaceFlinger.cpp b/libs/surfaceflinger/SurfaceFlinger.cpp
index 45496b2..e8de21a 100644
--- a/libs/surfaceflinger/SurfaceFlinger.cpp
+++ b/libs/surfaceflinger/SurfaceFlinger.cpp
@@ -38,7 +38,6 @@
 #include <utils/String16.h>
 #include <utils/StopWatch.h>
 
-#include <ui/BlitHardware.h>
 #include <ui/PixelFormat.h>
 #include <ui/DisplayInfo.h>
 #include <ui/EGLDisplaySurface.h>
@@ -202,23 +201,6 @@
 {
     LOGI("SurfaceFlinger is starting");
 
-    // create the shared control-block
-    mServerHeap = new MemoryDealer(4096, MemoryDealer::READ_ONLY);
-    LOGE_IF(mServerHeap==0, "can't create shared memory dealer");
-
-    mServerCblkMemory = mServerHeap->allocate(4096);
-    LOGE_IF(mServerCblkMemory==0, "can't create shared control block");
-
-    mServerCblk = static_cast<surface_flinger_cblk_t *>(mServerCblkMemory->pointer());
-    LOGE_IF(mServerCblk==0, "can't get to shared control block's address");
-    new(mServerCblk) surface_flinger_cblk_t;
-
-    // create the surface Heap manager, which manages the heaps
-    // (be it in RAM or VRAM) where surfaces are allocated
-    // We give 8 MB per client.
-    mSurfaceHeapManager = new SurfaceHeapManager(8 << 20);
-    mGPU = new GPUHardware();
-
     // debugging stuff...
     char value[PROPERTY_VALUE_MAX];
     property_get("debug.sf.showupdates", value, "0");
@@ -244,11 +226,16 @@
     glDeleteTextures(1, &mWormholeTexName);
 }
 
-copybit_t* SurfaceFlinger::getBlitEngine() const
+copybit_device_t* SurfaceFlinger::getBlitEngine() const
 {
     return graphicPlane(0).displayHardware().getBlitEngine();
 }
 
+overlay_device_t* SurfaceFlinger::getOverlayEngine() const
+{
+    return graphicPlane(0).displayHardware().getOverlayEngine();
+}
+
 sp<IMemory> SurfaceFlinger::getCblk() const
 {
     return mServerCblkMemory;
@@ -257,7 +244,9 @@
 status_t SurfaceFlinger::requestGPU(const sp<IGPUCallback>& callback,
         gpu_info_t* gpu)
 {
-    status_t err = mGPU->request(callback, gpu);
+    IPCThreadState* ipc = IPCThreadState::self();
+    const int pid = ipc->getCallingPid();
+    status_t err = mGPU->request(pid, callback, gpu);
     return err;
 }
 
@@ -360,7 +349,26 @@
     LOGI(   "SurfaceFlinger's main thread ready to run. "
             "Initializing graphics H/W...");
 
-    //
+    // create the shared control-block
+    mServerHeap = new MemoryDealer(4096, MemoryDealer::READ_ONLY);
+    LOGE_IF(mServerHeap==0, "can't create shared memory dealer");
+
+    mServerCblkMemory = mServerHeap->allocate(4096);
+    LOGE_IF(mServerCblkMemory==0, "can't create shared control block");
+
+    mServerCblk = static_cast<surface_flinger_cblk_t *>(mServerCblkMemory->pointer());
+    LOGE_IF(mServerCblk==0, "can't get to shared control block's address");
+    new(mServerCblk) surface_flinger_cblk_t;
+
+    // get a reference to the GPU if we have one
+    mGPU = GPUFactory::getGPU();
+
+    // create the surface Heap manager, which manages the heaps
+    // (be it in RAM or VRAM) where surfaces are allocated
+    // We give 8 MB per client.
+    mSurfaceHeapManager = new SurfaceHeapManager(this, 8 << 20);
+
+    
     GLES_localSurfaceManager = static_cast<ISurfaceComposer*>(this);
 
     // we only support one display currently
@@ -395,7 +403,7 @@
     dcblk->xdpi         = hw.getDpiX();
     dcblk->ydpi         = hw.getDpiY();
     dcblk->fps          = hw.getRefreshRate();
-    dcblk->density      = 1.0f; // XXX: do someting more real here...
+    dcblk->density      = hw.getDensity();
     asm volatile ("":::"memory");
 
     // Initialize OpenGL|ES
@@ -407,6 +415,7 @@
     glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
     glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
     glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
+    glPixelStorei(GL_PACK_ALIGNMENT, 4); 
     glEnableClientState(GL_VERTEX_ARRAY);
     glEnable(GL_SCISSOR_TEST);
     glShadeModel(GL_FLAT);
@@ -1679,7 +1688,7 @@
 Client::Client(ClientID clientID, const sp<SurfaceFlinger>& flinger)
     : ctrlblk(0), cid(clientID), mPid(0), mBitmap(0), mFlinger(flinger)
 {
-    mSharedHeapAllocator = getSurfaceHeapManager()->createHeap(NATIVE_MEMORY_TYPE_HEAP);
+    mSharedHeapAllocator = getSurfaceHeapManager()->createHeap();
     const int pgsize = getpagesize();
     const int cblksize=((sizeof(per_client_cblk_t)+(pgsize-1))&~(pgsize-1));
     mCblkHeap = new MemoryDealer(cblksize);
@@ -1703,10 +1712,6 @@
     return mFlinger->getSurfaceHeapManager();
 }
 
-const sp<GPUHardwareInterface>& Client::getGPU() const {
-    return mFlinger->getGPU();
-}
-
 int32_t Client::generateId(int pid)
 {
     const uint32_t i = clz( ~mBitmap );
@@ -1734,25 +1739,11 @@
     }
 }
 
-sp<MemoryDealer> Client::createAllocator(int memory_type)
+sp<MemoryDealer> Client::createAllocator(uint32_t flags)
 {
     sp<MemoryDealer> allocator;
-    if (memory_type == NATIVE_MEMORY_TYPE_GPU) {
-        allocator = getGPU()->request(getClientPid());
-        if (allocator == 0)
-            memory_type = NATIVE_MEMORY_TYPE_PMEM;
-    }
-    if (memory_type == NATIVE_MEMORY_TYPE_PMEM) {
-        allocator = mPMemAllocator;
-        if (allocator == 0) {
-            allocator = getSurfaceHeapManager()->createHeap(
-                    NATIVE_MEMORY_TYPE_PMEM);
-            mPMemAllocator = allocator;
-        }
-    }
-    if (allocator == 0)
-        allocator = mSharedHeapAllocator;
-
+    allocator = getSurfaceHeapManager()->createHeap(
+            flags, getClientPid(), mSharedHeapAllocator);
     return allocator;
 }
 
diff --git a/libs/surfaceflinger/SurfaceFlinger.h b/libs/surfaceflinger/SurfaceFlinger.h
index 1581474..92021d0 100644
--- a/libs/surfaceflinger/SurfaceFlinger.h
+++ b/libs/surfaceflinger/SurfaceFlinger.h
@@ -41,7 +41,8 @@
 #include "BootAnimation.h"
 #include "Barrier.h"
 
-struct copybit_t;
+struct copybit_device_t;
+struct overlay_device_t;
 
 namespace android {
 
@@ -74,7 +75,7 @@
             int32_t                 generateId(int pid);
             void                    free(int32_t id);
             status_t                bindLayer(LayerBaseClient* layer, int32_t id);
-            sp<MemoryDealer>        createAllocator(int memory_type);
+            sp<MemoryDealer>        createAllocator(uint32_t memory_type);
 
     inline  bool                    isValid(int32_t i) const;
     inline  const uint8_t*          inUseArray() const;
@@ -92,7 +93,6 @@
     
 private:
     int                     getClientPid() const { return mPid; }
-    const sp<GPUHardwareInterface>&  getGPU() const;
         
     int                         mPid;
     uint32_t                    mBitmap;
@@ -179,7 +179,8 @@
                 return mGPU; 
             }
 
-            copybit_t* getBlitEngine() const;
+            copybit_device_t* getBlitEngine() const;
+            overlay_device_t* getOverlayEngine() const;
             
 private:
     friend class BClient;
diff --git a/libs/surfaceflinger/VRamHeap.cpp b/libs/surfaceflinger/VRamHeap.cpp
index 3852d51..77bc576 100644
--- a/libs/surfaceflinger/VRamHeap.cpp
+++ b/libs/surfaceflinger/VRamHeap.cpp
@@ -37,6 +37,8 @@
 
 #include <GLES/eglnatives.h>
 
+#include "GPUHardware/GPUHardware.h"
+#include "SurfaceFlinger.h"
 #include "VRamHeap.h"
 
 #if HAVE_ANDROID_OS
@@ -59,8 +61,9 @@
 
 // ---------------------------------------------------------------------------
 
-SurfaceHeapManager::SurfaceHeapManager(size_t clientHeapSize)
-    : mClientHeapSize(clientHeapSize)
+SurfaceHeapManager::SurfaceHeapManager(const sp<SurfaceFlinger>& flinger, 
+        size_t clientHeapSize)
+    : mFlinger(flinger), mClientHeapSize(clientHeapSize)
 {
     SurfaceHeapManager::global_pmem_heap = 1;
 }
@@ -81,25 +84,53 @@
     }
 }
 
-sp<MemoryDealer> SurfaceHeapManager::createHeap(int type)
+sp<MemoryDealer> SurfaceHeapManager::createHeap(
+        uint32_t flags,
+        pid_t client_pid,
+        const sp<MemoryDealer>& defaultAllocator)
 {
-    if (!global_pmem_heap && type==NATIVE_MEMORY_TYPE_PMEM)
-        type = NATIVE_MEMORY_TYPE_HEAP;
-
-    const sp<PMemHeap>& heap(mPMemHeap);
     sp<MemoryDealer> dealer; 
-    switch (type) {
-    case NATIVE_MEMORY_TYPE_HEAP:
-        dealer = new MemoryDealer(mClientHeapSize, 0, "SFNativeHeap");
-        break;
 
-    case NATIVE_MEMORY_TYPE_PMEM:
-        if (heap != 0) {
-            dealer = new MemoryDealer( 
-                    heap->createClientHeap(),
-                    heap->getAllocator());
+    if (flags & ISurfaceComposer::eGPU) {
+        // don't grant GPU memory if GPU is disabled
+        char value[PROPERTY_VALUE_MAX];
+        property_get("debug.egl.hw", value, "1");
+        if (atoi(value) == 0) {
+            flags &= ~ISurfaceComposer::eGPU;
         }
-        break;
+    }
+
+    if (flags & ISurfaceComposer::eGPU) {
+        // FIXME: this is msm7201A specific, where gpu surfaces may not be secure
+        if (!(flags & ISurfaceComposer::eSecure)) {
+            // if GPU doesn't work, we try eHardware
+            flags |= ISurfaceComposer::eHardware;
+            // asked for GPU memory, try that first
+            dealer = mFlinger->getGPU()->request(client_pid);
+        }
+    }
+
+    if (dealer == NULL) {
+        if (defaultAllocator != NULL)
+            // if a default allocator is given, use that
+            dealer = defaultAllocator;
+    }
+    
+    if (dealer == NULL) {
+        // always try h/w accelerated memory first
+        if (global_pmem_heap) {
+            const sp<PMemHeap>& heap(mPMemHeap);
+            if (dealer == NULL && heap != NULL) {
+                dealer = new MemoryDealer( 
+                        heap->createClientHeap(),
+                        heap->getAllocator());
+            }
+        }
+    }
+
+    if (dealer == NULL) {
+        // return the ashmem allocator (software rendering)
+        dealer = new MemoryDealer(mClientHeapSize, 0, "SFNativeHeap");
     }
     return dealer;
 }
@@ -122,22 +153,8 @@
 
 // ---------------------------------------------------------------------------
 
-PMemHeapInterface::PMemHeapInterface(int fd, size_t size)
-    : MemoryHeapBase(fd, size) {
-}
-PMemHeapInterface::PMemHeapInterface(const char* device, size_t size)
-    : MemoryHeapBase(device, size) {
-}
-PMemHeapInterface::PMemHeapInterface(size_t size, uint32_t flags, char const * name)
-    : MemoryHeapBase(size, flags, name) {
-}
-PMemHeapInterface::~PMemHeapInterface() {
-}
-
-// ---------------------------------------------------------------------------
-
 PMemHeap::PMemHeap(const char* const device, size_t size, size_t reserved)
-    : PMemHeapInterface(device, size)
+    : MemoryHeapBase(device, size)
 {
     //LOGD("%s, %p, mFD=%d", __PRETTY_FUNCTION__, this, heapID());
     if (base() != MAP_FAILED) {
diff --git a/libs/surfaceflinger/VRamHeap.h b/libs/surfaceflinger/VRamHeap.h
index 03e0336..9140167 100644
--- a/libs/surfaceflinger/VRamHeap.h
+++ b/libs/surfaceflinger/VRamHeap.h
@@ -27,16 +27,19 @@
 
 class PMemHeap;
 class MemoryHeapPmem;
+class SurfaceFlinger; 
 
 // ---------------------------------------------------------------------------
 
 class SurfaceHeapManager  : public RefBase
 {
 public:
-    SurfaceHeapManager(size_t clientHeapSize);
+    SurfaceHeapManager(const sp<SurfaceFlinger>& flinger, size_t clientHeapSize);
     virtual ~SurfaceHeapManager();
     virtual void onFirstRef();
-    sp<MemoryDealer> createHeap(int type);
+    /* use ISurfaceComposer flags eGPU|eHArdware|eSecure */
+    sp<MemoryDealer> createHeap(uint32_t flags=0, pid_t client_pid = 0,
+            const sp<MemoryDealer>& defaultAllocator = 0);
     
     // used for debugging only...
     sp<SimpleBestFitAllocator> getAllocator(int type) const;
@@ -44,6 +47,7 @@
 private:
     sp<PMemHeap> getHeap(int type) const;
 
+    sp<SurfaceFlinger> mFlinger;
     mutable Mutex   mLock;
     size_t          mClientHeapSize;
     sp<PMemHeap>    mPMemHeap;
@@ -52,19 +56,7 @@
 
 // ---------------------------------------------------------------------------
 
-class PMemHeapInterface : public MemoryHeapBase
-{
-public:
-    PMemHeapInterface(int fd, size_t size);
-    PMemHeapInterface(const char* device, size_t size = 0);
-    PMemHeapInterface(size_t size, uint32_t flags = 0, char const * name = NULL);
-    virtual ~PMemHeapInterface();
-    virtual sp<MemoryHeapPmem> createClientHeap() = 0;
-};
-
-// ---------------------------------------------------------------------------
-
-class PMemHeap : public PMemHeapInterface
+class PMemHeap : public MemoryHeapBase
 {
 public:
                 PMemHeap(const char* const vram,
diff --git a/libs/ui/Android.mk b/libs/ui/Android.mk
index 71579c5..7b51300 100644
--- a/libs/ui/Android.mk
+++ b/libs/ui/Android.mk
@@ -2,7 +2,6 @@
 include $(CLEAR_VARS)
 
 LOCAL_SRC_FILES:= \
-	BlitHardware.cpp \
 	Camera.cpp \
 	CameraParameters.cpp \
 	EGLDisplaySurface.cpp \
@@ -14,10 +13,12 @@
 	ICamera.cpp \
 	ICameraClient.cpp \
 	ICameraService.cpp \
+	IOverlay.cpp \
 	ISurfaceComposer.cpp \
 	ISurface.cpp \
 	ISurfaceFlingerClient.cpp \
 	LayerState.cpp \
+	Overlay.cpp \
 	PixelFormat.cpp \
 	Point.cpp \
 	Rect.cpp \
diff --git a/libs/ui/BlitHardware.cpp b/libs/ui/BlitHardware.cpp
deleted file mode 100644
index 90838b4..0000000
--- a/libs/ui/BlitHardware.cpp
+++ /dev/null
@@ -1,446 +0,0 @@
-/*
- * Copyright (C) 2008 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.
- */
-
-#define LOG_TAG "SurfaceFlinger"
-
-#include <stdint.h>
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/mman.h>
-
-#include <cutils/log.h>
-
-#include <utils/Errors.h>
-
-#if HAVE_ANDROID_OS
-#include <linux/fb.h>
-#include <linux/msm_mdp.h>
-#endif
-
-#include <ui/BlitHardware.h>
-
-/******************************************************************************/
-
-namespace android {
-class CopybitMSM7K : public copybit_t {
-public:
-    CopybitMSM7K();
-    ~CopybitMSM7K();
-    
-    status_t getStatus() const {
-        if (mFD<0) return mFD;
-        return NO_ERROR;
-    }
-
-    status_t setParameter(int name, int value);
-
-    status_t get(int name);
-
-    status_t blit( 
-            const copybit_image_t& dst,
-            const copybit_image_t& src,
-            copybit_region_t const* region);
-
-    status_t stretch( 
-            const copybit_image_t& dst,
-            const copybit_image_t& src, 
-            const copybit_rect_t& dst_rect,
-            const copybit_rect_t& src_rect,
-            copybit_region_t const* region);
-
-#if HAVE_ANDROID_OS
-private:
-    static int copybit_set_parameter(copybit_t* handle, int name, int value);
-    static int copybit_blit( copybit_t* handle, 
-            copybit_image_t const* dst, copybit_image_t const* src,
-            copybit_region_t const* region);
-    static int copybit_stretch(copybit_t* handle, 
-            copybit_image_t const* dst,  copybit_image_t const* src, 
-            copybit_rect_t const* dst_rect, copybit_rect_t const* src_rect,
-            copybit_region_t const* region);
-    static int copybit_get(copybit_t* handle, int name);
-
-    int getFormat(int format);
-    void setImage(mdp_img* img, const copybit_image_t& rhs);
-    void setRects(mdp_blit_req* req, const copybit_rect_t& dst,
-            const copybit_rect_t& src, const copybit_rect_t& scissor);
-    void setInfos(mdp_blit_req* req);
-    static void intersect(copybit_rect_t* out, 
-            const copybit_rect_t& lhs, const copybit_rect_t& rhs);
-    status_t msm_copybit(void const* list);
-#endif
-    int mFD;
-    uint8_t mAlpha;
-    uint8_t mFlags;
-};
-}; // namespace android
-
-using namespace android;
-
-/******************************************************************************/
-
-struct copybit_t* copybit_init()
-{
-    CopybitMSM7K* engine = new CopybitMSM7K();
-    if (engine->getStatus() != NO_ERROR) {
-        delete engine;
-        engine = 0;
-    }
-    return (struct copybit_t*)engine;
-        
-}
-
-int copybit_term(copybit_t* handle)
-{
-    delete static_cast<CopybitMSM7K*>(handle);
-    return NO_ERROR;
-}
-
-namespace android {
-/******************************************************************************/
-
-static inline
-int min(int a, int b) {
-    return (a<b) ? a : b;
-}
-
-static inline
-int max(int a, int b) {
-    return (a>b) ? a : b;
-}
-
-static inline
-void MULDIV(uint32_t& a, uint32_t& b, int mul, int div)
-{
-    if (mul != div) {
-        a = (mul * a) / div;
-        b = (mul * b) / div;
-    }
-}
-
-//-----------------------------------------------------------------------------
-
-#if HAVE_ANDROID_OS
-
-int CopybitMSM7K::copybit_set_parameter(copybit_t* handle, int name, int value)
-{
-    return static_cast<CopybitMSM7K*>(handle)->setParameter(name, value);
-}
-
-int CopybitMSM7K::copybit_get(copybit_t* handle, int name)
-{
-    return static_cast<CopybitMSM7K*>(handle)->get(name);
-}
-
-int CopybitMSM7K::copybit_blit(
-        copybit_t* handle, 
-        copybit_image_t const* dst, 
-        copybit_image_t const* src,
-        struct copybit_region_t const* region)
-{
-    return static_cast<CopybitMSM7K*>(handle)->blit(*dst, *src, region);
-}
-
-int CopybitMSM7K::copybit_stretch(
-        copybit_t* handle, 
-        copybit_image_t const* dst, 
-        copybit_image_t const* src, 
-        copybit_rect_t const* dst_rect,
-        copybit_rect_t const* src_rect,
-        struct copybit_region_t const* region)
-{
-    return static_cast<CopybitMSM7K*>(handle)->stretch(
-            *dst, *src, *dst_rect, *src_rect, region);
-}
-
-//-----------------------------------------------------------------------------
-
-CopybitMSM7K::CopybitMSM7K()
-    : mFD(-1), mAlpha(MDP_ALPHA_NOP), mFlags(0)
-{
-    int fd = open("/dev/graphics/fb0", O_RDWR, 0);
-    if (fd > 0) {
-        struct fb_fix_screeninfo finfo;
-        if (ioctl(fd, FBIOGET_FSCREENINFO, &finfo) == 0) {
-            if (!strcmp(finfo.id, "msmfb")) {
-                mFD = fd;
-                copybit_t::set_parameter = copybit_set_parameter;
-                copybit_t::get = copybit_get;
-                copybit_t::blit = copybit_blit;
-                copybit_t::stretch = copybit_stretch;
-            }
-        }
-    }
-    if (fd<0 || mFD<0) {
-        if (fd>0) { close(fd); }
-        mFD = -errno;
-    }
-}
-
-CopybitMSM7K::~CopybitMSM7K()
-{
-    if (mFD > 0){
-        close(mFD);
-    }
-}
-
-status_t CopybitMSM7K::setParameter(int name, int value)
-{
-    switch(name) {
-    case COPYBIT_ROTATION_DEG:
-        switch (value) {
-        case 0:
-            mFlags &= ~0x7;
-            break;
-        case 90:
-            mFlags &= ~0x7;
-            mFlags |= MDP_ROT_90;
-            break;
-        case 180:
-            mFlags &= ~0x7;
-            mFlags |= MDP_ROT_180;
-            break;
-        case 270:
-            mFlags &= ~0x7;
-            mFlags |= MDP_ROT_270;
-            break;
-        default:
-            return BAD_VALUE;
-        }
-        break;
-    case COPYBIT_PLANE_ALPHA:
-        if (value < 0)      value = 0;
-        if (value >= 256)   value = 255;
-        mAlpha = value;
-        break;
-    case COPYBIT_DITHER:
-        if (value == COPYBIT_ENABLE) {
-            mFlags |= MDP_DITHER;
-        } else if (value == COPYBIT_DISABLE) {
-            mFlags &= ~MDP_DITHER;
-        }
-        break;
-    case COPYBIT_TRANSFORM:
-        mFlags &= ~0x7;
-        mFlags |= value & 0x7;
-        break;
-    default:
-        return BAD_VALUE;
-    }
-    return NO_ERROR;
-}
-
-status_t CopybitMSM7K::get(int name)
-{
-    switch(name) {
-    case COPYBIT_MINIFICATION_LIMIT:
-        return 4;
-    case COPYBIT_MAGNIFICATION_LIMIT:
-        return 4;
-    case COPYBIT_SCALING_FRAC_BITS:
-        return 32;
-    case COPYBIT_ROTATION_STEP_DEG:
-        return 90;
-    }
-    return BAD_VALUE;
-}
-
-status_t CopybitMSM7K::blit( 
-        const copybit_image_t& dst,
-        const copybit_image_t& src,
-        copybit_region_t const* region)
-{
-    
-    copybit_rect_t dr = { 0, 0, dst.w, dst.h };
-    copybit_rect_t sr = { 0, 0, src.w, src.h };
-    return CopybitMSM7K::stretch(dst, src, dr, sr, region);
-}
-
-status_t CopybitMSM7K::stretch( 
-        const copybit_image_t& dst,
-        const copybit_image_t& src, 
-        const copybit_rect_t& dst_rect,
-        const copybit_rect_t& src_rect,
-        copybit_region_t const* region)
-{
-    struct {
-        uint32_t count;
-        struct mdp_blit_req req[12];
-    } list;
-    
-    if (mAlpha<255) {
-        switch (src.format) {
-            // we dont' support plane alpha with RGBA formats
-            case COPYBIT_RGBA_8888:
-            case COPYBIT_RGBA_5551:
-            case COPYBIT_RGBA_4444:
-                return INVALID_OPERATION;
-        }
-    }
-        
-    const uint32_t maxCount = sizeof(list.req)/sizeof(list.req[0]);
-    const copybit_rect_t bounds = { 0, 0, dst.w, dst.h };
-    copybit_rect_t clip;
-    list.count = 0;
-    int err = 0;
-    while (!err && region->next(region, &clip)) {
-        intersect(&clip, bounds, clip);
-        setInfos(&list.req[list.count]);
-        setImage(&list.req[list.count].dst, dst);
-        setImage(&list.req[list.count].src, src);
-        setRects(&list.req[list.count], dst_rect, src_rect, clip);
-        if (++list.count == maxCount) {
-            err = msm_copybit(&list);
-            list.count = 0;
-        }
-    }
-    if (!err && list.count) {
-        err = msm_copybit(&list);
-    }
-    return err;
-}
-
-status_t CopybitMSM7K::msm_copybit(void const* list)
-{
-    int err = ioctl(mFD, MSMFB_BLIT, static_cast<mdp_blit_req_list const*>(list));
-    LOGE_IF(err<0, "copyBits failed (%s)", strerror(errno));
-    if (err == 0)
-        return NO_ERROR;
-    return -errno;
-}
-
-int CopybitMSM7K::getFormat(int format)
-{
-    switch (format) {
-    case COPYBIT_RGBA_8888:     return MDP_RGBA_8888;
-    case COPYBIT_RGB_565:       return MDP_RGB_565;
-    case COPYBIT_YCbCr_422_SP:  return MDP_Y_CBCR_H2V1;
-    case COPYBIT_YCbCr_420_SP:  return MDP_Y_CBCR_H2V2;
-    }
-    return -1;
-}
-
-void CopybitMSM7K::setInfos(mdp_blit_req* req)
-{
-    req->alpha = mAlpha;
-    req->transp_mask = MDP_TRANSP_NOP;
-    req->flags = mFlags;
-}
-
-void CopybitMSM7K::setImage(mdp_img* img, const copybit_image_t& rhs)
-{
-    img->width      = rhs.w;
-    img->height     = rhs.h;
-    img->format     = getFormat(rhs.format);
-    img->offset     = rhs.offset;
-    img->memory_id  = rhs.fd;
-}
-    
-void CopybitMSM7K::setRects(mdp_blit_req* e, 
-        const copybit_rect_t& dst, const copybit_rect_t& src,
-        const copybit_rect_t& scissor)
-{
-    copybit_rect_t clip;
-    intersect(&clip, scissor, dst);
-
-    e->dst_rect.x  = clip.l;
-    e->dst_rect.y  = clip.t;
-    e->dst_rect.w  = clip.r - clip.l;
-    e->dst_rect.h  = clip.b - clip.t;
-
-    uint32_t W, H;
-    if (mFlags & COPYBIT_TRANSFORM_ROT_90) {
-        e->src_rect.x  = (clip.t - dst.t) + src.t;
-        e->src_rect.y  = (dst.r - clip.r) + src.l;
-        e->src_rect.w  = (clip.b - clip.t);
-        e->src_rect.h  = (clip.r - clip.l);
-        W = dst.b - dst.t;
-        H = dst.r - dst.l;
-    } else {
-        e->src_rect.x  = (clip.l - dst.l) + src.l;
-        e->src_rect.y  = (clip.t - dst.t) + src.t;
-        e->src_rect.w  = (clip.r - clip.l);
-        e->src_rect.h  = (clip.b - clip.t);
-        W = dst.r - dst.l;
-        H = dst.b - dst.t;
-    }
-    MULDIV(e->src_rect.x, e->src_rect.w, src.r - src.l, W);
-    MULDIV(e->src_rect.y, e->src_rect.h, src.b - src.t, H);
-    if (mFlags & COPYBIT_TRANSFORM_FLIP_V) {
-        e->src_rect.y = e->src.height - (e->src_rect.y + e->src_rect.h);
-    }
-    if (mFlags & COPYBIT_TRANSFORM_FLIP_H) {
-        e->src_rect.x = e->src.width  - (e->src_rect.x + e->src_rect.w);
-    }
-}
-
-void CopybitMSM7K::intersect(copybit_rect_t* out, 
-        const copybit_rect_t& lhs, const copybit_rect_t& rhs)
-{
-    out->l = max(lhs.l, rhs.l);
-    out->t = max(lhs.t, rhs.t);
-    out->r = min(lhs.r, rhs.r);
-    out->b = min(lhs.b, rhs.b);
-}
-
-/******************************************************************************/
-#else // HAVE_ANDROID_OS
-
-CopybitMSM7K::CopybitMSM7K()
-    : mFD(-1)
-{
-}
-
-CopybitMSM7K::~CopybitMSM7K()
-{
-}
-
-status_t CopybitMSM7K::setParameter(int name, int value)
-{
-    return NO_INIT;
-}
-
-status_t CopybitMSM7K::get(int name)
-{
-    return BAD_VALUE;
-}
-
-status_t CopybitMSM7K::blit( 
-        const copybit_image_t& dst,
-        const copybit_image_t& src,
-        copybit_region_t const* region)
-{
-    return NO_INIT;
-}
-
-status_t CopybitMSM7K::stretch( 
-        const copybit_image_t& dst,
-        const copybit_image_t& src, 
-        const copybit_rect_t& dst_rect,
-        const copybit_rect_t& src_rect,
-        copybit_region_t const* region)
-{
-    return NO_INIT;
-}
-
-#endif // HAVE_ANDROID_OS
-
-/******************************************************************************/
-}; // namespace android
diff --git a/libs/ui/Camera.cpp b/libs/ui/Camera.cpp
index 1528e6e..9527009 100644
--- a/libs/ui/Camera.cpp
+++ b/libs/ui/Camera.cpp
@@ -1,28 +1,28 @@
 /*
 **
-** Copyright 2008, The Android Open Source Project
+** Copyright (C) 2008, The Android Open Source Project
+** Copyright (C) 2008 HTC Inc.
 **
-** 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 
+** 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 
+**     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 
+** 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.
 */
 
+//#define LOG_NDEBUG 0
 #define LOG_TAG "Camera"
 #include <utils/Log.h>
-
 #include <utils/IServiceManager.h>
 #include <utils/threads.h>
 #include <utils/IMemory.h>
 #include <ui/Surface.h>
-
 #include <ui/Camera.h>
 #include <ui/ICameraService.h>
 
@@ -60,20 +60,36 @@
 // ---------------------------------------------------------------------------
 
 Camera::Camera()
-      : mStatus(UNKNOWN_ERROR),
-        mShutterCallback(0),
-        mShutterCallbackCookie(0),
-        mRawCallback(0),
-        mRawCallbackCookie(0),
-        mJpegCallback(0),
-        mJpegCallbackCookie(0),
-        mFrameCallback(0),
-        mFrameCallbackCookie(0),
-        mErrorCallback(0),
-        mErrorCallbackCookie(0),
-        mAutoFocusCallback(0),
-        mAutoFocusCallbackCookie(0)
 {
+    init();
+}
+
+Camera::Camera(const sp<ICamera>& camera)
+{
+    init();
+    // connect this client to existing camera remote
+    if (camera->connect(this) == NO_ERROR) {
+        mStatus = NO_ERROR;
+        mCamera = camera;
+        camera->asBinder()->linkToDeath(this);
+    }
+}
+
+void Camera::init()
+{
+    mStatus = UNKNOWN_ERROR;
+    mShutterCallback = 0;
+    mShutterCallbackCookie = 0;
+    mRawCallback = 0;
+    mRawCallbackCookie = 0;
+    mJpegCallback = 0;
+    mJpegCallbackCookie = 0;
+    mFrameCallback = 0;
+    mFrameCallbackCookie = 0;
+    mErrorCallback = 0;
+    mErrorCallbackCookie = 0;
+    mAutoFocusCallback = 0;
+    mAutoFocusCallbackCookie = 0;
 }
 
 Camera::~Camera()
@@ -83,6 +99,7 @@
 
 sp<Camera> Camera::connect()
 {
+    LOGV("connect");
     sp<Camera> c = new Camera();
     const sp<ICameraService>& cs = getCameraService();
     if (cs != 0) {
@@ -97,6 +114,7 @@
 
 void Camera::disconnect()
 {
+    LOGV("disconnect");
     if (mCamera != 0) {
         mErrorCallback = 0;
         mCamera->disconnect();
@@ -104,9 +122,24 @@
     }
 }
 
+status_t Camera::reconnect()
+{
+    LOGV("reconnect");
+    if (mCamera != 0) {
+        return mCamera->connect(this);
+    }
+    return NO_INIT;
+}
+
+sp<ICamera> Camera::remote()
+{
+    return mCamera;
+}
+
 // pass the buffered ISurface to the camera service
 status_t Camera::setPreviewDisplay(const sp<Surface>& surface)
 {
+    LOGV("setPreviewDisplay");
     if (surface == 0) {
         LOGE("app passed NULL surface");
         return NO_INIT;
@@ -114,81 +147,105 @@
     return mCamera->setPreviewDisplay(surface->getISurface());
 }
 
+status_t Camera::setPreviewDisplay(const sp<ISurface>& surface)
+{
+    LOGV("setPreviewDisplay");
+    if (surface == 0) {
+        LOGE("app passed NULL surface");
+        return NO_INIT;
+    }
+    return mCamera->setPreviewDisplay(surface);
+}
+
+
 // start preview mode, must call setPreviewDisplay first
 status_t Camera::startPreview()
 {
+    LOGV("startPreview");
     return mCamera->startPreview();
 }
 
 // stop preview mode
 void Camera::stopPreview()
 {
+    LOGV("stopPreview");
     mCamera->stopPreview();
 }
 
 status_t Camera::autoFocus()
 {
+    LOGV("autoFocus");
     return mCamera->autoFocus();
 }
 
 // take a picture
 status_t Camera::takePicture()
 {
+    LOGV("takePicture");
     return mCamera->takePicture();
 }
 
 // set preview/capture parameters - key/value pairs
 status_t Camera::setParameters(const String8& params)
 {
+    LOGV("setParameters");
     return mCamera->setParameters(params);
 }
 
 // get preview/capture parameters - key/value pairs
 String8 Camera::getParameters() const
 {
+    LOGV("getParameters");
     String8 params = mCamera->getParameters();
     return params;
 }
 
 void Camera::setAutoFocusCallback(autofocus_callback cb, void *cookie)
 {
+    LOGV("setAutoFocusCallback");
     mAutoFocusCallback = cb;
     mAutoFocusCallbackCookie = cookie;
 }
 
 void Camera::setShutterCallback(shutter_callback cb, void *cookie)
 {
+    LOGV("setShutterCallback");
     mShutterCallback = cb;
     mShutterCallbackCookie = cookie;
 }
 
 void Camera::setRawCallback(frame_callback cb, void *cookie)
 {
+    LOGV("setRawCallback");
     mRawCallback = cb;
     mRawCallbackCookie = cookie;
 }
 
 void Camera::setJpegCallback(frame_callback cb, void *cookie)
 {
+    LOGV("setJpegCallback");
     mJpegCallback = cb;
     mJpegCallbackCookie = cookie;
 }
 
-void Camera::setFrameCallback(frame_callback cb, void *cookie)
+void Camera::setFrameCallback(frame_callback cb, void *cookie, int frame_callback_flag)
 {
+    LOGV("setFrameCallback");
     mFrameCallback = cb;
     mFrameCallbackCookie = cookie;
-    mCamera->setHasFrameCallback(cb != NULL);
+    mCamera->setFrameCallbackFlag(frame_callback_flag);
 }
 
 void Camera::setErrorCallback(error_callback cb, void *cookie)
 {
+    LOGV("setErrorCallback");
     mErrorCallback = cb;
     mErrorCallbackCookie = cookie;
 }
 
 void Camera::autoFocusCallback(bool focused)
 {
+    LOGV("autoFocusCallback");
     if (mAutoFocusCallback) {
         mAutoFocusCallback(focused, mAutoFocusCallbackCookie);
     }
@@ -196,6 +253,7 @@
 
 void Camera::shutterCallback()
 {
+    LOGV("shutterCallback");
     if (mShutterCallback) {
         mShutterCallback(mShutterCallbackCookie);
     }
@@ -203,6 +261,7 @@
 
 void Camera::rawCallback(const sp<IMemory>& picture)
 {
+    LOGV("rawCallback");
     if (mRawCallback) {
         mRawCallback(picture, mRawCallbackCookie);
     }
@@ -211,6 +270,7 @@
 // callback from camera service when image is ready
 void Camera::jpegCallback(const sp<IMemory>& picture)
 {
+    LOGV("jpegCallback");
     if (mJpegCallback) {
         mJpegCallback(picture, mJpegCallbackCookie);
     }
@@ -219,6 +279,7 @@
 // callback from camera service when video frame is ready
 void Camera::frameCallback(const sp<IMemory>& frame)
 {
+    LOGV("frameCallback");
     if (mFrameCallback) {
         mFrameCallback(frame, mFrameCallbackCookie);
     }
@@ -227,19 +288,21 @@
 // callback from camera service when an error occurs in preview or takePicture
 void Camera::errorCallback(status_t error)
 {
+    LOGV("errorCallback");
     if (mErrorCallback) {
         mErrorCallback(error, mErrorCallbackCookie);
     }
 }
 
-void Camera::binderDied(const wp<IBinder>& who) {    
+void Camera::binderDied(const wp<IBinder>& who) {
     LOGW("ICamera died");
     if (mErrorCallback) {
         mErrorCallback(DEAD_OBJECT, mErrorCallbackCookie);
     }
 }
 
-void Camera::DeathNotifier::binderDied(const wp<IBinder>& who) {    
+void Camera::DeathNotifier::binderDied(const wp<IBinder>& who) {
+    LOGV("binderDied");
     Mutex::Autolock _l(Camera::mLock);
     Camera::mCameraService.clear();
     LOGW("Camera server died!");
diff --git a/libs/ui/EGLDisplaySurface.cpp b/libs/ui/EGLDisplaySurface.cpp
index ea245f5..44258a8 100644
--- a/libs/ui/EGLDisplaySurface.cpp
+++ b/libs/ui/EGLDisplaySurface.cpp
@@ -28,11 +28,15 @@
 
 #include <cutils/log.h>
 #include <cutils/atomic.h>
+#include <cutils/properties.h>
+
+#include <hardware/copybit.h>
 
 #include <ui/SurfaceComposerClient.h>
 #include <ui/DisplayInfo.h>
 #include <ui/Rect.h>
 #include <ui/Region.h>
+#include <ui/EGLDisplaySurface.h>
 
 #if HAVE_ANDROID_OS
 #include <linux/msm_mdp.h>
@@ -42,7 +46,6 @@
 
 #include <pixelflinger/format.h>
 
-#include <ui/EGLDisplaySurface.h>
 
 // ----------------------------------------------------------------------------
 
@@ -78,7 +81,12 @@
     mBlitEngine = 0;
     egl_native_window_t::fd = mapFrameBuffer();
     if (egl_native_window_t::fd >= 0) {
-        mBlitEngine = copybit_init();
+        
+        hw_module_t const* module;
+        if (hw_get_module(COPYBIT_HARDWARE_MODULE_ID, &module) == 0) {
+            copybit_open(module, &mBlitEngine);
+        }
+        
         const float in2mm = 25.4f;
         float refreshRate = 1000000000000000LLU / (
                 float( mInfo.upper_margin + mInfo.lower_margin + mInfo.yres )
@@ -108,7 +116,7 @@
 EGLDisplaySurface::~EGLDisplaySurface()
 {
     magic = 0;
-    copybit_term(mBlitEngine);
+    copybit_close(mBlitEngine);
     mBlitEngine = 0;
     close(egl_native_window_t::fd);
     munmap(mFb[0].data, mSize);
@@ -147,9 +155,6 @@
 
 uint32_t EGLDisplaySurface::swapBuffers()
 {
-    if (!(mFlags & PAGE_FLIP))
-        return 0;
-
 #define SHOW_FPS 0
 #if SHOW_FPS
     nsecs_t now = systemTime();
@@ -171,6 +176,11 @@
         }
     }
 #endif
+    /* If we can't do the page_flip, just copy the back buffer to the front */
+    if (!(mFlags & PAGE_FLIP)) {
+        memcpy(mFb[0].data, mFb[1].data, mInfo.xres*mInfo.yres*2);
+        return 0;
+    }
 
     // do the actual flip
     mIndex = 1 - mIndex;
@@ -192,7 +202,7 @@
      * with msm7k.
      */
     if (egl_native_window_t::memory_type == NATIVE_MEMORY_TYPE_GPU && oem[0] && mBlitEngine) {
-        copybit_t *copybit = mBlitEngine;
+        copybit_device_t *copybit = mBlitEngine;
         copybit_rect_t sdrect = { 0, 0,
                 egl_native_window_t::width, egl_native_window_t::height };
         copybit_image_t dst = {
@@ -273,6 +283,12 @@
     } else
 #endif
     {
+        /* no extra copy needed since we copied back to front instead of
+         * flipping */
+        if (!(mFlags & PAGE_FLIP)) {
+            return;
+        }
+
         Region::iterator iterator(copyback);
         if (iterator) {
             Rect r;
@@ -373,12 +389,11 @@
         // bleagh, bad info from the driver
         refreshRate = 60*1000;  // 60 Hz
     }
-
     if (int(info.width) <= 0 || int(info.height) <= 0) {
         // the driver doesn't return that information
         // default to 160 dpi
-        info.width  = 51;
-        info.height = 38;
+        info.width  = ((info.xres * 25.4f)/160.0f + 0.5f);
+        info.height = ((info.yres * 25.4f)/160.0f + 0.5f);
     }
 
     float xdpi = (info.xres * 25.4f) / info.width;
diff --git a/libs/ui/EGLNativeWindowSurface.cpp b/libs/ui/EGLNativeWindowSurface.cpp
index 0b6afc0..d55fb70 100644
--- a/libs/ui/EGLNativeWindowSurface.cpp
+++ b/libs/ui/EGLNativeWindowSurface.cpp
@@ -163,7 +163,12 @@
         egl_native_window_t::format = info.format;
         egl_native_window_t::base   = intptr_t(info.base);
         egl_native_window_t::offset = intptr_t(info.bits) - intptr_t(info.base);
-        egl_native_window_t::memory_type = mSurface->getMemoryType();
+        // FIXME: egl_native_window_t::memory_type used to be set from
+        // mSurface, but we wanted to break this dependency. We set it to
+        // GPU because the software rendered doesn't care, but the h/w
+        // accelerator needs it. Eventually, this value should go away
+        // completely, since memory will be managed by OpenGL.
+        egl_native_window_t::memory_type = NATIVE_MEMORY_TYPE_GPU; 
         egl_native_window_t::fd = 0;
     }
 }
diff --git a/libs/ui/EventHub.cpp b/libs/ui/EventHub.cpp
index f0c77ba..abe7407 100644
--- a/libs/ui/EventHub.cpp
+++ b/libs/ui/EventHub.cpp
@@ -315,9 +315,8 @@
         }
 
         //printf("poll %d, returned %d\n", mFDCount, pollres);
-        if(mFDs[0].revents & POLLIN) {
-            read_notify(mFDs[0].fd);
-        }
+
+        // mFDs[0] is used for inotify, so process regular events starting at mFDs[1]
         for(i = 1; i < mFDCount; i++) {
             if(mFDs[i].revents) {
                 LOGV("revents for %d = 0x%08x", i, mFDs[i].revents);
@@ -357,6 +356,12 @@
                 }
             }
         }
+        
+        // read_notify() will modify mFDs and mFDCount, so this must be done after
+        // processing all other events.
+        if(mFDs[0].revents & POLLIN) {
+            read_notify(mFDs[0].fd);
+        }
     }
 }
 
@@ -607,7 +612,7 @@
         sprintf(propName, "hw.keyboards.%u.devname", publicID);
         property_set(propName, devname);
 
-        LOGI("New keyboard: publicID=%d device->id=%d devname='%s propName='%s' keylayout='%s'\n",
+        LOGI("New keyboard: publicID=%d device->id=%d devname='%s' propName='%s' keylayout='%s'\n",
                 publicID, device->id, devname, propName, keylayoutFilename);
     }
 
diff --git a/libs/ui/ICamera.cpp b/libs/ui/ICamera.cpp
index 420bb49..6a2dc6b 100644
--- a/libs/ui/ICamera.cpp
+++ b/libs/ui/ICamera.cpp
@@ -2,41 +2,40 @@
 **
 ** Copyright 2008, 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 
+** 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 
+**     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 
+** 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.
 */
 
+//#define LOG_NDEBUG 0
+#define LOG_TAG "ICamera"
+#include <utils/Log.h>
 #include <stdint.h>
 #include <sys/types.h>
-
 #include <utils/Parcel.h>
-
 #include <ui/ICamera.h>
 
-#define LOG_TAG "@@@@@@@@@@@ CAMERA @@@@@@@@@@@"
-#include <utils/Log.h>
-
 namespace android {
 
 enum {
     DISCONNECT = IBinder::FIRST_CALL_TRANSACTION,
     SET_PREVIEW_DISPLAY,
-    SET_HAS_FRAME_CALLBACK,
+    SET_FRAME_CALLBACK_FLAG,
     START_PREVIEW,
     STOP_PREVIEW,
     AUTO_FOCUS,
     TAKE_PICTURE,
     SET_PARAMETERS,
-    GET_PARAMETERS
+    GET_PARAMETERS,
+    CONNECT
 };
 
 class BpCamera: public BpInterface<ICamera>
@@ -50,6 +49,7 @@
     // disconnect from camera service
     void disconnect()
     {
+        LOGV("disconnect");
         Parcel data, reply;
         data.writeInterfaceToken(ICamera::getInterfaceDescriptor());
         remote()->transact(DISCONNECT, data, &reply);
@@ -58,25 +58,29 @@
     // pass the buffered ISurface to the camera service
     status_t setPreviewDisplay(const sp<ISurface>& surface)
     {
+        LOGV("setPreviewDisplay");
         Parcel data, reply;
         data.writeInterfaceToken(ICamera::getInterfaceDescriptor());
         data.writeStrongBinder(surface->asBinder());
         remote()->transact(SET_PREVIEW_DISPLAY, data, &reply);
         return reply.readInt32();
     }
-    
-    // tell the service whether to callback with each preview frame
-    void setHasFrameCallback(bool installed)
+
+    // set the frame callback flag to affect how the received frames from
+    // preview are handled.
+    void setFrameCallbackFlag(int frame_callback_flag)
     {
+        LOGV("setFrameCallbackFlag(%d)", frame_callback_flag);
         Parcel data, reply;
         data.writeInterfaceToken(ICamera::getInterfaceDescriptor());
-        data.writeInt32((int32_t)installed);
-        remote()->transact(SET_HAS_FRAME_CALLBACK, data, &reply);
+        data.writeInt32(frame_callback_flag);
+        remote()->transact(SET_FRAME_CALLBACK_FLAG, data, &reply);
     }
 
     // start preview mode, must call setPreviewDisplay first
     status_t startPreview()
     {
+        LOGV("startPreview");
         Parcel data, reply;
         data.writeInterfaceToken(ICamera::getInterfaceDescriptor());
         remote()->transact(START_PREVIEW, data, &reply);
@@ -86,6 +90,7 @@
     // stop preview mode
     void stopPreview()
     {
+        LOGV("stopPreview");
         Parcel data, reply;
         data.writeInterfaceToken(ICamera::getInterfaceDescriptor());
         remote()->transact(STOP_PREVIEW, data, &reply);
@@ -94,6 +99,7 @@
     // auto focus
     status_t autoFocus()
     {
+        LOGV("autoFocus");
         Parcel data, reply;
         data.writeInterfaceToken(ICamera::getInterfaceDescriptor());
         remote()->transact(AUTO_FOCUS, data, &reply);
@@ -104,6 +110,7 @@
     // take a picture - returns an IMemory (ref-counted mmap)
     status_t takePicture()
     {
+        LOGV("takePicture");
         Parcel data, reply;
         data.writeInterfaceToken(ICamera::getInterfaceDescriptor());
         remote()->transact(TAKE_PICTURE, data, &reply);
@@ -114,6 +121,7 @@
     // set preview/capture parameters - key/value pairs
     status_t setParameters(const String8& params)
     {
+        LOGV("setParameters");
         Parcel data, reply;
         data.writeInterfaceToken(ICamera::getInterfaceDescriptor());
         data.writeString8(params);
@@ -124,11 +132,20 @@
     // get preview/capture parameters - key/value pairs
     String8 getParameters() const
     {
+        LOGV("getParameters");
         Parcel data, reply;
         data.writeInterfaceToken(ICamera::getInterfaceDescriptor());
         remote()->transact(GET_PARAMETERS, data, &reply);
         return reply.readString8();
     }
+    virtual status_t connect(const sp<ICameraClient>& cameraClient)
+    {
+        Parcel data, reply;
+        data.writeInterfaceToken(ICamera::getInterfaceDescriptor());
+        data.writeStrongBinder(cameraClient->asBinder());
+        remote()->transact(CONNECT, data, &reply);
+        return reply.readInt32();
+    }
 };
 
 IMPLEMENT_META_INTERFACE(Camera, "android.hardware.ICamera");
@@ -146,53 +163,68 @@
 {
     switch(code) {
         case DISCONNECT: {
+            LOGV("DISCONNECT");
             CHECK_INTERFACE(ICamera, data, reply);
             disconnect();
             return NO_ERROR;
         } break;
         case SET_PREVIEW_DISPLAY: {
+            LOGV("SET_PREVIEW_DISPLAY");
             CHECK_INTERFACE(ICamera, data, reply);
             sp<ISurface> surface = interface_cast<ISurface>(data.readStrongBinder());
             reply->writeInt32(setPreviewDisplay(surface));
             return NO_ERROR;
         } break;
-        case SET_HAS_FRAME_CALLBACK: {
+        case SET_FRAME_CALLBACK_FLAG: {
+            LOGV("SET_FRAME_CALLBACK_TYPE");
             CHECK_INTERFACE(ICamera, data, reply);
-            bool installed = (bool)data.readInt32();
-            setHasFrameCallback(installed);
+            int frame_callback_flag = data.readInt32();
+            setFrameCallbackFlag(frame_callback_flag);
             return NO_ERROR;
         } break;
         case START_PREVIEW: {
+            LOGV("START_PREVIEW");
             CHECK_INTERFACE(ICamera, data, reply);
             reply->writeInt32(startPreview());
             return NO_ERROR;
         } break;
         case STOP_PREVIEW: {
+            LOGV("STOP_PREVIEW");
             CHECK_INTERFACE(ICamera, data, reply);
             stopPreview();
             return NO_ERROR;
         } break;
         case AUTO_FOCUS: {
+            LOGV("AUTO_FOCUS");
             CHECK_INTERFACE(ICamera, data, reply);
             reply->writeInt32(autoFocus());
             return NO_ERROR;
         } break;
         case TAKE_PICTURE: {
+            LOGV("TAKE_PICTURE");
             CHECK_INTERFACE(ICamera, data, reply);
             reply->writeInt32(takePicture());
             return NO_ERROR;
         } break;
         case SET_PARAMETERS: {
+            LOGV("SET_PARAMETERS");
             CHECK_INTERFACE(ICamera, data, reply);
-             String8 params(data.readString8());
-             reply->writeInt32(setParameters(params));
+            String8 params(data.readString8());
+            reply->writeInt32(setParameters(params));
             return NO_ERROR;
          } break;
         case GET_PARAMETERS: {
+            LOGV("GET_PARAMETERS");
             CHECK_INTERFACE(ICamera, data, reply);
              reply->writeString8(getParameters());
             return NO_ERROR;
          } break;
+        case CONNECT: {
+            CHECK_INTERFACE(ICamera, data, reply);
+            sp<ICameraClient> cameraClient = interface_cast<ICameraClient>(data.readStrongBinder());
+            reply->writeInt32(connect(cameraClient));
+            return NO_ERROR;
+        } break;
         default:
             return BBinder::onTransact(code, data, reply, flags);
     }
diff --git a/libs/ui/ICameraClient.cpp b/libs/ui/ICameraClient.cpp
index 3737034..c5d6d52 100644
--- a/libs/ui/ICameraClient.cpp
+++ b/libs/ui/ICameraClient.cpp
@@ -15,9 +15,11 @@
 ** limitations under the License.
 */
 
+//#define LOG_NDEBUG 0
+#define LOG_TAG "ICameraClient"
+#include <utils/Log.h>
 #include <stdint.h>
 #include <sys/types.h>
-
 #include <ui/ICameraClient.h>
 
 namespace android {
@@ -42,6 +44,7 @@
     // callback to let the app know the shutter has closed, ideal for playing the shutter sound
     void shutterCallback()
     {
+        LOGV("shutterCallback");
         Parcel data, reply;
         data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor());
         remote()->transact(SHUTTER_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY);
@@ -50,6 +53,7 @@
     // callback from camera service to app with picture data
     void rawCallback(const sp<IMemory>& picture)
     {
+        LOGV("rawCallback");
         Parcel data, reply;
         data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor());
         data.writeStrongBinder(picture->asBinder());
@@ -59,6 +63,7 @@
     // callback from camera service to app with picture data
     void jpegCallback(const sp<IMemory>& picture)
     {
+        LOGV("jpegCallback");
         Parcel data, reply;
         data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor());
         data.writeStrongBinder(picture->asBinder());
@@ -68,6 +73,7 @@
     // callback from camera service to app with video frame data
     void frameCallback(const sp<IMemory>& frame)
     {
+        LOGV("frameCallback");
         Parcel data, reply;
         data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor());
         data.writeStrongBinder(frame->asBinder());
@@ -77,6 +83,7 @@
     // callback from camera service to app to report error
     void errorCallback(status_t error)
     {
+        LOGV("errorCallback");
         Parcel data, reply;
         data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor());
         data.writeInt32(error);
@@ -86,6 +93,7 @@
     // callback from camera service to app to report autofocus completion
     void autoFocusCallback(bool focused)
     {
+        LOGV("autoFocusCallback");
         Parcel data, reply;
         data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor());
         data.writeInt32(focused);
@@ -108,35 +116,41 @@
 {
     switch(code) {
         case SHUTTER_CALLBACK: {
+            LOGV("SHUTTER_CALLBACK");
             CHECK_INTERFACE(ICameraClient, data, reply);
             shutterCallback();
             return NO_ERROR;
         } break;
         case RAW_CALLBACK: {
+            LOGV("RAW_CALLBACK");
             CHECK_INTERFACE(ICameraClient, data, reply);
             sp<IMemory> picture = interface_cast<IMemory>(data.readStrongBinder());
             rawCallback(picture);
             return NO_ERROR;
         } break;
         case JPEG_CALLBACK: {
+            LOGV("JPEG_CALLBACK");
             CHECK_INTERFACE(ICameraClient, data, reply);
             sp<IMemory> picture = interface_cast<IMemory>(data.readStrongBinder());
             jpegCallback(picture);
             return NO_ERROR;
         } break;
         case FRAME_CALLBACK: {
+            LOGV("FRAME_CALLBACK");
             CHECK_INTERFACE(ICameraClient, data, reply);
             sp<IMemory> frame = interface_cast<IMemory>(data.readStrongBinder());
             frameCallback(frame);
             return NO_ERROR;
         } break;
         case ERROR_CALLBACK: {
+            LOGV("ERROR_CALLBACK");
             CHECK_INTERFACE(ICameraClient, data, reply);
             status_t error = data.readInt32();
             errorCallback(error);
             return NO_ERROR;
         } break;
         case AUTOFOCUS_CALLBACK: {
+            LOGV("AUTOFOCUS_CALLBACK");
             CHECK_INTERFACE(ICameraClient, data, reply);
             bool focused = (bool)data.readInt32();
             autoFocusCallback(focused);
diff --git a/libs/ui/IOverlay.cpp b/libs/ui/IOverlay.cpp
new file mode 100644
index 0000000..59d1ea0
--- /dev/null
+++ b/libs/ui/IOverlay.cpp
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2007 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.
+ */
+
+#include <stdio.h>
+#include <stdint.h>
+#include <sys/types.h>
+
+#include <utils/Parcel.h>
+#include <utils/IInterface.h>
+
+#include <ui/IOverlay.h>
+
+namespace android {
+
+enum {
+    DESTROY = IBinder::FIRST_CALL_TRANSACTION, // one-way transaction
+    SWAP_BUFFERS,
+};
+
+class BpOverlay : public BpInterface<IOverlay>
+{
+public:
+    BpOverlay(const sp<IBinder>& impl)
+        : BpInterface<IOverlay>(impl)
+    {
+    }
+
+    virtual void destroy()
+    {
+        Parcel data, reply;
+        data.writeInterfaceToken(IOverlay::getInterfaceDescriptor());
+        remote()->transact(DESTROY, data, &reply, IBinder::FLAG_ONEWAY);
+    }
+
+    virtual ssize_t swapBuffers()
+    {
+        Parcel data, reply;
+        data.writeInterfaceToken(IOverlay::getInterfaceDescriptor());
+        remote()->transact(SWAP_BUFFERS, data, &reply);
+        return reply.readInt32();
+    }
+};
+
+IMPLEMENT_META_INTERFACE(Overlay, "android.ui.IOverlay");
+
+// ----------------------------------------------------------------------
+
+#define CHECK_INTERFACE(interface, data, reply) \
+        do { if (!data.enforceInterface(interface::getInterfaceDescriptor())) { \
+            LOGW("Call incorrectly routed to " #interface); \
+            return PERMISSION_DENIED; \
+        } } while (0)
+
+status_t BnOverlay::onTransact(
+    uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
+{
+    switch(code) {
+        case DESTROY: {
+            CHECK_INTERFACE(IOverlay, data, reply);
+            destroy();
+            return NO_ERROR;
+        } break;
+        case SWAP_BUFFERS: {
+            CHECK_INTERFACE(IOverlay, data, reply);
+            ssize_t offset = swapBuffers();
+            reply->writeInt32(offset);
+            return NO_ERROR;
+        } break;
+        default:
+            return BBinder::onTransact(code, data, reply, flags);
+    }
+}
+
+}; // namespace android
diff --git a/libs/ui/ISurface.cpp b/libs/ui/ISurface.cpp
index 817f4d9..c1c9596 100644
--- a/libs/ui/ISurface.cpp
+++ b/libs/ui/ISurface.cpp
@@ -22,6 +22,7 @@
 #include <utils/IMemory.h>
 
 #include <ui/ISurface.h>
+#include <ui/Overlay.h>
 
 
 namespace android {
@@ -30,6 +31,7 @@
     REGISTER_BUFFERS = IBinder::FIRST_CALL_TRANSACTION,
     UNREGISTER_BUFFERS,
     POST_BUFFER, // one-way transaction
+    CREATE_OVERLAY,
 };
 
 class BpSurface : public BpInterface<ISurface>
@@ -70,6 +72,18 @@
         data.writeInterfaceToken(ISurface::getInterfaceDescriptor());
         remote()->transact(UNREGISTER_BUFFERS, data, &reply);
     }
+
+    virtual sp<Overlay> createOverlay(
+             uint32_t w, uint32_t h, int32_t format)
+    {
+        Parcel data, reply;
+        data.writeInterfaceToken(ISurface::getInterfaceDescriptor());
+        data.writeInt32(w);
+        data.writeInt32(h);
+        data.writeInt32(format);
+        remote()->transact(CREATE_OVERLAY, data, &reply);
+        return Overlay::readFromParcel(reply);
+    }
 };
 
 IMPLEMENT_META_INTERFACE(Surface, "android.ui.ISurface");
@@ -109,6 +123,14 @@
             postBuffer(offset);
             return NO_ERROR;
         } break;
+        case CREATE_OVERLAY: {
+            CHECK_INTERFACE(ISurface, data, reply);
+            int w = data.readInt32();
+            int h = data.readInt32();
+            int f = data.readInt32();
+            sp<Overlay> o = createOverlay(w, h, w);
+            return Overlay::writeToParcel(reply, o);
+        } break;
         default:
             return BBinder::onTransact(code, data, reply, flags);
     }
diff --git a/libs/ui/ISurfaceFlingerClient.cpp b/libs/ui/ISurfaceFlingerClient.cpp
index 9444af7..dd6a798 100644
--- a/libs/ui/ISurfaceFlingerClient.cpp
+++ b/libs/ui/ISurfaceFlingerClient.cpp
@@ -82,7 +82,7 @@
         data.writeInt32(format);
         data.writeInt32(flags);
         remote()->transact(CREATE_SURFACE, data, &reply);
-        params->readFromParcel(data);
+        params->readFromParcel(reply);
         return interface_cast<ISurface>(reply.readStrongBinder());
     }
                                     
@@ -191,7 +191,6 @@
 {
     token = parcel.readInt32();
     identity  = parcel.readInt32();
-    type = parcel.readInt32();
     heap[0] = interface_cast<IMemoryHeap>(parcel.readStrongBinder());
     heap[1] = interface_cast<IMemoryHeap>(parcel.readStrongBinder());
     return NO_ERROR;
@@ -201,7 +200,6 @@
 {
     parcel->writeInt32(token);
     parcel->writeInt32(identity);
-    parcel->writeInt32(type);
     parcel->writeStrongBinder(heap[0]!=0 ? heap[0]->asBinder() : NULL);
     parcel->writeStrongBinder(heap[1]!=0 ? heap[1]->asBinder() : NULL);
     return NO_ERROR;
diff --git a/libs/ui/Overlay.cpp b/libs/ui/Overlay.cpp
new file mode 100644
index 0000000..2267c3e
--- /dev/null
+++ b/libs/ui/Overlay.cpp
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2007 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.
+ */
+
+#include <utils/IMemory.h>
+#include <utils/Parcel.h>
+
+#include <ui/IOverlay.h>
+#include <ui/Overlay.h>
+
+namespace android {
+
+Overlay::Overlay(overlay_handle_t* handle, 
+        const sp<IOverlay>& o, const sp<IMemoryHeap>& heap, 
+        uint32_t w, uint32_t h, int32_t f, uint32_t ws, uint32_t hs)
+    : mOverlay(o), mHeap(heap), mCurrentBufferOffset(0), mOverlayHandle(handle),
+      mWidth(w), mHeight(h), mFormat(f), mWidthStride(ws), mHeightStride(hs)
+{
+}
+
+Overlay::Overlay(overlay_t* overlay, 
+        const sp<IOverlay>& o, const sp<IMemoryHeap>& heap)
+    : mOverlay(o), mHeap(heap) 
+{
+    mCurrentBufferOffset = 0; 
+    mOverlayHandle = overlay->getHandleRef(overlay);
+    mWidth = overlay->w;
+    mHeight = overlay->h;
+    mFormat = overlay->format; 
+    mWidthStride = overlay->w_stride;
+    mHeightStride = overlay->h_stride;
+}
+
+
+Overlay::~Overlay() {
+}
+
+void Overlay::destroy() {  
+    mOverlay->destroy();
+}
+
+status_t Overlay::swapBuffers() {
+    ssize_t result = mOverlay->swapBuffers();
+    if (result < 0)
+        return status_t(result);
+    mCurrentBufferOffset = result;
+    return NO_ERROR;
+}
+
+overlay_handle_t const* Overlay::getHandleRef() const {
+    return mOverlayHandle;
+}
+
+size_t Overlay::getBufferOffset() const {
+    return mCurrentBufferOffset;
+}
+
+sp<IMemoryHeap> Overlay::getHeap() const {
+    return mHeap;
+}
+
+uint32_t Overlay::getWidth() const {
+    return mWidth;
+}
+
+uint32_t Overlay::getHeight() const {
+    return mHeight;
+}
+
+int32_t Overlay::getFormat() const {
+    return mFormat;
+}
+
+int32_t Overlay::getWidthStride() const {
+    return mWidthStride;
+}
+
+int32_t Overlay::getHeightStride() const {
+    return mHeightStride;
+}
+
+sp<Overlay> Overlay::readFromParcel(const Parcel& data) {
+    sp<Overlay> result;
+    sp<IOverlay> overlay = IOverlay::asInterface(data.readStrongBinder());
+    if (overlay != NULL) {
+        sp<IMemoryHeap> heap = IMemoryHeap::asInterface(data.readStrongBinder());
+        uint32_t w = data.readInt32();
+        uint32_t h = data.readInt32();
+        uint32_t f = data.readInt32();
+        uint32_t ws = data.readInt32();
+        uint32_t hs = data.readInt32();
+        /* FIXME: handles should be promoted to "real" API and be handled by 
+         * the framework */
+        int numfd = data.readInt32();
+        int numint = data.readInt32();
+        overlay_handle_t* handle = (overlay_handle_t*)malloc(
+                sizeof(overlay_handle_t) + numint*sizeof(int));
+        for (int i=0 ; i<numfd ; i++)
+            handle->fds[i] = data.readFileDescriptor();
+        for (int i=0 ; i<numint ; i++)
+            handle->data[i] = data.readInt32();
+        result = new Overlay(handle, overlay, heap, w, h, f, ws, hs);
+    }
+    return result;
+}
+
+status_t Overlay::writeToParcel(Parcel* reply, const sp<Overlay>& o) {
+    if (o != NULL) {
+        reply->writeStrongBinder(o->mOverlay->asBinder());
+        reply->writeStrongBinder(o->mHeap->asBinder());
+        reply->writeInt32(o->mWidth);
+        reply->writeInt32(o->mHeight);
+        reply->writeInt32(o->mFormat);
+        reply->writeInt32(o->mWidthStride);
+        reply->writeInt32(o->mHeightStride);
+        /* FIXME: handles should be promoted to "real" API and be handled by 
+         * the framework */
+        reply->writeInt32(o->mOverlayHandle->numFds);
+        reply->writeInt32(o->mOverlayHandle->numInts);
+        for (int i=0 ; i<o->mOverlayHandle->numFds ; i++)
+            reply->writeFileDescriptor(o->mOverlayHandle->fds[i]);
+        for (int i=0 ; i<o->mOverlayHandle->numInts ; i++)
+            reply->writeInt32(o->mOverlayHandle->data[i]);
+    } else {
+        reply->writeStrongBinder(NULL);
+    }
+    return NO_ERROR;
+}
+
+// ----------------------------------------------------------------------------
+
+}; // namespace android
+
diff --git a/libs/ui/Surface.cpp b/libs/ui/Surface.cpp
index 0a9aaad..4ea9ae2 100644
--- a/libs/ui/Surface.cpp
+++ b/libs/ui/Surface.cpp
@@ -47,7 +47,7 @@
         const ISurfaceFlingerClient::surface_data_t& data,
         uint32_t w, uint32_t h, PixelFormat format, uint32_t flags,
         bool owner)
-    : mClient(client), mSurface(surface), mMemoryType(data.type),
+    : mClient(client), mSurface(surface),
       mToken(data.token), mIdentity(data.identity),
       mFormat(format), mFlags(flags), mOwner(owner)
 {
@@ -67,7 +67,6 @@
     mSurface = rhs->mSurface;
     mHeap[0] = rhs->mHeap[0];
     mHeap[1] = rhs->mHeap[1];
-    mMemoryType = rhs->mMemoryType;
     mFormat  = rhs->mFormat;
     mFlags   = rhs->mFlags;
     mSurfaceHeapBase[0] = rhs->mSurfaceHeapBase[0];
@@ -186,7 +185,6 @@
     sp<ISurface> surface    = interface_cast<ISurface>(parcel->readStrongBinder());
     data.heap[0]            = interface_cast<IMemoryHeap>(parcel->readStrongBinder());
     data.heap[1]            = interface_cast<IMemoryHeap>(parcel->readStrongBinder());
-    data.type               = parcel->readInt32();
     data.token              = parcel->readInt32();
     data.identity           = parcel->readInt32();
     PixelFormat format      = parcel->readInt32();
@@ -207,7 +205,6 @@
     sp<SurfaceComposerClient> client;
     sp<ISurface> sur;
     sp<IMemoryHeap> heap[2];
-    int type = 0;
     if (surface->isValid()) {
         token = surface->mToken;
         identity = surface->mIdentity;
@@ -215,7 +212,6 @@
         sur = surface->mSurface;
         heap[0] = surface->mHeap[0];
         heap[1] = surface->mHeap[1];
-        type = surface->mMemoryType;
         format = surface->mFormat;
         flags = surface->mFlags;
     }
@@ -223,7 +219,6 @@
     parcel->writeStrongBinder(sur!=0     ? sur->asBinder()      : NULL);
     parcel->writeStrongBinder(heap[0]!=0 ? heap[0]->asBinder()  : NULL);
     parcel->writeStrongBinder(heap[1]!=0 ? heap[1]->asBinder()  : NULL);
-    parcel->writeInt32(type);
     parcel->writeInt32(token);
     parcel->writeInt32(identity);
     parcel->writeInt32(format);
diff --git a/libs/ui/Time.cpp b/libs/ui/Time.cpp
index c98667f..b553913 100644
--- a/libs/ui/Time.cpp
+++ b/libs/ui/Time.cpp
@@ -85,10 +85,10 @@
 }
 
 String8 
-Time::format(const char *format) const
+Time::format(const char *format, const struct strftime_locale *locale) const
 {
     char buf[257];
-    int n = strftime(buf, 257, format, &(this->t));
+    int n = strftime_tz(buf, 257, format, &(this->t), locale);
     if (n > 0) {
         return String8(buf);
     } else {
diff --git a/libs/utils/Android.mk b/libs/utils/Android.mk
index 4a68dc1..cdb8ca2 100644
--- a/libs/utils/Android.mk
+++ b/libs/utils/Android.mk
@@ -139,6 +139,14 @@
 	liblog \
 	libcutils
 
+ifneq ($(TARGET_SIMULATOR),true)
+ifeq ($(TARGET_OS)-$(TARGET_ARCH),linux-x86)
+# This is needed on x86 to bring in dl_iterate_phdr for CallStack.cpp
+LOCAL_SHARED_LIBRARIES += \
+	libdl
+endif # linux-x86
+endif # sim
+
 LOCAL_MODULE:= libutils
 
 #LOCAL_CFLAGS+=
diff --git a/libs/utils/CallStack.cpp b/libs/utils/CallStack.cpp
index 4968666..26fb22a 100644
--- a/libs/utils/CallStack.cpp
+++ b/libs/utils/CallStack.cpp
@@ -79,35 +79,35 @@
 /*****************************************************************************/
 
 static 
-const char *lookup_symbol(const void* addr, uint32_t *offset, char* name, size_t bufSize)
+const char *lookup_symbol(const void* addr, void **offset, char* name, size_t bufSize)
 {
 #if HAVE_DLADDR
-	Dl_info info;
-	if (dladdr(addr, &info)) {
-		*offset = (uint32_t)info.dli_saddr;
-		return info.dli_sname;
-	}
+    Dl_info info;
+    if (dladdr(addr, &info)) {
+        *offset = info.dli_saddr;
+        return info.dli_sname;
+    }
 #endif
-	return NULL;
+    return NULL;
 }
 
 static 
 int32_t linux_gcc_demangler(const char *mangled_name, char *unmangled_name, size_t buffersize)
 {
-	size_t out_len = 0;
+    size_t out_len = 0;
 #if HAVE_CXXABI
-	int status = 0;
-	char *demangled = abi::__cxa_demangle(mangled_name, 0, &out_len, &status);
-	if (status == 0) {
-		// OK
-		if (out_len < buffersize) memcpy(unmangled_name, demangled, out_len);
-		else out_len = 0;
-		free(demangled);
-	} else {
-		out_len = 0;
-	}
+    int status = 0;
+    char *demangled = abi::__cxa_demangle(mangled_name, 0, &out_len, &status);
+    if (status == 0) {
+        // OK
+        if (out_len < buffersize) memcpy(unmangled_name, demangled, out_len);
+        else out_len = 0;
+        free(demangled);
+    } else {
+        out_len = 0;
+    }
 #endif
-	return out_len;
+    return out_len;
 }
 
 /*****************************************************************************/
@@ -115,12 +115,12 @@
 class MapInfo {
     struct mapinfo {
         struct mapinfo *next;
-        unsigned start;
-        unsigned end;
+        uint64_t start;
+        uint64_t end;
         char name[];
     };
 
-    const char *map_to_name(unsigned pc, const char* def) {
+    const char *map_to_name(uint64_t pc, const char* def) {
         mapinfo* mi = getMapInfoList();
         while(mi) {
             if ((pc >= mi->start) && (pc < mi->end))
@@ -139,8 +139,8 @@
         if (line[20] != 'x') return 0;
         mi = (mapinfo*)malloc(sizeof(mapinfo) + (len - 47));
         if (mi == 0) return 0;
-        mi->start = strtoul(line, 0, 16);
-        mi->end = strtoul(line + 9, 0, 16);
+        mi->start = strtoull(line, 0, 16);
+        mi->end = strtoull(line + 9, 0, 16);
         mi->next = 0;
         strcpy(mi->name, line + 49);
         return mi;
@@ -184,7 +184,7 @@
     }
     
     static const char *mapAddressToName(const void* pc, const char* def) {
-        return sMapInfo.map_to_name((unsigned)pc, def);
+        return sMapInfo.map_to_name((uint64_t)pc, def);
     }
 
 };
@@ -278,7 +278,7 @@
     char tmp[256];
     char tmp1[32];
     char tmp2[32];
-    uint32_t offs;
+    void *offs;
 
     const void* ip = mStack[level];
     if (!ip) return res;
@@ -291,14 +291,14 @@
     if (name) {
         if (linux_gcc_demangler(name, tmp, 256) != 0)
             name = tmp;
-        snprintf(tmp1, 32, "0x%08x: <", (size_t)ip);
-        snprintf(tmp2, 32, ">+0x%08x", offs);
+        snprintf(tmp1, 32, "0x%p: <", ip);
+        snprintf(tmp2, 32, ">+0x%p", offs);
         res.append(tmp1);
         res.append(name);
         res.append(tmp2);
     } else { 
         name = MapInfo::mapAddressToName(ip, "<unknown>");
-        snprintf(tmp, 256, "pc %08x  %s", (size_t)ip, name);
+        snprintf(tmp, 256, "pc %p  %s", ip, name);
         res.append(tmp);
     }
     res.append("\n");
diff --git a/libs/utils/IPCThreadState.cpp b/libs/utils/IPCThreadState.cpp
index ca49d9a..04ae142 100644
--- a/libs/utils/IPCThreadState.cpp
+++ b/libs/utils/IPCThreadState.cpp
@@ -391,6 +391,29 @@
     status_t result;
     do {
         int32_t cmd;
+        
+        // When we've cleared the incoming command queue, process any pending derefs
+        if (mIn.dataPosition() >= mIn.dataSize()) {
+            size_t numPending = mPendingWeakDerefs.size();
+            if (numPending > 0) {
+                for (size_t i = 0; i < numPending; i++) {
+                    RefBase::weakref_type* refs = mPendingWeakDerefs[i];
+                    refs->decWeak(mProcess.get());
+                }
+                mPendingWeakDerefs.clear();
+            }
+
+            numPending = mPendingStrongDerefs.size();
+            if (numPending > 0) {
+                for (size_t i = 0; i < numPending; i++) {
+                    BBinder* obj = mPendingStrongDerefs[i];
+                    obj->decStrong(mProcess.get());
+                }
+                mPendingStrongDerefs.clear();
+            }
+        }
+
+        // now get the next command to be processed, waiting if necessary
         result = talkWithDriver();
         if (result >= NO_ERROR) {
             size_t IN = mIn.dataAvail();
@@ -832,7 +855,7 @@
             LOG_REMOTEREFS("BR_RELEASE from driver on %p", obj);
             obj->printRefs();
         }
-        obj->decStrong(mProcess.get());
+        mPendingStrongDerefs.push(obj);
         break;
         
     case BR_INCREFS:
@@ -853,7 +876,7 @@
         //LOG_ASSERT(refs->refBase() == obj,
         //           "BR_DECREFS: object %p does not match cookie %p (expected %p)",
         //           refs, obj, refs->refBase());
-        refs->decWeak(mProcess.get());
+        mPendingWeakDerefs.push(refs);
         break;
         
     case BR_ATTEMPT_ACQUIRE:
diff --git a/libs/utils/LogSocket.cpp b/libs/utils/LogSocket.cpp
index e64f794..55c1b99 100644
--- a/libs/utils/LogSocket.cpp
+++ b/libs/utils/LogSocket.cpp
@@ -16,7 +16,7 @@
 
 
 #ifndef HAVE_WINSOCK
-#define SOCKETLOG
+//#define SOCKETLOG
 #endif
 
 #ifdef SOCKETLOG
diff --git a/libs/utils/MemoryDealer.cpp b/libs/utils/MemoryDealer.cpp
index e6d1d18..cf8201b 100644
--- a/libs/utils/MemoryDealer.cpp
+++ b/libs/utils/MemoryDealer.cpp
@@ -387,21 +387,23 @@
     start = (start + pagesize-1) & ~(pagesize-1);
     end &= ~(pagesize-1);    
 
-    void* const start_ptr = (void*)(intptr_t(getHeap()->base()) + start);
-    size_t size = end-start;
+    if (start < end) {
+        void* const start_ptr = (void*)(intptr_t(getHeap()->base()) + start);
+        size_t size = end-start;
 
 #ifndef NDEBUG
-    memset(start_ptr, 0xdf, size);
+        memset(start_ptr, 0xdf, size);
 #endif
-  
-// MADV_REMOVE is not defined on Dapper based Goobuntu 
+
+        // MADV_REMOVE is not defined on Dapper based Goobuntu 
 #ifdef MADV_REMOVE 
-    if (size) {
-        int err = madvise(start_ptr, size, MADV_REMOVE);
-        LOGW_IF(err, "madvise(%p, %u, MADV_REMOVE) returned %s",
-                start_ptr, size, err<0 ? strerror(errno) : "Ok");
-    }
+        if (size) {
+            int err = madvise(start_ptr, size, MADV_REMOVE);
+            LOGW_IF(err, "madvise(%p, %u, MADV_REMOVE) returned %s",
+                    start_ptr, size, err<0 ? strerror(errno) : "Ok");
+        }
 #endif
+    }
 }
 
 }; // namespace android
diff --git a/libs/utils/MemoryHeapPmem.cpp b/libs/utils/MemoryHeapPmem.cpp
index 1e5a1cc..eba2b30 100644
--- a/libs/utils/MemoryHeapPmem.cpp
+++ b/libs/utils/MemoryHeapPmem.cpp
@@ -38,9 +38,20 @@
 
 // ---------------------------------------------------------------------------
 
-class MemoryHeapPmem;
+MemoryHeapPmem::MemoryPmem::MemoryPmem(const sp<MemoryHeapPmem>& heap)
+    : BnMemory(), mClientHeap(heap)
+{
+}
 
-class SubRegionMemory : public BnMemory {
+MemoryHeapPmem::MemoryPmem::~MemoryPmem() {
+    if (mClientHeap != NULL) {
+        mClientHeap->remove(this);
+    }
+}
+
+// ---------------------------------------------------------------------------
+
+class SubRegionMemory : public MemoryHeapPmem::MemoryPmem {
 public:
     SubRegionMemory(const sp<MemoryHeapPmem>& heap, ssize_t offset, size_t size);
     virtual ~SubRegionMemory();
@@ -50,15 +61,14 @@
     void revoke();
     size_t              mSize;
     ssize_t             mOffset;
-    sp<MemoryHeapPmem>  mClientHeap;
 };
 
 SubRegionMemory::SubRegionMemory(const sp<MemoryHeapPmem>& heap,
         ssize_t offset, size_t size)
-    : mSize(size), mOffset(offset), mClientHeap(heap)
+    : MemoryHeapPmem::MemoryPmem(heap), mSize(size), mOffset(offset)
 {
 #ifndef NDEBUG
-    void* const start_ptr = (void*)(intptr_t(mClientHeap->base()) + offset);
+    void* const start_ptr = (void*)(intptr_t(getHeap()->base()) + offset);
     memset(start_ptr, 0xda, size);
 #endif
 
@@ -80,7 +90,7 @@
 {
     if (offset) *offset = mOffset;
     if (size)   *size = mSize;
-    return mClientHeap;
+    return getHeap();
 }
 
 SubRegionMemory::~SubRegionMemory()
@@ -98,8 +108,9 @@
     // promote() it.
     
 #if HAVE_ANDROID_OS
-    if (mClientHeap != NULL) {
-        int our_fd = mClientHeap->heapID();
+    if (mSize != NULL) {
+        const sp<MemoryHeapPmem>& heap(getHeap());
+        int our_fd = heap->heapID();
         struct pmem_region sub;
         sub.offset = mOffset;
         sub.len = mSize;
@@ -107,7 +118,7 @@
         LOGE_IF(err<0, "PMEM_UNMAP failed (%s), "
                 "mFD=%d, sub.offset=%lu, sub.size=%lu",
                 strerror(errno), our_fd, sub.offset, sub.len);
-        mClientHeap.clear();
+        mSize = 0;
     }
 #endif
 }
@@ -157,10 +168,7 @@
 
 sp<IMemory> MemoryHeapPmem::mapMemory(size_t offset, size_t size)
 {
-    sp<SubRegionMemory> memory;
-    if (heapID() > 0) 
-        memory = new SubRegionMemory(this, offset, size);
-
+    sp<MemoryPmem> memory = createMemory(offset, size);
     if (memory != 0) {
         Mutex::Autolock _l(mLock);
         mAllocations.add(memory);
@@ -168,6 +176,15 @@
     return memory;
 }
 
+sp<MemoryHeapPmem::MemoryPmem> MemoryHeapPmem::createMemory(
+        size_t offset, size_t size)
+{
+    sp<SubRegionMemory> memory;
+    if (heapID() > 0) 
+        memory = new SubRegionMemory(this, offset, size);
+    return memory;
+}
+
 status_t MemoryHeapPmem::slap()
 {
 #if HAVE_ANDROID_OS
@@ -206,21 +223,26 @@
 
 void MemoryHeapPmem::revoke()
 {
-    Vector< wp<SubRegionMemory> > allocations;
+    SortedVector< wp<MemoryPmem> > allocations;
 
     { // scope for lock
         Mutex::Autolock _l(mLock);
         allocations = mAllocations;
-        mAllocations.clear();
     }
     
     ssize_t count = allocations.size();
     for (ssize_t i=0 ; i<count ; i++) {
-        sp<SubRegionMemory> memory(allocations[i].promote());
+        sp<MemoryPmem> memory(allocations[i].promote());
         if (memory != 0)
             memory->revoke();
     }
 }
 
+void MemoryHeapPmem::remove(const wp<MemoryPmem>& memory)
+{
+    Mutex::Autolock _l(mLock);
+    mAllocations.remove(memory);
+}
+
 // ---------------------------------------------------------------------------
 }; // namespace android
diff --git a/libs/utils/ResourceTypes.cpp b/libs/utils/ResourceTypes.cpp
index a5fe9fb..5a09fb4 100644
--- a/libs/utils/ResourceTypes.cpp
+++ b/libs/utils/ResourceTypes.cpp
@@ -164,7 +164,11 @@
 
 size_t Res_png_9patch::serializedSize()
 {
-    return sizeof(Res_png_9patch)
+    // The size of this struct is 32 bytes on the 32-bit target system
+    // 4 * int8_t
+    // 4 * int32_t
+    // 3 * pointer
+    return 32
             + numXDivs * sizeof(int32_t)
             + numYDivs * sizeof(int32_t)
             + numColors * sizeof(uint32_t);
@@ -180,8 +184,10 @@
 void Res_png_9patch::serialize(void * outData)
 {
     char* data = (char*) outData;
-    memmove(data, this, sizeof(Res_png_9patch));
-    data +=  sizeof(Res_png_9patch);
+    memmove(data, &wasDeserialized, 4);     // copy  wasDeserialized, numXDivs, numYDivs, numColors
+    memmove(data + 12, &paddingLeft, 16);   // copy paddingXXXX
+    data += 32;
+
     memmove(data, this->xDivs, numXDivs * sizeof(int32_t));
     data +=  numXDivs * sizeof(int32_t);
     memmove(data, this->yDivs, numYDivs * sizeof(int32_t));
@@ -189,27 +195,32 @@
     memmove(data, this->colors, numColors * sizeof(uint32_t));
 }
 
-Res_png_9patch* Res_png_9patch::deserialize(const void* inData)
-{
-    deserialize(inData, (Res_png_9patch*) inData);
-    return (Res_png_9patch*) inData;
-}
-
-void Res_png_9patch::deserialize(const void* inData, Res_png_9patch* outData) {
-    Res_png_9patch* patch = (Res_png_9patch*) inData;
+static void deserializeInternal(const void* inData, Res_png_9patch* outData) {
+    char* patch = (char*) inData;
     if (inData != outData) {
-        memcpy(outData, inData, patch->serializedSize());
+        memmove(&outData->wasDeserialized, patch, 4);     // copy  wasDeserialized, numXDivs, numYDivs, numColors
+        memmove(&outData->paddingLeft, patch + 12, 4);     // copy  wasDeserialized, numXDivs, numYDivs, numColors
     }
     outData->wasDeserialized = true;
     char* data = (char*)outData;
     data +=  sizeof(Res_png_9patch);
     outData->xDivs = (int32_t*) data;
-    data +=  patch->numXDivs * sizeof(int32_t);
+    data +=  outData->numXDivs * sizeof(int32_t);
     outData->yDivs = (int32_t*) data;
-    data +=  patch->numYDivs * sizeof(int32_t);
+    data +=  outData->numYDivs * sizeof(int32_t);
     outData->colors = (uint32_t*) data;
 }
 
+Res_png_9patch* Res_png_9patch::deserialize(const void* inData)
+{
+    if (sizeof(void*) != sizeof(int32_t)) {
+        LOGE("Cannot deserialize on non 32-bit system\n");
+        return NULL;
+    }
+    deserializeInternal(inData, (Res_png_9patch*) inData);
+    return (Res_png_9patch*) inData;
+}
+
 // --------------------------------------------------------------------
 // --------------------------------------------------------------------
 // --------------------------------------------------------------------
@@ -3863,7 +3874,7 @@
                 }
                 for (size_t configIndex=0; configIndex<NTC; configIndex++) {
                     const ResTable_type* type = typeConfigs->configs[configIndex];
-                    if ((((int)type)&0x3) != 0) {
+                    if ((((uint64_t)type)&0x3) != 0) {
                         printf("      NON-INTEGER ResTable_type ADDRESS: %p\n", type);
                         continue;
                     }
diff --git a/libs/utils/futex_synchro.c b/libs/utils/futex_synchro.c
index c13760d..ba19520 100644
--- a/libs/utils/futex_synchro.c
+++ b/libs/utils/futex_synchro.c
@@ -25,8 +25,8 @@
 #include <private/utils/futex_synchro.h>
 
 
-// This futex glue code is need on desktop linux, but is part of klibc on ARM
-#if !defined(__arm__)
+// This futex glue code is need on desktop linux, but is already part of bionic.
+#if !defined(HAVE_FUTEX_WRAPPERS)
 
 #include <sys/syscall.h>
 typedef unsigned int u32;
@@ -76,7 +76,7 @@
 int __atomic_swap(int _new, volatile int *ptr);
 int __atomic_dec(volatile int *ptr);
 
-#endif // !defined(__arm__)
+#endif // !defined(HAVE_FUTEX_WRAPPERS)
 
 
 // lock states
diff --git a/opengl/libGLES_CM/gl_wrapper.cpp b/opengl/libGLES_CM/gl_wrapper.cpp
index 5da4f9a..3b7f45e 100644
--- a/opengl/libGLES_CM/gl_wrapper.cpp
+++ b/opengl/libGLES_CM/gl_wrapper.cpp
@@ -373,6 +373,7 @@
 
 static sp<GPURevokeRequester> gRevokerCallback;
 
+
 static request_gpu_t* gpu_acquire(void* user)
 {
     sp<ISurfaceComposer> server( getSurfaceFlinger() );
@@ -383,7 +384,10 @@
     }
     
     ISurfaceComposer::gpu_info_t info;
-    gRevokerCallback = new GPURevokeRequester();
+    
+    if (gRevokerCallback == 0)
+        gRevokerCallback = new GPURevokeRequester();
+
     status_t err = server->requestGPU(gRevokerCallback, &info);
     if (err != NO_ERROR) {
         LOGD("requestGPU returned %d", err);
@@ -549,6 +553,21 @@
     return -1;
 }
 
+static EGLint configToUniqueId(egl_display_t const* dp, int i, int index) 
+{
+    // NOTE: this mapping works only if we have no more than two EGLimpl
+    return (i>0 ? dp->numConfigs[0] : 0) + index;
+}
+
+static void uniqueIdToConfig(egl_display_t const* dp, EGLint configId,
+        int& i, int& index) 
+{
+    // NOTE: this mapping works only if we have no more than two EGLimpl
+    size_t numConfigs = dp->numConfigs[0];
+    i = configId / numConfigs;
+    index = configId % numConfigs;
+}
+
 static int cmp_configs(const void* a, const void *b)
 {
     EGLConfig c0 = *(EGLConfig const *)a;
@@ -557,7 +576,7 @@
 }
 
 static char const * const gVendorString     = "Android";
-static char const * const gVersionString    = "1.2 Android META-EGL";
+static char const * const gVersionString    = "1.3 Android META-EGL";
 static char const * const gClientApiString  = "OpenGL ES";
 
 struct extention_map_t {
@@ -834,7 +853,13 @@
         property_get("debug.egl.hw", value, "1");
         if (atoi(value) != 0) {
             cnx->hooks = &gHooks[IMPL_HARDWARE];
-            cnx->dso = load_driver("libhgl.so", cnx->hooks);
+            property_get("debug.egl.profiler", value, "0");
+            if (atoi(value) == 0) {
+                cnx->dso = load_driver("libhgl.so", cnx->hooks);
+            } else {
+                LOGW("Using instrumented h/w OpenGL ES library");
+                cnx->dso = load_driver("libhgld.so", cnx->hooks);
+            }
         } else {
             LOGD("3D hardware acceleration is disabled");
         }
@@ -864,6 +889,8 @@
         
         d->dpys[IMPL_HARDWARE] = cnx->hooks->egl.eglGetDisplay(display);
         if (d->dpys[IMPL_HARDWARE] == EGL_NO_DISPLAY) {
+            LOGE("h/w accelerated eglGetDisplay() failed (%s)",
+                    egl_strerror(cnx->hooks->egl.eglGetError()));
             dlclose((void*)cnx->dso);
             cnx->dso = 0;
             // in case of failure, we want to make sure we don't try again
@@ -900,7 +927,10 @@
         egl_connection_t* const cnx = &gEGLImpl[i];
         cnx->major = -1;
         cnx->minor = -1;
-        if (cnx->dso && cnx->hooks->egl.eglInitialize(
+        if (!cnx->dso) 
+            continue;
+
+        if (cnx->hooks->egl.eglInitialize(
                 dp->dpys[i], &cnx->major, &cnx->minor)) {
 
             //LOGD("initialized %d dpy=%p, ver=%d.%d, cnx=%p",
@@ -912,10 +942,10 @@
             dp->queryString[i].version =
                 cnx->hooks->egl.eglQueryString(dp->dpys[i], EGL_VERSION);
             dp->queryString[i].extensions = strdup(
-                cnx->hooks->egl.eglQueryString(dp->dpys[i], EGL_EXTENSIONS));
+                    cnx->hooks->egl.eglQueryString(dp->dpys[i], EGL_EXTENSIONS));
             dp->queryString[i].clientApi =
                 cnx->hooks->egl.eglQueryString(dp->dpys[i], EGL_CLIENT_APIS);
-            
+
             // Dynamically insert extensions we know about
             if (cnx->hooks->egl.eglSwapRectangleANDROID)
                 add_extension(dp, dp->queryString[i].extensions,
@@ -924,12 +954,15 @@
             if (cnx->hooks->egl.eglQueryStringConfigANDROID)
                 add_extension(dp, dp->queryString[i].extensions,
                         "EGL_ANDROID_query_string_config");
+        } else {
+            LOGD("%d: eglInitialize() failed (%s)", 
+                    i, egl_strerror(cnx->hooks->egl.eglGetError()));
         }
     }
-            
+
     // Build the extension list that depends on the current config.
     // It is the intersection of our extension list and the
-    // underlaying EGL's extensions list
+    // underlying EGL's extensions list
     EGLBoolean res = EGL_FALSE;
     for (int i=0 ; i<2 ; i++) {
         egl_connection_t* const cnx = &gEGLImpl[i];
@@ -951,10 +984,10 @@
             } while (*p);
             free((void*)our_extensions_org);
 
-            // remove the trailling white space
+            // remove the trailing white space
             if (extensions_config[0] != 0) {
                 size_t l = strlen(extensions_config) - 1; // new size
-                extensions_config[l] = 0; // remove the trailling white space
+                extensions_config[l] = 0; // remove the trailing white space
                 extensions_config = (char*)realloc(extensions_config, l+1);
             } else {
                 extensions_config = (char*)realloc(extensions_config, 1);
@@ -1065,15 +1098,74 @@
         return EGL_TRUE;
     }
 
+    EGLint n;
     EGLBoolean res = EGL_FALSE;
     *num_config = 0;
+
+    
+    // It is unfortunate, but we need to remap the EGL_CONFIG_IDs, 
+    // to do  this, we have to go through the attrib_list array once
+    // to figure out both its size and if it contains an EGL_CONFIG_ID
+    // key. If so, the full array is copied and patched.
+    // NOTE: we assume that there can be only one occurrence
+    // of EGL_CONFIG_ID.
+    
+    EGLint patch_index = -1;
+    GLint attr;
+    size_t size = 0;
+    while ((attr=attrib_list[size])) {
+        if (attr == EGL_CONFIG_ID)
+            patch_index = size;
+        size += 2;
+    }
+    if (patch_index >= 0) {
+        size += 2; // we need copy the sentinel as well
+        EGLint* new_list = (EGLint*)malloc(size*sizeof(EGLint));
+        if (new_list == 0)
+            return setError(EGL_BAD_ALLOC, EGL_FALSE);
+        memcpy(new_list, attrib_list, size*sizeof(EGLint));
+
+        // patch the requested EGL_CONFIG_ID
+        int i, index;
+        EGLint& configId(new_list[patch_index+1]);
+        uniqueIdToConfig(dp, configId, i, index);
+        
+        egl_connection_t* const cnx = &gEGLImpl[i];
+        if (cnx->dso) {
+            cnx->hooks->egl.eglGetConfigAttrib(
+                    dp->dpys[i], dp->configs[i][index], 
+                    EGL_CONFIG_ID, &configId);
+
+            // and switch to the new list
+            attrib_list = const_cast<const EGLint *>(new_list);
+
+            // At this point, the only configuration that can match is
+            // dp->configs[i][index], however, we don't know if it would be
+            // rejected because of the other attributes, so we do have to call
+            // cnx->hooks->egl.eglChooseConfig() -- but we don't have to loop
+            // through all the EGLimpl[].
+            // We also know we can only get a single config back, and we know
+            // which one.
+
+            res = cnx->hooks->egl.eglChooseConfig(
+                    dp->dpys[i], attrib_list, configs, config_size, &n);
+            if (res && n>0) {
+                // n has to be 0 or 1, by construction, and we already know
+                // which config it will return (since there can be only one).
+                configs[0] = MAKE_CONFIG(i, index);
+                *num_config = 1;
+            }
+        }
+
+        free(const_cast<EGLint *>(attrib_list));
+        return res;
+    }
+
     for (int i=0 ; i<2 ; i++) {
         egl_connection_t* const cnx = &gEGLImpl[i];
         if (cnx->dso) {
-            EGLint n;
             if (cnx->hooks->egl.eglChooseConfig(
-                    dp->dpys[i], attrib_list, configs, config_size, &n))
-            {
+                    dp->dpys[i], attrib_list, configs, config_size, &n)) {
                 // now we need to convert these client EGLConfig to our
                 // internal EGLConfig format. This is done in O(n log n).
                 for (int j=0 ; j<n ; j++) {
@@ -1102,6 +1194,13 @@
     int i=0, index=0;
     egl_connection_t* cnx = validate_display_config(dpy, config, dp, i, index);
     if (!cnx) return EGL_FALSE;
+    
+    if (attribute == EGL_CONFIG_ID) {
+        // EGL_CONFIG_IDs must be unique, just use the order of the selected
+        // EGLConfig.
+        *value = configToUniqueId(dp, i, index);
+        return EGL_TRUE;
+    }
     return cnx->hooks->egl.eglGetConfigAttrib(
             dp->dpys[i], dp->configs[i][index], attribute, value);
 }
diff --git a/opengl/libagl/TextureObjectManager.cpp b/opengl/libagl/TextureObjectManager.cpp
index 12fae63..ce31854 100644
--- a/opengl/libagl/TextureObjectManager.cpp
+++ b/opengl/libagl/TextureObjectManager.cpp
@@ -129,7 +129,7 @@
     // so for now, we just loose it.
     memset(crop_rect, 0, sizeof(crop_rect));
 
-    // it would be nice id we could keep the generate_mipmap flag
+    // it would be nice if we could keep the generate_mipmap flag,
     // we would have to generate them right now though.
     generate_mipmap = GL_FALSE;
 
@@ -286,7 +286,7 @@
 
 void EGLSurfaceManager::deleteTextures(GLsizei n, const GLuint *tokens)
 {
-    // free all texures
+    // free all textures
     Mutex::Autolock _l(mLock);
     for (GLsizei i=0 ; i<n ; i++) {
         const GLuint t(*tokens++);
diff --git a/opengl/libagl/array.cpp b/opengl/libagl/array.cpp
index 1f6757d..8fa7566 100644
--- a/opengl/libagl/array.cpp
+++ b/opengl/libagl/array.cpp
@@ -1116,8 +1116,8 @@
     if (enables & GGL_ENABLE_TMUS) { // needs texture transforms
         want |= transform_state_t::TEXTURE;
     }
-    if (c->clipPlanes.enable) { // needs eye coords
-        want |= transform_state_t::MODELVIEW;
+    if (c->clipPlanes.enable || (enables & GGL_ENABLE_FOG)) { 
+        want |= transform_state_t::MODELVIEW; // needs eye coords
     }
     ogles_validate_transform(c, want);
 
diff --git a/opengl/libagl/egl.cpp b/opengl/libagl/egl.cpp
index 854a49e..3e8dca9 100644
--- a/opengl/libagl/egl.cpp
+++ b/opengl/libagl/egl.cpp
@@ -36,6 +36,7 @@
 #include <GLES/egl.h>
 
 #include <pixelflinger/format.h>
+#include <pixelflinger/pixelflinger.h>
 
 #include "context.h"
 #include "state.h"
@@ -57,7 +58,7 @@
 #ifndef HAVE_ANDROID_OS
 namespace gl {
 pthread_key_t gGLKey = -1;
-}; // namspace gl
+}; // namespace gl
 #endif
 
 template<typename T>
@@ -156,7 +157,7 @@
 egl_surface_t::egl_surface_t(EGLDisplay dpy,
         EGLConfig config,
         int32_t depthFormat)
-    : magic(0x31415265), dpy(dpy), config(config), ctx(0)
+    : magic(MAGIC), dpy(dpy), config(config), ctx(0)
 {
     depth.version = sizeof(GGLSurface);
     depth.data = 0;
@@ -240,7 +241,7 @@
 {
     uint32_t flags = nativeWindow->swapBuffers(nativeWindow);
     if (flags & EGL_NATIVES_FLAG_SIZE_CHANGED) {
-        // TODO: we probaly should reset the swap rect here
+        // TODO: we probably should reset the swap rect here
         // if the window size has changed
         //    window->setSwapRectangle(Rect(info.w, info.h));
         if (depth.data) {
@@ -402,12 +403,13 @@
 {
     size_t size = w*h;
     switch (f) {
-    case GGL_PIXEL_FORMAT_RGB_565:      size *= 2; break;
-    case GGL_PIXEL_FORMAT_RGBA_8888:    size *= 4; break;
-    default:
-        LOGE("incompatible pixel format for pbuffer (format=%d)", f);
-        pbuffer.data = 0;
-        break;
+        case GGL_PIXEL_FORMAT_A_8:          size *= 1; break;
+        case GGL_PIXEL_FORMAT_RGB_565:      size *= 2; break;
+        case GGL_PIXEL_FORMAT_RGBA_8888:    size *= 4; break;
+        default:
+            LOGE("incompatible pixel format for pbuffer (format=%d)", f);
+            pbuffer.data = 0;
+            break;
     }
     pbuffer.version = sizeof(GGLSurface);
     pbuffer.width   = w;
@@ -488,28 +490,28 @@
 };
 
 static const extention_map_t gExtentionMap[] = {
-    { "eglSwapRectangleANDROID",            (void(*)())&eglSwapRectangleANDROID },
-    { "glDrawTexsOES",                      (void(*)())&glDrawTexsOES },
-    { "glDrawTexiOES",                      (void(*)())&glDrawTexiOES },
-    { "glDrawTexfOES",                      (void(*)())&glDrawTexfOES },
-    { "glDrawTexxOES",                      (void(*)())&glDrawTexxOES },
-    { "glDrawTexsvOES",                     (void(*)())&glDrawTexsvOES },
-    { "glDrawTexivOES",                     (void(*)())&glDrawTexivOES },
-    { "glDrawTexfvOES",                     (void(*)())&glDrawTexfvOES },
-    { "glDrawTexxvOES",                     (void(*)())&glDrawTexxvOES },
-    { "glQueryMatrixxOES",                  (void(*)())&glQueryMatrixxOES },
-    { "glClipPlanef",                       (void(*)())&glClipPlanef },
-    { "glClipPlanex",                       (void(*)())&glClipPlanex },
-    { "glBindBuffer",                       (void(*)())&glBindBuffer },
-    { "glBufferData",                       (void(*)())&glBufferData },
-    { "glBufferSubData",                    (void(*)())&glBufferSubData },
-    { "glDeleteBuffers",                    (void(*)())&glDeleteBuffers },
-    { "glGenBuffers",                       (void(*)())&glGenBuffers },
+    { "eglSwapRectangleANDROID",    (void(*)())&eglSwapRectangleANDROID },
+    { "glDrawTexsOES",              (void(*)())&glDrawTexsOES },
+    { "glDrawTexiOES",              (void(*)())&glDrawTexiOES },
+    { "glDrawTexfOES",              (void(*)())&glDrawTexfOES },
+    { "glDrawTexxOES",              (void(*)())&glDrawTexxOES },
+    { "glDrawTexsvOES",             (void(*)())&glDrawTexsvOES },
+    { "glDrawTexivOES",             (void(*)())&glDrawTexivOES },
+    { "glDrawTexfvOES",             (void(*)())&glDrawTexfvOES },
+    { "glDrawTexxvOES",             (void(*)())&glDrawTexxvOES },
+    { "glQueryMatrixxOES",          (void(*)())&glQueryMatrixxOES },
+    { "glClipPlanef",               (void(*)())&glClipPlanef },
+    { "glClipPlanex",               (void(*)())&glClipPlanex },
+    { "glBindBuffer",               (void(*)())&glBindBuffer },
+    { "glBufferData",               (void(*)())&glBufferData },
+    { "glBufferSubData",            (void(*)())&glBufferSubData },
+    { "glDeleteBuffers",            (void(*)())&glDeleteBuffers },
+    { "glGenBuffers",               (void(*)())&glGenBuffers },
 };
 
 /* 
  * In the lists below, attributes names MUST be sorted.
- * Additinnaly, all configs must be sorted according to
+ * Additionally, all configs must be sorted according to
  * the EGL specification.
  */
 
@@ -517,9 +519,10 @@
         { EGL_STENCIL_SIZE,               0                                 },
         { EGL_CONFIG_CAVEAT,              EGL_SLOW_CONFIG                   },
         { EGL_LEVEL,                      0                                 },
-        { EGL_MAX_PBUFFER_HEIGHT,         0                                 },
-        { EGL_MAX_PBUFFER_PIXELS,         0                                 },
-        { EGL_MAX_PBUFFER_WIDTH,          0                                 },
+        { EGL_MAX_PBUFFER_HEIGHT,         GGL_MAX_VIEWPORT_DIMS             },
+        { EGL_MAX_PBUFFER_PIXELS,         
+                GGL_MAX_VIEWPORT_DIMS*GGL_MAX_VIEWPORT_DIMS                 },
+        { EGL_MAX_PBUFFER_WIDTH,          GGL_MAX_VIEWPORT_DIMS             },
         { EGL_NATIVE_RENDERABLE,          EGL_TRUE                          },
         { EGL_NATIVE_VISUAL_ID,           0                                 },
         { EGL_NATIVE_VISUAL_TYPE,         GGL_PIXEL_FORMAT_RGB_565          },
@@ -536,49 +539,72 @@
 };
 
 // These configs can override the base attribute list
+// NOTE: when adding a config here, don't forget to update eglCreate*Surface()
 
 static config_pair_t const config_0_attribute_list[] = {
-        { EGL_BUFFER_SIZE,        16 },
-        { EGL_ALPHA_SIZE,          0 },
-        { EGL_BLUE_SIZE,           5 },
-        { EGL_GREEN_SIZE,          6 },
-        { EGL_RED_SIZE,            5 },
-        { EGL_DEPTH_SIZE,          0 },
-        { EGL_CONFIG_ID,           0 },
-        { EGL_SURFACE_TYPE,        EGL_WINDOW_BIT | EGL_PIXMAP_BIT },
+        { EGL_BUFFER_SIZE,     16 },
+        { EGL_ALPHA_SIZE,       0 },
+        { EGL_BLUE_SIZE,        5 },
+        { EGL_GREEN_SIZE,       6 },
+        { EGL_RED_SIZE,         5 },
+        { EGL_DEPTH_SIZE,       0 },
+        { EGL_CONFIG_ID,        0 },
+        { EGL_SURFACE_TYPE,     EGL_WINDOW_BIT|EGL_PBUFFER_BIT|EGL_PIXMAP_BIT },
 };
 
 static config_pair_t const config_1_attribute_list[] = {
-        { EGL_BUFFER_SIZE,        16 },
-        { EGL_ALPHA_SIZE,          0 },
-        { EGL_BLUE_SIZE,           5 },
-        { EGL_GREEN_SIZE,          6 },
-        { EGL_RED_SIZE,            5 },
-        { EGL_DEPTH_SIZE,         16 },
-        { EGL_CONFIG_ID,           1 },
-        { EGL_SURFACE_TYPE,        EGL_WINDOW_BIT | EGL_PIXMAP_BIT },
+        { EGL_BUFFER_SIZE,     16 },
+        { EGL_ALPHA_SIZE,       0 },
+        { EGL_BLUE_SIZE,        5 },
+        { EGL_GREEN_SIZE,       6 },
+        { EGL_RED_SIZE,         5 },
+        { EGL_DEPTH_SIZE,      16 },
+        { EGL_CONFIG_ID,        1 },
+        { EGL_SURFACE_TYPE,     EGL_WINDOW_BIT|EGL_PBUFFER_BIT|EGL_PIXMAP_BIT },
 };
 
 static config_pair_t const config_2_attribute_list[] = {
-        { EGL_BUFFER_SIZE,        32 },
-        { EGL_ALPHA_SIZE,          8 },
-        { EGL_BLUE_SIZE,           8 },
-        { EGL_GREEN_SIZE,          8 },
-        { EGL_RED_SIZE,            8 },
-        { EGL_DEPTH_SIZE,          0 },
-        { EGL_CONFIG_ID,           2 },
-        { EGL_SURFACE_TYPE,        EGL_WINDOW_BIT | EGL_PIXMAP_BIT },
+        { EGL_BUFFER_SIZE,     32 },
+        { EGL_ALPHA_SIZE,       8 },
+        { EGL_BLUE_SIZE,        8 },
+        { EGL_GREEN_SIZE,       8 },
+        { EGL_RED_SIZE,         8 },
+        { EGL_DEPTH_SIZE,       0 },
+        { EGL_CONFIG_ID,        2 },
+        { EGL_SURFACE_TYPE,     EGL_WINDOW_BIT|EGL_PBUFFER_BIT|EGL_PIXMAP_BIT },
 };
 
 static config_pair_t const config_3_attribute_list[] = {
-        { EGL_BUFFER_SIZE,        32 },
-        { EGL_ALPHA_SIZE,          8 },
-        { EGL_BLUE_SIZE,           8 },
-        { EGL_GREEN_SIZE,          8 },
-        { EGL_RED_SIZE,            8 },
-        { EGL_DEPTH_SIZE,         16 },
-        { EGL_CONFIG_ID,           3 },
-        { EGL_SURFACE_TYPE,        EGL_WINDOW_BIT | EGL_PIXMAP_BIT },
+        { EGL_BUFFER_SIZE,     32 },
+        { EGL_ALPHA_SIZE,       8 },
+        { EGL_BLUE_SIZE,        8 },
+        { EGL_GREEN_SIZE,       8 },
+        { EGL_RED_SIZE,         8 },
+        { EGL_DEPTH_SIZE,      16 },
+        { EGL_CONFIG_ID,        3 },
+        { EGL_SURFACE_TYPE,     EGL_WINDOW_BIT|EGL_PBUFFER_BIT|EGL_PIXMAP_BIT },
+};
+
+static config_pair_t const config_4_attribute_list[] = {
+        { EGL_BUFFER_SIZE,      8 },
+        { EGL_ALPHA_SIZE,       8 },
+        { EGL_BLUE_SIZE,        0 },
+        { EGL_GREEN_SIZE,       0 },
+        { EGL_RED_SIZE,         0 },
+        { EGL_DEPTH_SIZE,       0 },
+        { EGL_CONFIG_ID,        4 },
+        { EGL_SURFACE_TYPE,     EGL_WINDOW_BIT|EGL_PBUFFER_BIT|EGL_PIXMAP_BIT },
+};
+
+static config_pair_t const config_5_attribute_list[] = {
+        { EGL_BUFFER_SIZE,      8 },
+        { EGL_ALPHA_SIZE,       8 },
+        { EGL_BLUE_SIZE,        0 },
+        { EGL_GREEN_SIZE,       0 },
+        { EGL_RED_SIZE,         0 },
+        { EGL_DEPTH_SIZE,      16 },
+        { EGL_CONFIG_ID,        5 },
+        { EGL_SURFACE_TYPE,     EGL_WINDOW_BIT|EGL_PBUFFER_BIT|EGL_PIXMAP_BIT },
 };
 
 static configs_t const gConfigs[] = {
@@ -586,6 +612,8 @@
         { config_1_attribute_list, NELEM(config_1_attribute_list) },
         { config_2_attribute_list, NELEM(config_2_attribute_list) },
         { config_3_attribute_list, NELEM(config_3_attribute_list) },
+        { config_4_attribute_list, NELEM(config_4_attribute_list) },
+        { config_5_attribute_list, NELEM(config_5_attribute_list) },
 };
 
 static config_management_t const gConfigManagement[] = {
@@ -669,7 +697,7 @@
                 return 1;
             }
         } else {
-            // attribute nont found. this should NEVER happen.
+            // attribute not found. this should NEVER happen.
         }
     } else {
         // error, this attribute doesn't exist
@@ -779,11 +807,19 @@
         pixelFormat = GGL_PIXEL_FORMAT_RGBA_8888; 
         depthFormat = GGL_PIXEL_FORMAT_Z_16;
         break;
+    case 4:
+        pixelFormat = GGL_PIXEL_FORMAT_A_8; 
+        depthFormat = 0;
+        break;
+    case 5:
+        pixelFormat = GGL_PIXEL_FORMAT_A_8; 
+        depthFormat = GGL_PIXEL_FORMAT_Z_16;
+        break;
     default:
         return setError(EGL_BAD_MATCH, EGL_NO_SURFACE);
     }
 
-    // XXX: we don't have access to the pixelFormat here just yet.
+    // FIXME: we don't have access to the pixelFormat here just yet.
     // (it's possible that the surface is not fully initialized)
     // maybe this should be done after the page-flip
     //if (EGLint(info.format) != pixelFormat)
@@ -840,6 +876,14 @@
         pixelFormat = GGL_PIXEL_FORMAT_RGBA_8888; 
         depthFormat = GGL_PIXEL_FORMAT_Z_16;
         break;
+    case 4:
+        pixelFormat = GGL_PIXEL_FORMAT_A_8; 
+        depthFormat = 0;
+        break;
+    case 5:
+        pixelFormat = GGL_PIXEL_FORMAT_A_8; 
+        depthFormat = GGL_PIXEL_FORMAT_Z_16;
+        break;
     default:
         return setError(EGL_BAD_MATCH, EGL_NO_SURFACE);
     }
@@ -896,6 +940,14 @@
         pixelFormat = GGL_PIXEL_FORMAT_RGBA_8888; 
         depthFormat = GGL_PIXEL_FORMAT_Z_16;
         break;
+    case 4:
+        pixelFormat = GGL_PIXEL_FORMAT_A_8; 
+        depthFormat = 0;
+        break;
+    case 5:
+        pixelFormat = GGL_PIXEL_FORMAT_A_8; 
+        depthFormat = GGL_PIXEL_FORMAT_Z_16;
+        break;
     default:
         return setError(EGL_BAD_MATCH, EGL_NO_SURFACE);
     }
@@ -979,7 +1031,7 @@
     EGLBoolean res = EGL_TRUE;
     egl_display_t& d = egl_display_t::get_display(dpy);
     if (android_atomic_dec(&d.initialized) == 1) {
-        // TODO: destroy all resources (surfaces, contextes, etc...)
+        // TODO: destroy all resources (surfaces, contexts, etc...)
         //pthread_mutex_lock(&gInitMutex);
         //pthread_mutex_unlock(&gInitMutex);
     }
@@ -1105,11 +1157,7 @@
 EGLSurface eglCreatePbufferSurface( EGLDisplay dpy, EGLConfig config,
                                     const EGLint *attrib_list)
 {
-    // none of our configs support pbuffers
-    // (in fact it's working but since we can't use them as 
-    // textures yet, it's not useful at all)
-    //createPbufferSurface(dpy, config, attrib_list);
-    return EGL_NO_SURFACE;
+    return createPbufferSurface(dpy, config, attrib_list);
 }
                                     
 EGLBoolean eglDestroySurface(EGLDisplay dpy, EGLSurface eglSurface)
@@ -1231,6 +1279,13 @@
     }
 
     EGLContext current_ctx = EGL_NO_CONTEXT;
+    
+    if ((read == EGL_NO_SURFACE && draw == EGL_NO_SURFACE) && (ctx != EGL_NO_CONTEXT))
+        return setError(EGL_BAD_MATCH, EGL_FALSE);
+
+    if ((read != EGL_NO_SURFACE || draw != EGL_NO_SURFACE) && (ctx == EGL_NO_CONTEXT))
+        return setError(EGL_BAD_MATCH, EGL_FALSE);
+
     if (ctx == EGL_NO_CONTEXT) {
         // if we're detaching, we need the current context
         current_ctx = (EGLContext)getGlThreadSpecific();
@@ -1486,7 +1541,7 @@
 }
 
 // ----------------------------------------------------------------------------
-// Android extentions
+// Android extensions
 // ----------------------------------------------------------------------------
 
 void (*eglGetProcAddress (const char *procname))()
diff --git a/opengl/libagl/light.cpp b/opengl/libagl/light.cpp
index 87725cb..25c41d0 100644
--- a/opengl/libagl/light.cpp
+++ b/opengl/libagl/light.cpp
@@ -117,11 +117,11 @@
 }
 
 static GLfixed fog_linear(ogles_context_t* c, GLfixed z) {
-    return clampF(gglMulx((c->fog.end - z), c->fog.invEndMinusStart));
+    return clampF(gglMulx((c->fog.end - ((z<0)?-z:z)), c->fog.invEndMinusStart));
 }
 
 static GLfixed fog_exp(ogles_context_t* c, GLfixed z) {
-    const float e = fixedToFloat(gglMulx(c->fog.density, z));
+    const float e = fixedToFloat(gglMulx(c->fog.density, ((z<0)?-z:z)));
     return clampF(gglFloatToFixed(fastexpf(-e)));
 }
 
@@ -556,11 +556,11 @@
         ogles_error(c, GL_INVALID_VALUE);
         break;
     case GL_FOG_START:
-        c->fog.start = gglClampx(param);
+        c->fog.start = param;
         c->fog.invEndMinusStart = gglRecip(c->fog.end - c->fog.start);
         break;
     case GL_FOG_END:
-        c->fog.end = gglClampx(param);
+        c->fog.end = param;
         c->fog.invEndMinusStart = gglRecip(c->fog.end - c->fog.start);
         break;
     case GL_FOG_MODE:
diff --git a/opengl/libagl/matrix.cpp b/opengl/libagl/matrix.cpp
index 441da38..f175cda 100644
--- a/opengl/libagl/matrix.cpp
+++ b/opengl/libagl/matrix.cpp
@@ -98,8 +98,9 @@
     c->arrays.perspective = (c->clipPlanes.enable) ?
         ogles_vertex_clipAllPerspective3D : ogles_vertex_perspective3D;
     if (enables & (GGL_ENABLE_DEPTH_TEST|GGL_ENABLE_FOG)) {
-        c->arrays.perspective = (c->clipPlanes.enable) ?
-            ogles_vertex_clipAllPerspective3DZ : ogles_vertex_perspective3DZ;
+        c->arrays.perspective = ogles_vertex_perspective3DZ;
+        if (c->clipPlanes.enable || (enables&GGL_ENABLE_FOG))
+            c->arrays.perspective = ogles_vertex_clipAllPerspective3DZ;
     }
     if ((c->arrays.vertex.size != 4) &&
         (c->transforms.mvp4.flags & transform_t::FLAGS_2D_PROJECTION)) {
diff --git a/opengl/libagl/primitives.cpp b/opengl/libagl/primitives.cpp
index 20e8d37..f164c02 100644
--- a/opengl/libagl/primitives.cpp
+++ b/opengl/libagl/primitives.cpp
@@ -133,7 +133,7 @@
 {
     if (!(v->flags & vertex_t::LIT)) {
         v->flags |= vertex_t::LIT;
-        v->fog = c->fog.fog(c, v->window.z);
+        v->fog = c->fog.fog(c, v->eye.z);
         const GLvoid* cp = c->arrays.color.element(
                 v->index & vertex_cache_t::INDEX_MASK);
         c->arrays.color.fetch(c, v->color.v, cp);
@@ -144,14 +144,14 @@
 {
     if (!(v->flags & vertex_t::LIT)) {
         v->flags |= vertex_t::LIT;
-        v->fog = c->fog.fog(c, v->window.z);
+        v->fog = c->fog.fog(c, v->eye.z);
     }
 }
 static inline
 void lightVertexSmoothFog(ogles_context_t* c, vertex_t* v)
 {
     if (!(v->flags & vertex_t::LIT)) {
-        v->fog = c->fog.fog(c, v->window.z);
+        v->fog = c->fog.fog(c, v->eye.z);
         c->lighting.lightVertex(c, v);
     }
 }
@@ -243,12 +243,20 @@
     m_area = m_dx01*m_dy02 + (-m_dy10)*m_dx20;
 }
 
+void compute_iterators_t::initLine(
+        vertex_t const* v0, vertex_t const* v1)
+{
+    m_dx01 = m_dy02 = v1->window.x - v0->window.x;
+    m_dy10 = m_dx20 = v0->window.y - v1->window.y;
+    m_area = m_dx01*m_dy02 + (-m_dy10)*m_dx20;
+}
+
 void compute_iterators_t::initLerp(vertex_t const* v0, uint32_t enables)
 {
     m_x0 = v0->window.x;
     m_y0 = v0->window.y;
     const GGLcoord area = (m_area + TRI_HALF) >> TRI_FRACTION_BITS;
-    const GGLcoord minArea = 2; // cannot be inversed
+    const GGLcoord minArea = 2; // cannot be inverted
     // triangles with an area smaller than 1.0 are not smooth-shaded
 
     int q=0, s=0, d=0;
@@ -336,6 +344,20 @@
     it[2] = dcdy;
 }
 
+void compute_iterators_t::iterators0032(int64_t* it,
+        int32_t c0, int32_t c1, int32_t c2) const
+{
+    const int s = m_area_scale - 16;
+    int32_t dc01 = (c1 - c0)>>s;
+    int32_t dc02 = (c2 - c0)>>s;
+    // 16.16 x 16.16 == 32.32
+    int64_t dcdx = gglMulii(dc01, m_dy02) + gglMulii(dc02, m_dy10);
+    int64_t dcdy = gglMulii(dc02, m_dx01) + gglMulii(dc01, m_dx20);
+    it[ 0] = (c0<<16) - ((dcdx*m_x0 + dcdy*m_y0)>>4);
+    it[ 1] = dcdx;
+    it[ 2] = dcdy;
+}
+
 #if defined(__arm__) && !defined(__thumb__)
 inline void compute_iterators_t::iterators0032(int32_t* it,
         int32_t c0, int32_t c1, int32_t c2) const
@@ -346,16 +368,11 @@
 void compute_iterators_t::iterators0032(int32_t* it,
         int32_t c0, int32_t c1, int32_t c2) const
 {
-    const int s = m_area_scale - 16;
-    int32_t dc01 = (c1 - c0)>>s;
-    int32_t dc02 = (c2 - c0)>>s;
-    // 16.16 x 16.16 == 32.32
-    int64_t dcdx = gglMulii(dc01, m_dy02) + gglMulii(dc02, m_dy10);
-    int64_t dcdy = gglMulii(dc02, m_dx01) + gglMulii(dc01, m_dx20);
-    int32_t c = (c0<<16) - ((dcdx*m_x0 + dcdy*m_y0)>>4);
-    it[ 0] = c;
-    it[ 1] = dcdx;
-    it[ 2] = dcdy;
+    int64_t it64[3];
+    iterators0032(it, c0, c1, c2);
+    it[0] = it64[0];
+    it[1] = it64[1];
+    it[2] = it64[2];
 }
 #endif
 
@@ -454,7 +471,7 @@
             c->arrays.color.fetch(c, v->color.v, cp);
         }
         if (enables & GGL_ENABLE_FOG) {
-            v->fog = c->fog.fog(c, v->window.z);
+            v->fog = c->fog.fog(c, v->eye.z);
         }
     }
 
@@ -514,22 +531,12 @@
 
 void primitive_line(ogles_context_t* c, vertex_t* v0, vertex_t* v1)
 {
-    // This is a cheezy implementation of line drawing that
-    // uses 2 triangles per line. 
-    // That said, how often line drawing is used?
-
     // get texture coordinates
     fetch_texcoord(c, v0, v1, v1);
 
     // light/shade the vertices first (they're copied below)
     c->lighting.lightTriangle(c, v0, v1, v1);
 
-    vertex_t v[4];
-    v[0] = *v0;
-    v[1] = *v1;
-    v0 = &v[0];
-    v1 = &v[1];
-
     // clip the line if needed
     if (ggl_unlikely((v0->flags | v1->flags) & vertex_t::CLIP_ALL)) {
         unsigned int count = clip_line(c, v0, v1);
@@ -546,8 +553,8 @@
                             GGL_ENABLE_DEPTH_TEST;
 
     if (ggl_unlikely(enables & mask)) {
-        c->lerp.initTriangle(v0, v1, v1);
-        lerp_triangle(c, v0, v1, v1);
+        c->lerp.initLine(v0, v1);
+        lerp_triangle(c, v0, v1, v0);
     }
 
     // render our line
@@ -654,17 +661,26 @@
         const int32_t v0z = clampZ(v0->window.z);
         const int32_t v1z = clampZ(v1->window.z);
         const int32_t v2z = clampZ(v2->window.z);
-        lerp.iterators0032(itz, v0z, v1z, v2z);
         if (ggl_unlikely(c->polygonOffset.enable)) {
+            const int32_t units = (c->polygonOffset.units << 16);
             const GLfixed factor = c->polygonOffset.factor;
-            const GLfixed units = c->polygonOffset.units;
-            int32_t maxDepthSlope = max(abs(itz[1]), abs(itz[2]));
-            int32_t offset = (int64_t(maxDepthSlope)*factor +
-                    (int64_t(units) << 16)) >> 16;
-            itz[0] += offset; // XXX: this can cause overflows
+            if (factor) {
+                int64_t itz64[3];
+                lerp.iterators0032(itz64, v0z, v1z, v2z);
+                int64_t maxDepthSlope = max(itz64[1], itz64[2]);
+                itz[0] = uint32_t(itz64[0]) 
+                        + uint32_t((maxDepthSlope*factor)>>16) + units;
+                itz[1] = uint32_t(itz64[1]);
+                itz[2] = uint32_t(itz64[2]);
+            } else {
+                lerp.iterators0032(itz, v0z, v1z, v2z);
+                itz[0] += units; 
+            }
+        } else {
+            lerp.iterators0032(itz, v0z, v1z, v2z);
         }
         c->rasterizer.procs.zGrad3xv(c, itz);
-    }
+    }    
 
     if (ggl_unlikely(enables & GGL_ENABLE_FOG)) {
         GLfixed itf[3];
@@ -880,11 +896,11 @@
                 vertex_t** output = ovl;
                 unsigned int oc = 0;
                 unsigned int sentinel = 0;
-                // previous vertice, compute distance to the plane
+                // previous vertex, compute distance to the plane
                 vertex_t* s = ivl[ic-1];
                 const vec4_t& equation = c->clipPlanes.plane[plane].equation;
                 GLfixed sd = dot4(equation.v, s->eye.v);
-                // clip each vertice against this plane...
+                // clip each vertex against this plane...
                 for (unsigned int i=0 ; i<ic ; i++) {            
                     vertex_t* p = ivl[i];
                     const GLfixed pd = dot4(equation.v, p->eye.v);
@@ -946,10 +962,10 @@
                 vertex_t** output = ovl;
                 unsigned int oc = 0;
                 unsigned int sentinel = 0;
-                // previous vertice, compute distance to the plane
+                // previous vertex, compute distance to the plane
                 vertex_t* s = ivl[ic-1];
                 GLfixed sd = frustumPlaneDist(plane, s->clip);
-                // clip each vertice against this plane...
+                // clip each vertex against this plane...
                 for (unsigned int i=0 ; i<ic ; i++) {            
                     vertex_t* p = ivl[i];
                     const GLfixed pd = frustumPlaneDist(plane, p->clip);
diff --git a/opengl/libagl/vertex.cpp b/opengl/libagl/vertex.cpp
index 5bcc9dc..dad04d6 100644
--- a/opengl/libagl/vertex.cpp
+++ b/opengl/libagl/vertex.cpp
@@ -99,7 +99,7 @@
     c->arrays.cull &= clip;
 
     if (ggl_likely(!clip)) {
-        // if the vertice is clipped, we don't do the perspective
+        // if the vertex is clipped, we don't do the perspective
         // divide, since we don't need its window coordinates.
         perspective(c, v, enables);
     }
diff --git a/opengl/tests/Android.mk b/opengl/tests/Android.mk
new file mode 100644
index 0000000..5053e7d
--- /dev/null
+++ b/opengl/tests/Android.mk
@@ -0,0 +1 @@
+include $(call all-subdir-makefiles)
diff --git a/opengl/tests/angeles/Android.mk b/opengl/tests/angeles/Android.mk
new file mode 100644
index 0000000..41673cb
--- /dev/null
+++ b/opengl/tests/angeles/Android.mk
@@ -0,0 +1,17 @@
+# Copyright 2006 The Android Open Source Project
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES:= app-linux.c demo.c.arm
+LOCAL_SHARED_LIBRARIES := libGLES_CM libui
+LOCAL_MODULE:= angeles
+LOCAL_MODULE_TAGS := tests
+include $(BUILD_EXECUTABLE)
+
+
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES:= gpustate.c
+LOCAL_SHARED_LIBRARIES := libGLES_CM
+LOCAL_MODULE:= gpustate
+LOCAL_MODULE_TAGS := tests
+include $(BUILD_EXECUTABLE)
diff --git a/opengl/tests/angeles/MODULE_LICENSE_BSD_OR_LGPL b/opengl/tests/angeles/MODULE_LICENSE_BSD_OR_LGPL
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/opengl/tests/angeles/MODULE_LICENSE_BSD_OR_LGPL
diff --git a/opengl/tests/angeles/README.txt b/opengl/tests/angeles/README.txt
new file mode 100644
index 0000000..38b8a4a
--- /dev/null
+++ b/opengl/tests/angeles/README.txt
@@ -0,0 +1,77 @@
+------------------------------------------------------------------------

+San Angeles Observation OpenGL ES version example

+Copyright 2004-2005 Jetro Lauha

+Web: http://iki.fi/jetro/

+See file license.txt for licensing information.

+------------------------------------------------------------------------

+

+This is an OpenGL ES port of the small self-running demonstration

+called "San Angeles Observation", which was first presented in the

+Assembly'2004 event. It won the first place in the 4 KB intro

+competition category.

+

+The demonstration features a sightseeing of a futuristic city

+having many different kind of buildings and items. Everything is

+flat shaded with three different lights.

+

+The original version was made for desktop with OpenGL. It was

+naturally heavily size optimized in order to fit it in the size

+limit. For this OpenGL ES version example much of the code is

+cleaned up and the sound is removed. Also detail level is lowered,

+although it still contains over 60000 faces.

+

+The Win32 (2000/XP) binary package of original version is

+available from this address: http://jet.ro/files/angeles.zip

+

+First version of this OpenGL ES port was submitted to the Khronos

+OpenGL ES Coding Challenge held in 2004-2005.

+

+As a code example, this source shows the following:

+  * How to create a minimal and portable ad hoc framework

+    for small testing/demonstration programs. This framework

+    compiles for both desktop and PocketPC Win32 environment,

+    and a separate source is included for Linux with X11.

+  * How to dynamically find and use the OpenGL ES DLL or

+    shared object, so that the library is not needed at

+    the compile/link stage.

+  * How to use the basic features of OpenGL ES 1.0/1.1

+    Common Lite, such as vertex arrays, color arrays and

+    lighting.

+  * How to create a self contained small demonstration

+    application with objects generated using procedural

+    algorithms.

+

+As the original version was optimized for size instead of

+performance, that holds true for this OpenGL ES version as

+well. Thus the performance could be significantly increased,

+for example by changing the code to use glDrawElements

+instead of glDrawArrays. The code uses only OpenGL ES 1.0

+Common Lite -level function calls without any extensions.

+

+The reference OpenGL ES implementations used for this application:

+  * Hybrid's OpenGL ES API Implementation (Gerbera) version 2.0.4

+    Prebuilt Win32 PC executable: SanOGLES-Gerbera.exe

+  * PowerVR MBX SDK, OpenGL ES Windows PC Emulation version 1.04.14.0170

+    Prebuilt Win32 PC executable: SanOGLES-PVRSDK.exe

+

+Note that DISABLE_IMPORTGL preprocessor macro can be used

+to specify not to use dynamic runtime binding of the library.

+You also need to define preprocessor macro PVRSDK to compile

+the source with PowerVR OpenGL ES SDK.

+

+The demo application is briefly tested with a few other OpenGL ES

+implementations as well (e.g. Vincent, GLESonGL on Linux, Dell

+Axim X50v). Most of these other implementations rendered the demo

+erroneously in some aspect. This may indicate that the demo source

+could still have some work to do with compatibility and correct

+API usage, although the non-conforming implementations are most

+probably unfinished as well.

+

+Thanks and Acknowledgements:

+

+* Toni Lönnberg (!Cube) created the music for original version, which

+  is not featured in this OpenGL ES port.

+* Sara Kapli (st Rana) for additional camera work.

+* Paul Bourke for information about the supershapes.

+

+------------------------------------------------------------------------

diff --git a/opengl/tests/angeles/app-linux.c b/opengl/tests/angeles/app-linux.c
new file mode 100644
index 0000000..d439eb2
--- /dev/null
+++ b/opengl/tests/angeles/app-linux.c
@@ -0,0 +1,222 @@
+/* San Angeles Observation OpenGL ES version example
+ * Copyright 2004-2005 Jetro Lauha
+ * All rights reserved.
+ * Web: http://iki.fi/jetro/
+ *
+ * This source is free software; you can redistribute it and/or
+ * modify it under the terms of EITHER:
+ *   (1) The GNU Lesser General Public License as published by the Free
+ *       Software Foundation; either version 2.1 of the License, or (at
+ *       your option) any later version. The text of the GNU Lesser
+ *       General Public License is included with this source in the
+ *       file LICENSE-LGPL.txt.
+ *   (2) The BSD-style license that is included with this source in
+ *       the file LICENSE-BSD.txt.
+ *
+ * This source 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 files
+ * LICENSE-LGPL.txt and LICENSE-BSD.txt for more details.
+ *
+ * $Id: app-linux.c,v 1.4 2005/02/08 18:42:48 tonic Exp $
+ * $Revision: 1.4 $
+ *
+ * Parts of this source file is based on test/example code from
+ * GLESonGL implementation by David Blythe. Here is copy of the
+ * license notice from that source:
+ *
+ * Copyright (C) 2003  David Blythe   All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * DAVID BLYTHE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/time.h>
+
+#include <GLES/egl.h>
+
+#include "app.h"
+
+
+int gAppAlive = 1;
+
+static const char sAppName[] =
+    "San Angeles Observation OpenGL ES version example (Linux)";
+
+static int sWindowWidth = WINDOW_DEFAULT_WIDTH;
+static int sWindowHeight = WINDOW_DEFAULT_HEIGHT;
+static EGLDisplay sEglDisplay = EGL_NO_DISPLAY;
+static EGLContext sEglContext = EGL_NO_CONTEXT;
+static EGLSurface sEglSurface = EGL_NO_SURFACE;
+
+const char *egl_strerror(unsigned err)
+{
+    switch(err){
+    case EGL_SUCCESS: return "SUCCESS";
+    case EGL_NOT_INITIALIZED: return "NOT INITIALIZED";
+    case EGL_BAD_ACCESS: return "BAD ACCESS";
+    case EGL_BAD_ALLOC: return "BAD ALLOC";
+    case EGL_BAD_ATTRIBUTE: return "BAD_ATTRIBUTE";
+    case EGL_BAD_CONFIG: return "BAD CONFIG";
+    case EGL_BAD_CONTEXT: return "BAD CONTEXT";
+    case EGL_BAD_CURRENT_SURFACE: return "BAD CURRENT SURFACE";
+    case EGL_BAD_DISPLAY: return "BAD DISPLAY";
+    case EGL_BAD_MATCH: return "BAD MATCH";
+    case EGL_BAD_NATIVE_PIXMAP: return "BAD NATIVE PIXMAP";
+    case EGL_BAD_NATIVE_WINDOW: return "BAD NATIVE WINDOW";
+    case EGL_BAD_PARAMETER: return "BAD PARAMETER";
+    case EGL_BAD_SURFACE: return "BAD_SURFACE";
+//    case EGL_CONTEXT_LOST: return "CONTEXT LOST";
+    default: return "UNKNOWN";
+    }
+}
+
+void egl_error(const char *name)
+{
+    unsigned err = eglGetError();
+    if(err != EGL_SUCCESS) {
+        fprintf(stderr,"%s(): egl error 0x%x (%s)\n", 
+                name, err, egl_strerror(err));
+    }
+}
+
+static void checkGLErrors()
+{
+    GLenum error = glGetError();
+    if (error != GL_NO_ERROR)
+        fprintf(stderr, "GL Error: 0x%04x\n", (int)error);
+}
+
+
+static void checkEGLErrors()
+{
+    EGLint error = eglGetError();
+    // GLESonGL seems to be returning 0 when there is no errors?
+    if (error && error != EGL_SUCCESS)
+        fprintf(stderr, "EGL Error: 0x%04x\n", (int)error);
+}
+
+static int initGraphics()
+{
+    EGLint s_configAttribs[] = {
+         EGL_RED_SIZE,       5,
+         EGL_GREEN_SIZE,     6,
+         EGL_BLUE_SIZE,      5,
+ #if 1
+         EGL_DEPTH_SIZE,     16,
+         EGL_STENCIL_SIZE,   0,
+ #else
+         EGL_ALPHA_SIZE,     EGL_DONT_CARE,
+         EGL_DEPTH_SIZE,     EGL_DONT_CARE,
+         EGL_STENCIL_SIZE,   EGL_DONT_CARE,
+         EGL_SURFACE_TYPE,   EGL_DONT_CARE,
+ #endif
+         EGL_NONE
+     };
+     
+     EGLint numConfigs = -1;
+     EGLint majorVersion;
+     EGLint minorVersion;
+     EGLConfig config;
+     EGLContext context;
+     EGLSurface surface;
+     
+     EGLDisplay dpy;
+
+     dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+     egl_error("eglGetDisplay");
+     fprintf(stderr,"dpy = 0x%08x\n", (unsigned) dpy);
+     
+     eglInitialize(dpy, &majorVersion, &minorVersion);
+     egl_error("eglInitialize");
+
+     eglGetConfigs(dpy, NULL, 0, &numConfigs);
+     egl_error("eglGetConfigs");
+     fprintf(stderr,"num configs %d\n", numConfigs);
+     
+     eglChooseConfig(dpy, s_configAttribs, &config, 1, &numConfigs);
+     egl_error("eglChooseConfig");
+
+     surface = eglCreateWindowSurface(dpy, config,
+             android_createDisplaySurface(), NULL);
+     egl_error("eglMapWindowSurface");
+
+     fprintf(stderr,"surface = %p\n", surface);
+
+     context = eglCreateContext(dpy, config, NULL, NULL);
+     egl_error("eglCreateContext");
+     fprintf(stderr,"context = %p\n", context);
+     
+     eglMakeCurrent(dpy, surface, surface, context);   
+     egl_error("eglMakeCurrent");
+
+     eglQuerySurface(dpy, surface, EGL_WIDTH, &sWindowWidth);
+     eglQuerySurface(dpy, surface, EGL_HEIGHT, &sWindowHeight);
+
+    sEglDisplay = dpy;
+    sEglSurface = surface;
+    sEglContext = context;
+
+    return EGL_TRUE;
+}
+
+
+static void deinitGraphics()
+{
+    eglMakeCurrent(sEglDisplay, NULL, NULL, NULL);
+    eglDestroyContext(sEglDisplay, sEglContext);
+    eglDestroySurface(sEglDisplay, sEglSurface);
+    eglTerminate(sEglDisplay);
+}
+
+
+int main(int argc, char *argv[])
+{
+    // not referenced:
+    argc = argc;
+    argv = argv;
+
+    if (!initGraphics())
+    {
+        fprintf(stderr, "Graphics initialization failed.\n");
+        return EXIT_FAILURE;
+    }
+
+    appInit();
+    
+    while (gAppAlive)
+    {
+        struct timeval timeNow;
+
+        if (gAppAlive)
+        {
+            gettimeofday(&timeNow, NULL);
+            appRender(timeNow.tv_sec * 1000 + timeNow.tv_usec / 1000,
+                      sWindowWidth, sWindowHeight);
+            checkGLErrors();
+            eglSwapBuffers(sEglDisplay, sEglSurface);
+            checkEGLErrors();
+        }
+    }
+
+    appDeinit();
+    deinitGraphics();
+
+    return EXIT_SUCCESS;
+}
diff --git a/opengl/tests/angeles/app.h b/opengl/tests/angeles/app.h
new file mode 100644
index 0000000..70ebd35
--- /dev/null
+++ b/opengl/tests/angeles/app.h
@@ -0,0 +1,56 @@
+/* San Angeles Observation OpenGL ES version example
+ * Copyright 2004-2005 Jetro Lauha
+ * All rights reserved.
+ * Web: http://iki.fi/jetro/
+ *
+ * This source is free software; you can redistribute it and/or
+ * modify it under the terms of EITHER:
+ *   (1) The GNU Lesser General Public License as published by the Free
+ *       Software Foundation; either version 2.1 of the License, or (at
+ *       your option) any later version. The text of the GNU Lesser
+ *       General Public License is included with this source in the
+ *       file LICENSE-LGPL.txt.
+ *   (2) The BSD-style license that is included with this source in
+ *       the file LICENSE-BSD.txt.
+ *
+ * This source 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 files
+ * LICENSE-LGPL.txt and LICENSE-BSD.txt for more details.
+ *
+ * $Id: app.h,v 1.14 2005/02/06 21:13:54 tonic Exp $
+ * $Revision: 1.14 $
+ */
+
+#ifndef APP_H_INCLUDED
+#define APP_H_INCLUDED
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define WINDOW_DEFAULT_WIDTH    640
+#define WINDOW_DEFAULT_HEIGHT   480
+
+#define WINDOW_BPP              16
+
+
+// The simple framework expects the application code to define these functions.
+extern void appInit();
+extern void appDeinit();
+extern void appRender(long tick, int width, int height);
+
+/* Value is non-zero when application is alive, and 0 when it is closing.
+ * Defined by the application framework.
+ */
+extern int gAppAlive;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif // !APP_H_INCLUDED
diff --git a/opengl/tests/angeles/cams.h b/opengl/tests/angeles/cams.h
new file mode 100644
index 0000000..2b1acb3
--- /dev/null
+++ b/opengl/tests/angeles/cams.h
@@ -0,0 +1,65 @@
+/* San Angeles Observation OpenGL ES version example
+ * Copyright 2004-2005 Jetro Lauha
+ * All rights reserved.
+ * Web: http://iki.fi/jetro/
+ *
+ * This source is free software; you can redistribute it and/or
+ * modify it under the terms of EITHER:
+ *   (1) The GNU Lesser General Public License as published by the Free
+ *       Software Foundation; either version 2.1 of the License, or (at
+ *       your option) any later version. The text of the GNU Lesser
+ *       General Public License is included with this source in the
+ *       file LICENSE-LGPL.txt.
+ *   (2) The BSD-style license that is included with this source in
+ *       the file LICENSE-BSD.txt.
+ *
+ * This source 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 files
+ * LICENSE-LGPL.txt and LICENSE-BSD.txt for more details.
+ *
+ * $Id: cams.h,v 1.7 2005/01/31 22:15:15 tonic Exp $
+ * $Revision: 1.7 $
+ */
+
+#ifndef CAMS_H_INCLUDED
+#define CAMS_H_INCLUDED
+
+
+/* Length in milliseconds of one camera track base unit.
+ * The value originates from the music synchronization.
+ */
+#define CAMTRACK_LEN    5442
+
+
+// Camera track definition for one camera trucking shot.
+typedef struct
+{
+    /* Five parameters of src[5] and dest[5]:
+     * eyeX, eyeY, eyeZ, viewAngle, viewHeightOffs
+     */
+    short src[5], dest[5];
+    unsigned char dist;     // if >0, cam rotates around eye xy on dist * 0.1
+    unsigned char len;      // length multiplier
+} CAMTRACK;
+
+static CAMTRACK sCamTracks[] =
+{
+    { { 4500, 2700, 100, 70, -30 }, { 50, 50, -90, -100, 0 }, 20, 1 },
+    { { -1448, 4294, 25, 363, 0 }, { -136, 202, 125, -98, 100 }, 0, 1 },
+    { { 1437, 4930, 200, -275, -20 }, { 1684, 0, 0, 9, 0 }, 0, 1 },
+    { { 1800, 3609, 200, 0, 675 }, { 0, 0, 0, 300, 0 }, 0, 1 },
+    { { 923, 996, 50, 2336, -80 }, { 0, -20, -50, 0, 170 }, 0, 1 },
+    { { -1663, -43, 600, 2170, 0 }, { 20, 0, -600, 0, 100 }, 0, 1 },
+    { { 1049, -1420, 175, 2111, -17 }, { 0, 0, 0, -334, 0 }, 0, 2 },
+    { { 0, 0, 50, 300, 25 }, { 0, 0, 0, 300, 0 }, 70, 2 },
+    { { -473, -953, 3500, -353, -350 }, { 0, 0, -2800, 0, 0 }, 0, 2 },
+    { { 191, 1938, 35, 1139, -17 }, { 1205, -2909, 0, 0, 0 }, 0, 2 },
+    { { -1449, -2700, 150, 0, 0 }, { 0, 2000, 0, 0, 0 }, 0, 2 },
+    { { 5273, 4992, 650, 373, -50 }, { -4598, -3072, 0, 0, 0 }, 0, 2 },
+    { { 3223, -3282, 1075, -393, -25 }, { 1649, -1649, 0, 0, 0 }, 0, 2 }
+};
+#define CAMTRACK_COUNT (sizeof(camTracks) / sizeof(camTracks[0]))
+
+
+#endif // !CAMS_H_INCLUDED
diff --git a/opengl/tests/angeles/demo.c b/opengl/tests/angeles/demo.c
new file mode 100644
index 0000000..802f398
--- /dev/null
+++ b/opengl/tests/angeles/demo.c
@@ -0,0 +1,792 @@
+/* San Angeles Observation OpenGL ES version example
+ * Copyright 2004-2005 Jetro Lauha
+ * All rights reserved.
+ * Web: http://iki.fi/jetro/
+ *
+ * This source is free software; you can redistribute it and/or
+ * modify it under the terms of EITHER:
+ *   (1) The GNU Lesser General Public License as published by the Free
+ *       Software Foundation; either version 2.1 of the License, or (at
+ *       your option) any later version. The text of the GNU Lesser
+ *       General Public License is included with this source in the
+ *       file LICENSE-LGPL.txt.
+ *   (2) The BSD-style license that is included with this source in
+ *       the file LICENSE-BSD.txt.
+ *
+ * This source 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 files
+ * LICENSE-LGPL.txt and LICENSE-BSD.txt for more details.
+ *
+ * $Id: demo.c,v 1.10 2005/02/08 20:54:39 tonic Exp $
+ * $Revision: 1.10 $
+ */
+
+#include <stdlib.h>
+#include <math.h>
+#include <float.h>
+#include <assert.h>
+
+#include <GLES/gl.h>
+
+#include "app.h"
+#include "shapes.h"
+#include "cams.h"
+
+
+// Total run length is 20 * camera track base unit length (see cams.h).
+#define RUN_LENGTH  (20 * CAMTRACK_LEN)
+#undef PI
+#define PI 3.1415926535897932f
+#define RANDOM_UINT_MAX 65535
+
+
+static unsigned long sRandomSeed = 0;
+
+static void seedRandom(unsigned long seed)
+{
+    sRandomSeed = seed;
+}
+
+static unsigned long randomUInt()
+{
+    sRandomSeed = sRandomSeed * 0x343fd + 0x269ec3;
+    return sRandomSeed >> 16;
+}
+
+
+// Capped conversion from float to fixed.
+static long floatToFixed(float value)
+{
+    if (value < -32768) value = -32768;
+    if (value > 32767) value = 32767;
+    return (long)(value * 65536);
+}
+
+#define FIXED(value) floatToFixed(value)
+
+
+// Definition of one GL object in this demo.
+typedef struct {
+    /* Vertex array and color array are enabled for all objects, so their
+     * pointers must always be valid and non-NULL. Normal array is not
+     * used by the ground plane, so when its pointer is NULL then normal
+     * array usage is disabled.
+     *
+     * Vertex array is supposed to use GL_FIXED datatype and stride 0
+     * (i.e. tightly packed array). Color array is supposed to have 4
+     * components per color with GL_UNSIGNED_BYTE datatype and stride 0.
+     * Normal array is supposed to use GL_FIXED datatype and stride 0.
+     */
+    GLfixed *vertexArray;
+    GLubyte *colorArray;
+    GLfixed *normalArray;
+    GLint vertexComponents;
+    GLsizei count;
+} GLOBJECT;
+
+
+static long sStartTick = 0;
+static long sTick = 0;
+
+static int sCurrentCamTrack = 0;
+static long sCurrentCamTrackStartTick = 0;
+static long sNextCamTrackStartTick = 0x7fffffff;
+
+static GLOBJECT *sSuperShapeObjects[SUPERSHAPE_COUNT] = { NULL };
+static GLOBJECT *sGroundPlane = NULL;
+
+
+typedef struct {
+    float x, y, z;
+} VECTOR3;
+
+
+static void freeGLObject(GLOBJECT *object)
+{
+    if (object == NULL)
+        return;
+    free(object->normalArray);
+    free(object->colorArray);
+    free(object->vertexArray);
+    free(object);
+}
+
+
+static GLOBJECT * newGLObject(long vertices, int vertexComponents,
+                              int useNormalArray)
+{
+    GLOBJECT *result;
+    result = (GLOBJECT *)malloc(sizeof(GLOBJECT));
+    if (result == NULL)
+        return NULL;
+    result->count = vertices;
+    result->vertexComponents = vertexComponents;
+    result->vertexArray = (GLfixed *)malloc(vertices * vertexComponents *
+                                            sizeof(GLfixed));
+    result->colorArray = (GLubyte *)malloc(vertices * 4 * sizeof(GLubyte));
+    if (useNormalArray)
+    {
+        result->normalArray = (GLfixed *)malloc(vertices * 3 *
+                                                sizeof(GLfixed));
+    }
+    else
+        result->normalArray = NULL;
+    if (result->vertexArray == NULL ||
+        result->colorArray == NULL ||
+        (useNormalArray && result->normalArray == NULL))
+    {
+        freeGLObject(result);
+        return NULL;
+    }
+    return result;
+}
+
+
+static void drawGLObject(GLOBJECT *object)
+{
+    assert(object != NULL);
+
+    glVertexPointer(object->vertexComponents, GL_FIXED,
+                    0, object->vertexArray);
+    glColorPointer(4, GL_UNSIGNED_BYTE, 0, object->colorArray);
+
+    // Already done in initialization:
+    //glEnableClientState(GL_VERTEX_ARRAY);
+    //glEnableClientState(GL_COLOR_ARRAY);
+
+    if (object->normalArray)
+    {
+        glNormalPointer(GL_FIXED, 0, object->normalArray);
+        glEnableClientState(GL_NORMAL_ARRAY);
+    }
+    else
+        glDisableClientState(GL_NORMAL_ARRAY);
+    glDrawArrays(GL_TRIANGLES, 0, object->count);
+}
+
+
+static void vector3Sub(VECTOR3 *dest, VECTOR3 *v1, VECTOR3 *v2)
+{
+    dest->x = v1->x - v2->x;
+    dest->y = v1->y - v2->y;
+    dest->z = v1->z - v2->z;
+}
+
+
+static void superShapeMap(VECTOR3 *point, float r1, float r2, float t, float p)
+{
+    // sphere-mapping of supershape parameters
+    point->x = (float)(cos(t) * cos(p) / r1 / r2);
+    point->y = (float)(sin(t) * cos(p) / r1 / r2);
+    point->z = (float)(sin(p) / r2);
+}
+
+
+static float ssFunc(const float t, const float *p)
+{
+    return (float)(pow(pow(fabs(cos(p[0] * t / 4)) / p[1], p[4]) +
+                       pow(fabs(sin(p[0] * t / 4)) / p[2], p[5]), 1 / p[3]));
+}
+
+
+// Creates and returns a supershape object.
+// Based on Paul Bourke's POV-Ray implementation.
+// http://astronomy.swin.edu.au/~pbourke/povray/supershape/
+static GLOBJECT * createSuperShape(const float *params)
+{
+    const int resol1 = (int)params[SUPERSHAPE_PARAMS - 3];
+    const int resol2 = (int)params[SUPERSHAPE_PARAMS - 2];
+    // latitude 0 to pi/2 for no mirrored bottom
+    // (latitudeBegin==0 for -pi/2 to pi/2 originally)
+    const int latitudeBegin = resol2 / 4;
+    const int latitudeEnd = resol2 / 2;    // non-inclusive
+    const int longitudeCount = resol1;
+    const int latitudeCount = latitudeEnd - latitudeBegin;
+    const long triangleCount = longitudeCount * latitudeCount * 2;
+    const long vertices = triangleCount * 3;
+    GLOBJECT *result;
+    float baseColor[3];
+    int a, longitude, latitude;
+    long currentVertex, currentQuad;
+
+    result = newGLObject(vertices, 3, 1);
+    if (result == NULL)
+        return NULL;
+
+    for (a = 0; a < 3; ++a)
+        baseColor[a] = ((randomUInt() % 155) + 100) / 255.f;
+
+    currentQuad = 0;
+    currentVertex = 0;
+
+    // longitude -pi to pi
+    for (longitude = 0; longitude < longitudeCount; ++longitude)
+    {
+
+        // latitude 0 to pi/2
+        for (latitude = latitudeBegin; latitude < latitudeEnd; ++latitude)
+        {
+            float t1 = -PI + longitude * 2 * PI / resol1;
+            float t2 = -PI + (longitude + 1) * 2 * PI / resol1;
+            float p1 = -PI / 2 + latitude * 2 * PI / resol2;
+            float p2 = -PI / 2 + (latitude + 1) * 2 * PI / resol2;
+            float r0, r1, r2, r3;
+
+            r0 = ssFunc(t1, params);
+            r1 = ssFunc(p1, &params[6]);
+            r2 = ssFunc(t2, params);
+            r3 = ssFunc(p2, &params[6]);
+
+            if (r0 != 0 && r1 != 0 && r2 != 0 && r3 != 0)
+            {
+                VECTOR3 pa, pb, pc, pd;
+                VECTOR3 v1, v2, n;
+                float ca;
+                int i;
+                //float lenSq, invLenSq;
+
+                superShapeMap(&pa, r0, r1, t1, p1);
+                superShapeMap(&pb, r2, r1, t2, p1);
+                superShapeMap(&pc, r2, r3, t2, p2);
+                superShapeMap(&pd, r0, r3, t1, p2);
+
+                // kludge to set lower edge of the object to fixed level
+                if (latitude == latitudeBegin + 1)
+                    pa.z = pb.z = 0;
+
+                vector3Sub(&v1, &pb, &pa);
+                vector3Sub(&v2, &pd, &pa);
+
+                // Calculate normal with cross product.
+                /*   i    j    k      i    j
+                 * v1.x v1.y v1.z | v1.x v1.y
+                 * v2.x v2.y v2.z | v2.x v2.y
+                 */
+
+                n.x = v1.y * v2.z - v1.z * v2.y;
+                n.y = v1.z * v2.x - v1.x * v2.z;
+                n.z = v1.x * v2.y - v1.y * v2.x;
+
+                /* Pre-normalization of the normals is disabled here because
+                 * they will be normalized anyway later due to automatic
+                 * normalization (GL_NORMALIZE). It is enabled because the
+                 * objects are scaled with glScale.
+                 */
+                /*
+                lenSq = n.x * n.x + n.y * n.y + n.z * n.z;
+                invLenSq = (float)(1 / sqrt(lenSq));
+                n.x *= invLenSq;
+                n.y *= invLenSq;
+                n.z *= invLenSq;
+                */
+
+                ca = pa.z + 0.5f;
+
+                for (i = currentVertex * 3;
+                     i < (currentVertex + 6) * 3;
+                     i += 3)
+                {
+                    result->normalArray[i] = FIXED(n.x);
+                    result->normalArray[i + 1] = FIXED(n.y);
+                    result->normalArray[i + 2] = FIXED(n.z);
+                }
+                for (i = currentVertex * 4;
+                     i < (currentVertex + 6) * 4;
+                     i += 4)
+                {
+                    int a, color[3];
+                    for (a = 0; a < 3; ++a)
+                    {
+                        color[a] = (int)(ca * baseColor[a] * 255);
+                        if (color[a] > 255) color[a] = 255;
+                    }
+                    result->colorArray[i] = (GLubyte)color[0];
+                    result->colorArray[i + 1] = (GLubyte)color[1];
+                    result->colorArray[i + 2] = (GLubyte)color[2];
+                    result->colorArray[i + 3] = 0;
+                }
+                result->vertexArray[currentVertex * 3] = FIXED(pa.x);
+                result->vertexArray[currentVertex * 3 + 1] = FIXED(pa.y);
+                result->vertexArray[currentVertex * 3 + 2] = FIXED(pa.z);
+                ++currentVertex;
+                result->vertexArray[currentVertex * 3] = FIXED(pb.x);
+                result->vertexArray[currentVertex * 3 + 1] = FIXED(pb.y);
+                result->vertexArray[currentVertex * 3 + 2] = FIXED(pb.z);
+                ++currentVertex;
+                result->vertexArray[currentVertex * 3] = FIXED(pd.x);
+                result->vertexArray[currentVertex * 3 + 1] = FIXED(pd.y);
+                result->vertexArray[currentVertex * 3 + 2] = FIXED(pd.z);
+                ++currentVertex;
+                result->vertexArray[currentVertex * 3] = FIXED(pb.x);
+                result->vertexArray[currentVertex * 3 + 1] = FIXED(pb.y);
+                result->vertexArray[currentVertex * 3 + 2] = FIXED(pb.z);
+                ++currentVertex;
+                result->vertexArray[currentVertex * 3] = FIXED(pc.x);
+                result->vertexArray[currentVertex * 3 + 1] = FIXED(pc.y);
+                result->vertexArray[currentVertex * 3 + 2] = FIXED(pc.z);
+                ++currentVertex;
+                result->vertexArray[currentVertex * 3] = FIXED(pd.x);
+                result->vertexArray[currentVertex * 3 + 1] = FIXED(pd.y);
+                result->vertexArray[currentVertex * 3 + 2] = FIXED(pd.z);
+                ++currentVertex;
+            } // r0 && r1 && r2 && r3
+            ++currentQuad;
+        } // latitude
+    } // longitude
+
+    // Set number of vertices in object to the actual amount created.
+    result->count = currentVertex;
+
+    return result;
+}
+
+
+static GLOBJECT * createGroundPlane()
+{
+    const int scale = 4;
+    const int yBegin = -15, yEnd = 15;    // ends are non-inclusive
+    const int xBegin = -15, xEnd = 15;
+    const long triangleCount = (yEnd - yBegin) * (xEnd - xBegin) * 2;
+    const long vertices = triangleCount * 3;
+    GLOBJECT *result;
+    int x, y;
+    long currentVertex, currentQuad;
+
+    result = newGLObject(vertices, 2, 0);
+    if (result == NULL)
+        return NULL;
+
+    currentQuad = 0;
+    currentVertex = 0;
+
+    for (y = yBegin; y < yEnd; ++y)
+    {
+        for (x = xBegin; x < xEnd; ++x)
+        {
+            GLubyte color;
+            int i, a;
+            color = (GLubyte)((randomUInt() & 0x5f) + 81);  // 101 1111
+            for (i = currentVertex * 4; i < (currentVertex + 6) * 4; i += 4)
+            {
+                result->colorArray[i] = color;
+                result->colorArray[i + 1] = color;
+                result->colorArray[i + 2] = color;
+                result->colorArray[i + 3] = 0;
+            }
+
+            // Axis bits for quad triangles:
+            // x: 011100 (0x1c), y: 110001 (0x31)  (clockwise)
+            // x: 001110 (0x0e), y: 100011 (0x23)  (counter-clockwise)
+            for (a = 0; a < 6; ++a)
+            {
+                const int xm = x + ((0x1c >> a) & 1);
+                const int ym = y + ((0x31 >> a) & 1);
+                const float m = (float)(cos(xm * 2) * sin(ym * 4) * 0.75f);
+                result->vertexArray[currentVertex * 2] =
+                    FIXED(xm * scale + m);
+                result->vertexArray[currentVertex * 2 + 1] =
+                    FIXED(ym * scale + m);
+                ++currentVertex;
+            }
+            ++currentQuad;
+        }
+    }
+    return result;
+}
+
+
+static void drawGroundPlane()
+{
+    glDisable(GL_CULL_FACE);
+    glDisable(GL_DEPTH_TEST);
+    glEnable(GL_BLEND);
+    glBlendFunc(GL_ZERO, GL_SRC_COLOR);
+    glDisable(GL_LIGHTING);
+
+    drawGLObject(sGroundPlane);
+
+    glEnable(GL_LIGHTING);
+    glDisable(GL_BLEND);
+    glEnable(GL_DEPTH_TEST);
+}
+
+
+static void drawFadeQuad()
+{
+    static const GLfixed quadVertices[] = {
+        -0x10000, -0x10000,
+         0x10000, -0x10000,
+        -0x10000,  0x10000,
+         0x10000, -0x10000,
+         0x10000,  0x10000,
+        -0x10000,  0x10000
+    };
+
+    const int beginFade = sTick - sCurrentCamTrackStartTick;
+    const int endFade = sNextCamTrackStartTick - sTick;
+    const int minFade = beginFade < endFade ? beginFade : endFade;
+
+    if (minFade < 1024)
+    {
+        const GLfixed fadeColor = minFade << 6;
+        glColor4x(fadeColor, fadeColor, fadeColor, 0);
+
+        glDisable(GL_DEPTH_TEST);
+        glEnable(GL_BLEND);
+        glBlendFunc(GL_ZERO, GL_SRC_COLOR);
+        glDisable(GL_LIGHTING);
+
+        glMatrixMode(GL_MODELVIEW);
+        glLoadIdentity();
+
+        glMatrixMode(GL_PROJECTION);
+        glLoadIdentity();
+
+        glDisableClientState(GL_COLOR_ARRAY);
+        glDisableClientState(GL_NORMAL_ARRAY);
+        glVertexPointer(2, GL_FIXED, 0, quadVertices);
+        glDrawArrays(GL_TRIANGLES, 0, 6);
+
+        glEnableClientState(GL_COLOR_ARRAY);
+
+        glMatrixMode(GL_MODELVIEW);
+
+        glEnable(GL_LIGHTING);
+        glDisable(GL_BLEND);
+        glEnable(GL_DEPTH_TEST);
+    }
+}
+
+
+// Called from the app framework.
+void appInit()
+{
+    int a;
+
+    glEnable(GL_NORMALIZE);
+    glEnable(GL_DEPTH_TEST);
+    glDisable(GL_CULL_FACE);
+    glShadeModel(GL_FLAT);
+
+    glEnable(GL_LIGHTING);
+    glEnable(GL_LIGHT0);
+    glEnable(GL_LIGHT1);
+    glEnable(GL_LIGHT2);
+
+    glEnableClientState(GL_VERTEX_ARRAY);
+    glEnableClientState(GL_COLOR_ARRAY);
+
+    seedRandom(15);
+
+    for (a = 0; a < SUPERSHAPE_COUNT; ++a)
+    {
+        sSuperShapeObjects[a] = createSuperShape(sSuperShapeParams[a]);
+        assert(sSuperShapeObjects[a] != NULL);
+    }
+    sGroundPlane = createGroundPlane();
+    assert(sGroundPlane != NULL);
+}
+
+
+// Called from the app framework.
+void appDeinit()
+{
+    int a;
+    for (a = 0; a < SUPERSHAPE_COUNT; ++a)
+        freeGLObject(sSuperShapeObjects[a]);
+    freeGLObject(sGroundPlane);
+}
+
+
+static void gluPerspective(GLfloat fovy, GLfloat aspect,
+                           GLfloat zNear, GLfloat zFar)
+{
+    GLfloat xmin, xmax, ymin, ymax;
+
+    ymax = zNear * (GLfloat)tan(fovy * PI / 360);
+    ymin = -ymax;
+    xmin = ymin * aspect;
+    xmax = ymax * aspect;
+
+    glFrustumx((GLfixed)(xmin * 65536), (GLfixed)(xmax * 65536),
+               (GLfixed)(ymin * 65536), (GLfixed)(ymax * 65536),
+               (GLfixed)(zNear * 65536), (GLfixed)(zFar * 65536));
+}
+
+
+static void prepareFrame(int width, int height)
+{
+    glViewport(0, 0, width, height);
+
+    glClearColorx((GLfixed)(0.1f * 65536),
+                  (GLfixed)(0.2f * 65536),
+                  (GLfixed)(0.3f * 65536), 0x10000);
+    glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
+
+    glMatrixMode(GL_PROJECTION);
+    glLoadIdentity();
+    gluPerspective(45, (float)width / height, 0.5f, 150);
+
+    glMatrixMode(GL_MODELVIEW);
+
+    glLoadIdentity();
+}
+
+
+static void configureLightAndMaterial()
+{
+    static GLfixed light0Position[] = { -0x40000, 0x10000, 0x10000, 0 };
+    static GLfixed light0Diffuse[] = { 0x10000, 0x6666, 0, 0x10000 };
+    static GLfixed light1Position[] = { 0x10000, -0x20000, -0x10000, 0 };
+    static GLfixed light1Diffuse[] = { 0x11eb, 0x23d7, 0x5999, 0x10000 };
+    static GLfixed light2Position[] = { -0x10000, 0, -0x40000, 0 };
+    static GLfixed light2Diffuse[] = { 0x11eb, 0x2b85, 0x23d7, 0x10000 };
+    static GLfixed materialSpecular[] = { 0x10000, 0x10000, 0x10000, 0x10000 };
+
+    glLightxv(GL_LIGHT0, GL_POSITION, light0Position);
+    glLightxv(GL_LIGHT0, GL_DIFFUSE, light0Diffuse);
+    glLightxv(GL_LIGHT1, GL_POSITION, light1Position);
+    glLightxv(GL_LIGHT1, GL_DIFFUSE, light1Diffuse);
+    glLightxv(GL_LIGHT2, GL_POSITION, light2Position);
+    glLightxv(GL_LIGHT2, GL_DIFFUSE, light2Diffuse);
+    glMaterialxv(GL_FRONT_AND_BACK, GL_SPECULAR, materialSpecular);
+
+    glMaterialx(GL_FRONT_AND_BACK, GL_SHININESS, 60 << 16);
+    glEnable(GL_COLOR_MATERIAL);
+}
+
+
+static void drawModels(float zScale)
+{
+    const int translationScale = 9;
+    int x, y;
+
+    seedRandom(9);
+
+    glScalex(1 << 16, 1 << 16, (GLfixed)(zScale * 65536));
+
+    for (y = -5; y <= 5; ++y)
+    {
+        for (x = -5; x <= 5; ++x)
+        {
+            float buildingScale;
+            GLfixed fixedScale;
+
+            int curShape = randomUInt() % SUPERSHAPE_COUNT;
+            buildingScale = sSuperShapeParams[curShape][SUPERSHAPE_PARAMS - 1];
+            fixedScale = (GLfixed)(buildingScale * 65536);
+
+            glPushMatrix();
+            glTranslatex((x * translationScale) * 65536,
+                         (y * translationScale) * 65536,
+                         0);
+            glRotatex((GLfixed)((randomUInt() % 360) << 16), 0, 0, 1 << 16);
+            glScalex(fixedScale, fixedScale, fixedScale);
+
+            drawGLObject(sSuperShapeObjects[curShape]);
+            glPopMatrix();
+        }
+    }
+
+    for (x = -2; x <= 2; ++x)
+    {
+        const int shipScale100 = translationScale * 500;
+        const int offs100 = x * shipScale100 + (sTick % shipScale100);
+        float offs = offs100 * 0.01f;
+        GLfixed fixedOffs = (GLfixed)(offs * 65536);
+        glPushMatrix();
+        glTranslatex(fixedOffs, -4 * 65536, 2 << 16);
+        drawGLObject(sSuperShapeObjects[SUPERSHAPE_COUNT - 1]);
+        glPopMatrix();
+        glPushMatrix();
+        glTranslatex(-4 * 65536, fixedOffs, 4 << 16);
+        glRotatex(90 << 16, 0, 0, 1 << 16);
+        drawGLObject(sSuperShapeObjects[SUPERSHAPE_COUNT - 1]);
+        glPopMatrix();
+    }
+}
+
+
+/* Following gluLookAt implementation is adapted from the
+ * Mesa 3D Graphics library. http://www.mesa3d.org
+ */
+static void gluLookAt(GLfloat eyex, GLfloat eyey, GLfloat eyez,
+	              GLfloat centerx, GLfloat centery, GLfloat centerz,
+	              GLfloat upx, GLfloat upy, GLfloat upz)
+{
+    GLfloat m[16];
+    GLfloat x[3], y[3], z[3];
+    GLfloat mag;
+
+    /* Make rotation matrix */
+
+    /* Z vector */
+    z[0] = eyex - centerx;
+    z[1] = eyey - centery;
+    z[2] = eyez - centerz;
+    mag = (float)sqrt(z[0] * z[0] + z[1] * z[1] + z[2] * z[2]);
+    if (mag) {			/* mpichler, 19950515 */
+        z[0] /= mag;
+        z[1] /= mag;
+        z[2] /= mag;
+    }
+
+    /* Y vector */
+    y[0] = upx;
+    y[1] = upy;
+    y[2] = upz;
+
+    /* X vector = Y cross Z */
+    x[0] = y[1] * z[2] - y[2] * z[1];
+    x[1] = -y[0] * z[2] + y[2] * z[0];
+    x[2] = y[0] * z[1] - y[1] * z[0];
+
+    /* Recompute Y = Z cross X */
+    y[0] = z[1] * x[2] - z[2] * x[1];
+    y[1] = -z[0] * x[2] + z[2] * x[0];
+    y[2] = z[0] * x[1] - z[1] * x[0];
+
+    /* mpichler, 19950515 */
+    /* cross product gives area of parallelogram, which is < 1.0 for
+     * non-perpendicular unit-length vectors; so normalize x, y here
+     */
+
+    mag = (float)sqrt(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]);
+    if (mag) {
+        x[0] /= mag;
+        x[1] /= mag;
+        x[2] /= mag;
+    }
+
+    mag = (float)sqrt(y[0] * y[0] + y[1] * y[1] + y[2] * y[2]);
+    if (mag) {
+        y[0] /= mag;
+        y[1] /= mag;
+        y[2] /= mag;
+    }
+
+#define M(row,col)  m[col*4+row]
+    M(0, 0) = x[0];
+    M(0, 1) = x[1];
+    M(0, 2) = x[2];
+    M(0, 3) = 0.0;
+    M(1, 0) = y[0];
+    M(1, 1) = y[1];
+    M(1, 2) = y[2];
+    M(1, 3) = 0.0;
+    M(2, 0) = z[0];
+    M(2, 1) = z[1];
+    M(2, 2) = z[2];
+    M(2, 3) = 0.0;
+    M(3, 0) = 0.0;
+    M(3, 1) = 0.0;
+    M(3, 2) = 0.0;
+    M(3, 3) = 1.0;
+#undef M
+    {
+        int a;
+        GLfixed fixedM[16];
+        for (a = 0; a < 16; ++a)
+            fixedM[a] = (GLfixed)(m[a] * 65536);
+        glMultMatrixx(fixedM);
+    }
+
+    /* Translate Eye to Origin */
+    glTranslatex((GLfixed)(-eyex * 65536),
+                 (GLfixed)(-eyey * 65536),
+                 (GLfixed)(-eyez * 65536));
+}
+
+
+static void camTrack()
+{
+    float lerp[5];
+    float eX, eY, eZ, cX, cY, cZ;
+    float trackPos;
+    CAMTRACK *cam;
+    long currentCamTick;
+    int a;
+
+    if (sNextCamTrackStartTick <= sTick)
+    {
+        ++sCurrentCamTrack;
+        sCurrentCamTrackStartTick = sNextCamTrackStartTick;
+    }
+    sNextCamTrackStartTick = sCurrentCamTrackStartTick +
+                             sCamTracks[sCurrentCamTrack].len * CAMTRACK_LEN;
+
+    cam = &sCamTracks[sCurrentCamTrack];
+    currentCamTick = sTick - sCurrentCamTrackStartTick;
+    trackPos = (float)currentCamTick / (CAMTRACK_LEN * cam->len);
+
+    for (a = 0; a < 5; ++a)
+        lerp[a] = (cam->src[a] + cam->dest[a] * trackPos) * 0.01f;
+
+    if (cam->dist)
+    {
+        float dist = cam->dist * 0.1f;
+        cX = lerp[0];
+        cY = lerp[1];
+        cZ = lerp[2];
+        eX = cX - (float)cos(lerp[3]) * dist;
+        eY = cY - (float)sin(lerp[3]) * dist;
+        eZ = cZ - lerp[4];
+    }
+    else
+    {
+        eX = lerp[0];
+        eY = lerp[1];
+        eZ = lerp[2];
+        cX = eX + (float)cos(lerp[3]);
+        cY = eY + (float)sin(lerp[3]);
+        cZ = eZ + lerp[4];
+    }
+    gluLookAt(eX, eY, eZ, cX, cY, cZ, 0, 0, 1);
+}
+
+
+// Called from the app framework.
+/* The tick is current time in milliseconds, width and height
+ * are the image dimensions to be rendered.
+ */
+void appRender(long tick, int width, int height)
+{
+    if (sStartTick == 0)
+        sStartTick = tick;
+    if (!gAppAlive)
+        return;
+
+    // Actual tick value is "blurred" a little bit.
+    sTick = (sTick + tick - sStartTick) >> 1;
+
+    // Terminate application after running through the demonstration once.
+    if (sTick >= RUN_LENGTH)
+    {
+        gAppAlive = 0;
+        return;
+    }
+
+    // Prepare OpenGL ES for rendering of the frame.
+    prepareFrame(width, height);
+
+    // Update the camera position and set the lookat.
+    camTrack();
+
+    // Configure environment.
+    configureLightAndMaterial();
+
+    // Draw the reflection by drawing models with negated Z-axis.
+    glPushMatrix();
+    drawModels(-1);
+    glPopMatrix();
+
+    // Blend the ground plane to the window.
+    drawGroundPlane();
+
+    // Draw all the models normally.
+    drawModels(1);
+
+    // Draw fade quad over whole window (when changing cameras).
+    drawFadeQuad();
+}
diff --git a/opengl/tests/angeles/gpustate.c b/opengl/tests/angeles/gpustate.c
new file mode 100644
index 0000000..3c540c9
--- /dev/null
+++ b/opengl/tests/angeles/gpustate.c
@@ -0,0 +1,39 @@
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/mman.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+static void *map_memory(const char *fn, unsigned base, unsigned size)
+{
+    int fd;
+    void *ptr;
+    
+    fd = open(fn, O_RDWR | O_SYNC);
+    if(fd < 0) {
+        perror("cannot open %s for mapping");
+        return MAP_FAILED;
+    }
+
+    ptr = mmap(0, size, PROT_READ | PROT_WRITE,
+               MAP_SHARED, fd, base);
+    close(fd);
+    
+    if(ptr == MAP_FAILED) {
+        fprintf(stderr,"cannot map %s (@%08x,%08x)\n", fn, base, size);
+    }
+    return ptr;    
+}
+
+
+int main(int argc, char** argv)
+{
+    void *grp_regs = map_memory("/dev/hw3d", 0, 1024 * 1024);
+    printf("GPU base mapped at %p\n", grp_regs);
+    int state_offset = 0x10140;
+    printf("GPU state = %08lx\n",
+            *((long*)((char*)grp_regs + state_offset))  );
+
+    return 0;
+}
diff --git a/opengl/tests/angeles/include/GLES/egl.h b/opengl/tests/angeles/include/GLES/egl.h
new file mode 100644
index 0000000..cdf8410
--- /dev/null
+++ b/opengl/tests/angeles/include/GLES/egl.h
@@ -0,0 +1,229 @@
+#ifndef __egl_h_
+#define __egl_h_
+
+/*
+** License Applicability. Except to the extent portions of this file are
+** made subject to an alternative license as permitted in the SGI Free
+** Software License B, Version 1.0 (the "License"), the contents of this
+** file are subject only to the provisions of the License. You may not use
+** this file except in compliance with the License. You may obtain a copy
+** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
+** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
+**
+** http://oss.sgi.com/projects/FreeB
+**
+** Note that, as provided in the License, the Software is distributed on an
+** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
+** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
+** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
+** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
+**
+** Original Code. The Original Code is: OpenGL Sample Implementation,
+** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
+** Inc. The Original Code is Copyright (c) 1991-2004 Silicon Graphics, Inc.
+** Copyright in any portions created by third parties is as indicated
+** elsewhere herein. All Rights Reserved.
+**
+** Additional Notice Provisions: The application programming interfaces
+** established by SGI in conjunction with the Original Code are The
+** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
+** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
+** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
+** Window System(R) (Version 1.3), released October 19, 1998. This software
+** was created using the OpenGL(R) version 1.2.1 Sample Implementation
+** published by SGI, but has not been independently verified as being
+** compliant with the OpenGL(R) version 1.2.1 Specification.
+*/
+
+#include <GLES/gl.h>
+#include <GLES/egltypes.h>
+
+/*
+** egltypes.h is platform dependent. It defines:
+**
+**     - EGL types and resources
+**     - Native types
+**     - EGL and native handle values
+**
+** EGL types and resources are to be typedef'ed with appropriate platform
+** dependent resource handle types. EGLint must be an integer of at least
+** 32-bit.
+**
+** NativeDisplayType, NativeWindowType and NativePixmapType are to be
+** replaced with corresponding types of the native window system in egl.h.
+**
+** EGL and native handle values must match their types.
+**
+** Example egltypes.h:
+*/
+
+#if 0
+
+#include <sys/types.h>
+#include <native_window_system.h>
+
+/*
+** Types and resources
+*/
+typedef int EGLBoolean;
+typedef int32_t EGLint;
+typedef void *EGLDisplay;
+typedef void *EGLConfig;
+typedef void *EGLSurface;
+typedef void *EGLContext;
+
+/*
+** EGL and native handle values
+*/
+#define EGL_DEFAULT_DISPLAY ((NativeDisplayType)0)
+#define EGL_NO_CONTEXT ((EGLContext)0)
+#define EGL_NO_DISPLAY ((EGLDisplay)0)
+#define EGL_NO_SURFACE ((EGLSurface)0)
+
+#endif
+
+/*
+** Versioning and extensions
+*/
+#define EGL_VERSION_1_0		       1
+
+/*
+** Boolean
+*/
+#define EGL_FALSE		       0
+#define EGL_TRUE		       1
+
+/*
+** Errors
+*/
+#define EGL_SUCCESS		       0x3000
+#define EGL_NOT_INITIALIZED	       0x3001
+#define EGL_BAD_ACCESS		       0x3002
+#define EGL_BAD_ALLOC		       0x3003
+#define EGL_BAD_ATTRIBUTE	       0x3004
+#define EGL_BAD_CONFIG		       0x3005
+#define EGL_BAD_CONTEXT		       0x3006
+#define EGL_BAD_CURRENT_SURFACE        0x3007
+#define EGL_BAD_DISPLAY		       0x3008
+#define EGL_BAD_MATCH		       0x3009
+#define EGL_BAD_NATIVE_PIXMAP	       0x300A
+#define EGL_BAD_NATIVE_WINDOW	       0x300B
+#define EGL_BAD_PARAMETER	       0x300C
+#define EGL_BAD_SURFACE		       0x300D
+/* 0x300E - 0x301F reserved for additional errors. */
+
+/*
+** Config attributes
+*/
+#define EGL_BUFFER_SIZE		       0x3020
+#define EGL_ALPHA_SIZE		       0x3021
+#define EGL_BLUE_SIZE		       0x3022
+#define EGL_GREEN_SIZE		       0x3023
+#define EGL_RED_SIZE		       0x3024
+#define EGL_DEPTH_SIZE		       0x3025
+#define EGL_STENCIL_SIZE	       0x3026
+#define EGL_CONFIG_CAVEAT	       0x3027
+#define EGL_CONFIG_ID		       0x3028
+#define EGL_LEVEL		       0x3029
+#define EGL_MAX_PBUFFER_HEIGHT	       0x302A
+#define EGL_MAX_PBUFFER_PIXELS	       0x302B
+#define EGL_MAX_PBUFFER_WIDTH	       0x302C
+#define EGL_NATIVE_RENDERABLE	       0x302D
+#define EGL_NATIVE_VISUAL_ID	       0x302E
+#define EGL_NATIVE_VISUAL_TYPE	       0x302F
+/*#define EGL_PRESERVED_RESOURCES	 0x3030*/
+#define EGL_SAMPLES		       0x3031
+#define EGL_SAMPLE_BUFFERS	       0x3032
+#define EGL_SURFACE_TYPE	       0x3033
+#define EGL_TRANSPARENT_TYPE	       0x3034
+#define EGL_TRANSPARENT_BLUE_VALUE     0x3035
+#define EGL_TRANSPARENT_GREEN_VALUE    0x3036
+#define EGL_TRANSPARENT_RED_VALUE      0x3037
+
+/*
+** Config attribute and value
+*/
+#define EGL_NONE		       0x3038
+/* 0x3039 - 0x304F reserved for additional config attributes. */
+
+/*
+** Config values
+*/
+#define EGL_DONT_CARE		       ((EGLint) -1)
+#define EGL_PBUFFER_BIT		       0x01
+#define EGL_PIXMAP_BIT		       0x02
+#define EGL_WINDOW_BIT		       0x04
+#define EGL_SLOW_CONFIG		       0x3050
+#define EGL_NON_CONFORMANT_CONFIG      0x3051
+#define EGL_TRANSPARENT_RGB	       0x3052
+
+/*
+** String names
+*/
+#define EGL_VENDOR		       0x3053
+#define EGL_VERSION		       0x3054
+#define EGL_EXTENSIONS		       0x3055
+
+/*
+** Surface attributes
+*/
+#define EGL_HEIGHT		       0x3056
+#define EGL_WIDTH		       0x3057
+#define EGL_LARGEST_PBUFFER	       0x3058
+
+/*
+** Current surfaces
+*/
+#define EGL_DRAW		       0x3059
+#define EGL_READ		       0x305A
+
+/*
+** Engines
+*/
+#define EGL_CORE_NATIVE_ENGINE	       0x305B
+
+/* 0x305C-0x3FFFF reserved for future use */
+
+/*
+** Functions
+*/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+GLAPI EGLint APIENTRY eglGetError (void);
+
+GLAPI EGLDisplay APIENTRY eglGetDisplay (NativeDisplayType display);
+GLAPI EGLBoolean APIENTRY eglInitialize (EGLDisplay dpy, EGLint *major, EGLint *minor);
+GLAPI EGLBoolean APIENTRY eglTerminate (EGLDisplay dpy);
+GLAPI const char * APIENTRY eglQueryString (EGLDisplay dpy, EGLint name);
+GLAPI void (* APIENTRY eglGetProcAddress (const char *procname))();
+
+GLAPI EGLBoolean APIENTRY eglGetConfigs (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
+GLAPI EGLBoolean APIENTRY eglChooseConfig (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
+GLAPI EGLBoolean APIENTRY eglGetConfigAttrib (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
+
+GLAPI EGLSurface APIENTRY eglCreateWindowSurface (EGLDisplay dpy, EGLConfig config, NativeWindowType window, const EGLint *attrib_list);
+GLAPI EGLSurface APIENTRY eglCreatePixmapSurface (EGLDisplay dpy, EGLConfig config, NativePixmapType pixmap, const EGLint *attrib_list);
+GLAPI EGLSurface APIENTRY eglCreatePbufferSurface (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
+GLAPI EGLBoolean APIENTRY eglDestroySurface (EGLDisplay dpy, EGLSurface surface);
+GLAPI EGLBoolean APIENTRY eglQuerySurface (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
+
+GLAPI EGLContext APIENTRY eglCreateContext (EGLDisplay dpy, EGLConfig config, EGLContext share_list, const EGLint *attrib_list);
+GLAPI EGLBoolean APIENTRY eglDestroyContext (EGLDisplay dpy, EGLContext ctx);
+GLAPI EGLBoolean APIENTRY eglMakeCurrent (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
+GLAPI EGLContext APIENTRY eglGetCurrentContext (void);
+GLAPI EGLSurface APIENTRY eglGetCurrentSurface (EGLint readdraw);
+GLAPI EGLDisplay APIENTRY eglGetCurrentDisplay (void);
+GLAPI EGLBoolean APIENTRY eglQueryContext (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
+
+GLAPI EGLBoolean APIENTRY eglWaitGL (void);
+GLAPI EGLBoolean APIENTRY eglWaitNative (EGLint engine);
+GLAPI EGLBoolean APIENTRY eglSwapBuffers (EGLDisplay dpy, EGLSurface draw);
+GLAPI EGLBoolean APIENTRY eglCopyBuffers (EGLDisplay dpy, EGLSurface surface, NativePixmapType target);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ___egl_h_ */
diff --git a/opengl/tests/angeles/include/GLES/egltypes.h b/opengl/tests/angeles/include/GLES/egltypes.h
new file mode 100644
index 0000000..9db36c9
--- /dev/null
+++ b/opengl/tests/angeles/include/GLES/egltypes.h
@@ -0,0 +1,20 @@
+/*
+** Types and resources
+*/
+typedef int EGLBoolean;
+typedef long EGLint;
+typedef void *EGLDisplay;
+typedef void *EGLConfig;
+typedef void *EGLSurface;
+typedef void *EGLContext;
+typedef void *NativeDisplayType;
+typedef void *NativeWindowType;
+typedef void *NativePixmapType;
+
+/*
+** EGL and native handle values
+*/
+#define EGL_DEFAULT_DISPLAY ((NativeDisplayType)0)
+#define EGL_NO_CONTEXT ((EGLContext)0)
+#define EGL_NO_DISPLAY ((EGLDisplay)0)
+#define EGL_NO_SURFACE ((EGLSurface)0)
diff --git a/opengl/tests/angeles/include/GLES/gl.h b/opengl/tests/angeles/include/GLES/gl.h
new file mode 100644
index 0000000..4154822
--- /dev/null
+++ b/opengl/tests/angeles/include/GLES/gl.h
@@ -0,0 +1,584 @@
+#ifndef __gl_h_
+#define __gl_h_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** License Applicability. Except to the extent portions of this file are
+** made subject to an alternative license as permitted in the SGI Free
+** Software License B, Version 1.0 (the "License"), the contents of this
+** file are subject only to the provisions of the License. You may not use
+** this file except in compliance with the License. You may obtain a copy
+** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
+** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
+** 
+** http://oss.sgi.com/projects/FreeB
+** 
+** Note that, as provided in the License, the Software is distributed on an
+** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
+** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
+** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
+** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
+** 
+** Original Code. The Original Code is: OpenGL Sample Implementation,
+** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
+** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
+** Copyright in any portions created by third parties is as indicated
+** elsewhere herein. All Rights Reserved.
+** 
+** Additional Notice Provisions: The application programming interfaces
+** established by SGI in conjunction with the Original Code are The
+** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
+** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
+** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
+** Window System(R) (Version 1.3), released October 19, 1998. This software
+** was created using the OpenGL(R) version 1.2.1 Sample Implementation
+** published by SGI, but has not been independently verified as being
+** compliant with the OpenGL(R) version 1.2.1 Specification.
+*/
+
+#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__)
+#define WIN32_LEAN_AND_MEAN 1
+#include <windows.h>
+#endif
+
+#ifndef APIENTRY
+#define APIENTRY
+#endif
+#ifndef GLAPI
+#define GLAPI extern
+#endif
+
+typedef unsigned int GLenum;
+typedef unsigned char GLboolean;
+typedef unsigned int GLbitfield;
+typedef signed char GLbyte;
+typedef short GLshort;
+typedef int GLint;
+typedef int GLsizei;
+typedef unsigned char GLubyte;
+typedef unsigned short GLushort;
+typedef unsigned int GLuint;
+typedef float GLfloat;
+typedef float GLclampf;
+typedef void GLvoid;
+typedef int GLintptrARB;
+typedef int GLsizeiptrARB;
+typedef int GLfixed;
+typedef int GLclampx;
+/* Internal convenience typedefs */
+typedef void (*_GLfuncptr)();
+
+/*************************************************************/
+
+/* Extensions */
+#define GL_OES_VERSION_1_0                1
+#define GL_OES_read_format                1
+#define GL_OES_compressed_paletted_texture 1
+
+/* ClearBufferMask */
+#define GL_DEPTH_BUFFER_BIT               0x00000100
+#define GL_STENCIL_BUFFER_BIT             0x00000400
+#define GL_COLOR_BUFFER_BIT               0x00004000
+
+/* Boolean */
+#define GL_FALSE                          0
+#define GL_TRUE                           1
+
+/* BeginMode */
+#define GL_POINTS                         0x0000
+#define GL_LINES                          0x0001
+#define GL_LINE_LOOP                      0x0002
+#define GL_LINE_STRIP                     0x0003
+#define GL_TRIANGLES                      0x0004
+#define GL_TRIANGLE_STRIP                 0x0005
+#define GL_TRIANGLE_FAN                   0x0006
+
+/* AlphaFunction */
+#define GL_NEVER                          0x0200
+#define GL_LESS                           0x0201
+#define GL_EQUAL                          0x0202
+#define GL_LEQUAL                         0x0203
+#define GL_GREATER                        0x0204
+#define GL_NOTEQUAL                       0x0205
+#define GL_GEQUAL                         0x0206
+#define GL_ALWAYS                         0x0207
+
+/* BlendingFactorDest */
+#define GL_ZERO                           0
+#define GL_ONE                            1
+#define GL_SRC_COLOR                      0x0300
+#define GL_ONE_MINUS_SRC_COLOR            0x0301
+#define GL_SRC_ALPHA                      0x0302
+#define GL_ONE_MINUS_SRC_ALPHA            0x0303
+#define GL_DST_ALPHA                      0x0304
+#define GL_ONE_MINUS_DST_ALPHA            0x0305
+
+/* BlendingFactorSrc */
+/*      GL_ZERO */
+/*      GL_ONE */
+#define GL_DST_COLOR                      0x0306
+#define GL_ONE_MINUS_DST_COLOR            0x0307
+#define GL_SRC_ALPHA_SATURATE             0x0308
+/*      GL_SRC_ALPHA */
+/*      GL_ONE_MINUS_SRC_ALPHA */
+/*      GL_DST_ALPHA */
+/*      GL_ONE_MINUS_DST_ALPHA */
+
+/* ColorMaterialFace */
+/*      GL_FRONT_AND_BACK */
+
+/* ColorMaterialParameter */
+/*      GL_AMBIENT_AND_DIFFUSE */
+
+/* ColorPointerType */
+/*      GL_UNSIGNED_BYTE */
+/*      GL_FLOAT */
+/*      GL_FIXED */
+
+/* CullFaceMode */
+#define GL_FRONT                          0x0404
+#define GL_BACK                           0x0405
+#define GL_FRONT_AND_BACK                 0x0408
+
+/* DepthFunction */
+/*      GL_NEVER */
+/*      GL_LESS */
+/*      GL_EQUAL */
+/*      GL_LEQUAL */
+/*      GL_GREATER */
+/*      GL_NOTEQUAL */
+/*      GL_GEQUAL */
+/*      GL_ALWAYS */
+
+/* EnableCap */
+#define GL_FOG                            0x0B60
+#define GL_LIGHTING                       0x0B50
+#define GL_TEXTURE_2D                     0x0DE1
+#define GL_CULL_FACE                      0x0B44
+#define GL_ALPHA_TEST                     0x0BC0
+#define GL_BLEND                          0x0BE2
+#define GL_COLOR_LOGIC_OP                 0x0BF2
+#define GL_DITHER                         0x0BD0
+#define GL_STENCIL_TEST                   0x0B90
+#define GL_DEPTH_TEST                     0x0B71
+/*      GL_LIGHT0 */
+/*      GL_LIGHT1 */
+/*      GL_LIGHT2 */
+/*      GL_LIGHT3 */
+/*      GL_LIGHT4 */
+/*      GL_LIGHT5 */
+/*      GL_LIGHT6 */
+/*      GL_LIGHT7 */
+#define GL_POINT_SMOOTH                   0x0B10
+#define GL_LINE_SMOOTH                    0x0B20
+#define GL_SCISSOR_TEST                   0x0C11
+#define GL_COLOR_MATERIAL                 0x0B57
+#define GL_NORMALIZE                      0x0BA1
+#define GL_RESCALE_NORMAL                 0x803A
+#define GL_POLYGON_OFFSET_FILL            0x8037
+#define GL_VERTEX_ARRAY                   0x8074
+#define GL_NORMAL_ARRAY                   0x8075
+#define GL_COLOR_ARRAY                    0x8076
+#define GL_TEXTURE_COORD_ARRAY            0x8078
+#define GL_MULTISAMPLE                    0x809D
+#define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE            0x809F
+#define GL_SAMPLE_COVERAGE                0x80A0
+
+/* ErrorCode */
+#define GL_NO_ERROR                       0
+#define GL_INVALID_ENUM                   0x0500
+#define GL_INVALID_VALUE                  0x0501
+#define GL_INVALID_OPERATION              0x0502
+#define GL_STACK_OVERFLOW                 0x0503
+#define GL_STACK_UNDERFLOW                0x0504
+#define GL_OUT_OF_MEMORY                  0x0505
+
+/* FogMode */
+/*      GL_LINEAR */
+#define GL_EXP                            0x0800
+#define GL_EXP2                           0x0801
+
+/* FogParameter */
+#define GL_FOG_DENSITY                    0x0B62
+#define GL_FOG_START                      0x0B63
+#define GL_FOG_END                        0x0B64
+#define GL_FOG_MODE                       0x0B65
+#define GL_FOG_COLOR                      0x0B66
+
+/* FrontFaceDirection */
+#define GL_CW                             0x0900
+#define GL_CCW                            0x0901
+
+/* GetPName */
+#define GL_SMOOTH_POINT_SIZE_RANGE        0x0B12
+#define GL_SMOOTH_LINE_WIDTH_RANGE        0x0B22
+#define GL_ALIASED_POINT_SIZE_RANGE       0x846D
+#define GL_ALIASED_LINE_WIDTH_RANGE       0x846E
+#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A
+#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B
+#define GL_MAX_LIGHTS                     0x0D31
+#define GL_MAX_TEXTURE_SIZE               0x0D33
+#define GL_MAX_MODELVIEW_STACK_DEPTH      0x0D36
+#define GL_MAX_PROJECTION_STACK_DEPTH     0x0D38
+#define GL_MAX_TEXTURE_STACK_DEPTH        0x0D39
+#define GL_MAX_VIEWPORT_DIMS              0x0D3A
+#define GL_MAX_ELEMENTS_VERTICES          0x80E8
+#define GL_MAX_ELEMENTS_INDICES           0x80E9
+#define GL_MAX_TEXTURE_UNITS              0x84E2
+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
+#define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3
+#define GL_SUBPIXEL_BITS                  0x0D50
+#define GL_RED_BITS                       0x0D52
+#define GL_GREEN_BITS                     0x0D53
+#define GL_BLUE_BITS                      0x0D54
+#define GL_ALPHA_BITS                     0x0D55
+#define GL_DEPTH_BITS                     0x0D56
+#define GL_STENCIL_BITS                   0x0D57
+
+/* HintMode */
+#define GL_DONT_CARE                      0x1100
+#define GL_FASTEST                        0x1101
+#define GL_NICEST                         0x1102
+
+/* HintTarget */
+#define GL_PERSPECTIVE_CORRECTION_HINT    0x0C50
+#define GL_POINT_SMOOTH_HINT              0x0C51
+#define GL_LINE_SMOOTH_HINT               0x0C52
+#define GL_POLYGON_SMOOTH_HINT            0x0C53
+#define GL_FOG_HINT                       0x0C54
+
+/* LightModelParameter */
+#define GL_LIGHT_MODEL_AMBIENT            0x0B53
+#define GL_LIGHT_MODEL_TWO_SIDE           0x0B52
+
+/* LightParameter */
+#define GL_AMBIENT                        0x1200
+#define GL_DIFFUSE                        0x1201
+#define GL_SPECULAR                       0x1202
+#define GL_POSITION                       0x1203
+#define GL_SPOT_DIRECTION                 0x1204
+#define GL_SPOT_EXPONENT                  0x1205
+#define GL_SPOT_CUTOFF                    0x1206
+#define GL_CONSTANT_ATTENUATION           0x1207
+#define GL_LINEAR_ATTENUATION             0x1208
+#define GL_QUADRATIC_ATTENUATION          0x1209
+
+/* DataType */
+#define GL_BYTE                           0x1400
+#define GL_UNSIGNED_BYTE                  0x1401
+#define GL_SHORT                          0x1402
+#define GL_UNSIGNED_SHORT                 0x1403
+#define GL_FLOAT                          0x1406
+#define GL_FIXED                          0x140C
+
+/* LogicOp */
+#define GL_CLEAR                          0x1500
+#define GL_AND                            0x1501
+#define GL_AND_REVERSE                    0x1502
+#define GL_COPY                           0x1503
+#define GL_AND_INVERTED                   0x1504
+#define GL_NOOP                           0x1505
+#define GL_XOR                            0x1506
+#define GL_OR                             0x1507
+#define GL_NOR                            0x1508
+#define GL_EQUIV                          0x1509
+#define GL_INVERT                         0x150A
+#define GL_OR_REVERSE                     0x150B
+#define GL_COPY_INVERTED                  0x150C
+#define GL_OR_INVERTED                    0x150D
+#define GL_NAND                           0x150E
+#define GL_SET                            0x150F
+
+/* MaterialFace */
+/*      GL_FRONT_AND_BACK */
+
+/* MaterialParameter */
+#define GL_EMISSION                       0x1600
+#define GL_SHININESS                      0x1601
+#define GL_AMBIENT_AND_DIFFUSE            0x1602
+/*      GL_AMBIENT */
+/*      GL_DIFFUSE */
+/*      GL_SPECULAR */
+
+/* MatrixMode */
+#define GL_MODELVIEW                      0x1700
+#define GL_PROJECTION                     0x1701
+#define GL_TEXTURE                        0x1702
+
+/* NormalPointerType */
+/*      GL_BYTE */
+/*      GL_SHORT */
+/*      GL_FLOAT */
+/*      GL_FIXED */
+
+/* PixelFormat */
+#define GL_ALPHA                          0x1906
+#define GL_RGB                            0x1907
+#define GL_RGBA                           0x1908
+#define GL_LUMINANCE                      0x1909
+#define GL_LUMINANCE_ALPHA                0x190A
+
+/* PixelStoreParameter */
+#define GL_UNPACK_ALIGNMENT               0x0CF5
+#define GL_PACK_ALIGNMENT                 0x0D05
+
+/* PixelType */
+/*      GL_UNSIGNED_BYTE */
+#define GL_UNSIGNED_SHORT_4_4_4_4         0x8033
+#define GL_UNSIGNED_SHORT_5_5_5_1         0x8034
+#define GL_UNSIGNED_SHORT_5_6_5           0x8363
+
+/* ShadingModel */
+#define GL_FLAT                           0x1D00
+#define GL_SMOOTH                         0x1D01
+
+/* StencilFunction */
+/*      GL_NEVER */
+/*      GL_LESS */
+/*      GL_EQUAL */
+/*      GL_LEQUAL */
+/*      GL_GREATER */
+/*      GL_NOTEQUAL */
+/*      GL_GEQUAL */
+/*      GL_ALWAYS */
+
+/* StencilOp */
+/*      GL_ZERO */
+#define GL_KEEP                           0x1E00
+#define GL_REPLACE                        0x1E01
+#define GL_INCR                           0x1E02
+#define GL_DECR                           0x1E03
+/*      GL_INVERT */
+
+/* StringName */
+#define GL_VENDOR                         0x1F00
+#define GL_RENDERER                       0x1F01
+#define GL_VERSION                        0x1F02
+#define GL_EXTENSIONS                     0x1F03
+
+/* TexCoordPointerType */
+/*      GL_SHORT */
+/*      GL_FLOAT */
+/*      GL_FIXED */
+/*      GL_BYTE */
+
+/* TextureEnvMode */
+#define GL_MODULATE                       0x2100
+#define GL_DECAL                          0x2101
+/*      GL_BLEND */
+#define GL_ADD                            0x0104
+/*      GL_REPLACE */
+
+/* TextureEnvParameter */
+#define GL_TEXTURE_ENV_MODE               0x2200
+#define GL_TEXTURE_ENV_COLOR              0x2201
+
+/* TextureEnvTarget */
+#define GL_TEXTURE_ENV                    0x2300
+
+/* TextureMagFilter */
+#define GL_NEAREST                        0x2600
+#define GL_LINEAR                         0x2601
+
+/* TextureMinFilter */
+/*      GL_NEAREST */
+/*      GL_LINEAR */
+#define GL_NEAREST_MIPMAP_NEAREST         0x2700
+#define GL_LINEAR_MIPMAP_NEAREST          0x2701
+#define GL_NEAREST_MIPMAP_LINEAR          0x2702
+#define GL_LINEAR_MIPMAP_LINEAR           0x2703
+
+/* TextureParameterName */
+#define GL_TEXTURE_MAG_FILTER             0x2800
+#define GL_TEXTURE_MIN_FILTER             0x2801
+#define GL_TEXTURE_WRAP_S                 0x2802
+#define GL_TEXTURE_WRAP_T                 0x2803
+
+/* TextureTarget */
+/*      GL_TEXTURE_2D */
+
+/* TextureUnit */
+#define GL_TEXTURE0                       0x84C0
+#define GL_TEXTURE1                       0x84C1
+#define GL_TEXTURE2                       0x84C2
+#define GL_TEXTURE3                       0x84C3
+#define GL_TEXTURE4                       0x84C4
+#define GL_TEXTURE5                       0x84C5
+#define GL_TEXTURE6                       0x84C6
+#define GL_TEXTURE7                       0x84C7
+#define GL_TEXTURE8                       0x84C8
+#define GL_TEXTURE9                       0x84C9
+#define GL_TEXTURE10                      0x84CA
+#define GL_TEXTURE11                      0x84CB
+#define GL_TEXTURE12                      0x84CC
+#define GL_TEXTURE13                      0x84CD
+#define GL_TEXTURE14                      0x84CE
+#define GL_TEXTURE15                      0x84CF
+#define GL_TEXTURE16                      0x84D0
+#define GL_TEXTURE17                      0x84D1
+#define GL_TEXTURE18                      0x84D2
+#define GL_TEXTURE19                      0x84D3
+#define GL_TEXTURE20                      0x84D4
+#define GL_TEXTURE21                      0x84D5
+#define GL_TEXTURE22                      0x84D6
+#define GL_TEXTURE23                      0x84D7
+#define GL_TEXTURE24                      0x84D8
+#define GL_TEXTURE25                      0x84D9
+#define GL_TEXTURE26                      0x84DA
+#define GL_TEXTURE27                      0x84DB
+#define GL_TEXTURE28                      0x84DC
+#define GL_TEXTURE29                      0x84DD
+#define GL_TEXTURE30                      0x84DE
+#define GL_TEXTURE31                      0x84DF
+
+/* TextureWrapMode */
+#define GL_REPEAT                         0x2901
+#define GL_CLAMP_TO_EDGE                  0x812F
+
+/* PixelInternalFormat */
+#define GL_PALETTE4_RGB8_OES              0x8B90
+#define GL_PALETTE4_RGBA8_OES             0x8B91
+#define GL_PALETTE4_R5_G6_B5_OES          0x8B92
+#define GL_PALETTE4_RGBA4_OES             0x8B93
+#define GL_PALETTE4_RGB5_A1_OES           0x8B94
+#define GL_PALETTE8_RGB8_OES              0x8B95
+#define GL_PALETTE8_RGBA8_OES             0x8B96
+#define GL_PALETTE8_R5_G6_B5_OES          0x8B97
+#define GL_PALETTE8_RGBA4_OES             0x8B98
+#define GL_PALETTE8_RGB5_A1_OES           0x8B99
+
+/* VertexPointerType */
+/*      GL_SHORT */
+/*      GL_FLOAT */
+/*      GL_FIXED */
+/*      GL_BYTE */
+
+/* LightName */
+#define GL_LIGHT0                         0x4000
+#define GL_LIGHT1                         0x4001
+#define GL_LIGHT2                         0x4002
+#define GL_LIGHT3                         0x4003
+#define GL_LIGHT4                         0x4004
+#define GL_LIGHT5                         0x4005
+#define GL_LIGHT6                         0x4006
+#define GL_LIGHT7                         0x4007
+
+
+/*************************************************************/
+
+GLAPI void APIENTRY glActiveTexture (GLenum texture);
+GLAPI void APIENTRY glAlphaFunc (GLenum func, GLclampf ref);
+GLAPI void APIENTRY glAlphaFuncx (GLenum func, GLclampx ref);
+GLAPI void APIENTRY glBindTexture (GLenum target, GLuint texture);
+GLAPI void APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
+GLAPI void APIENTRY glClear (GLbitfield mask);
+GLAPI void APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+GLAPI void APIENTRY glClearColorx (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
+GLAPI void APIENTRY glClearDepthf (GLclampf depth);
+GLAPI void APIENTRY glClearDepthx (GLclampx depth);
+GLAPI void APIENTRY glClearStencil (GLint s);
+GLAPI void APIENTRY glClientActiveTexture (GLenum texture);
+GLAPI void APIENTRY glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+GLAPI void APIENTRY glColor4x (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+GLAPI void APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+GLAPI void APIENTRY glColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+GLAPI void APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glCullFace (GLenum mode);
+GLAPI void APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures);
+GLAPI void APIENTRY glDepthFunc (GLenum func);
+GLAPI void APIENTRY glDepthMask (GLboolean flag);
+GLAPI void APIENTRY glDepthRangef (GLclampf zNear, GLclampf zFar);
+GLAPI void APIENTRY glDepthRangex (GLclampx zNear, GLclampx zFar);
+GLAPI void APIENTRY glDisable (GLenum cap);
+GLAPI void APIENTRY glDisableClientState (GLenum array);
+GLAPI void APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
+GLAPI void APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
+GLAPI void APIENTRY glEnable (GLenum cap);
+GLAPI void APIENTRY glEnableClientState (GLenum array);
+GLAPI void APIENTRY glFinish (void);
+GLAPI void APIENTRY glFlush (void);
+GLAPI void APIENTRY glFogf (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glFogfv (GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glFogx (GLenum pname, GLfixed param);
+GLAPI void APIENTRY glFogxv (GLenum pname, const GLfixed *params);
+GLAPI void APIENTRY glFrontFace (GLenum mode);
+GLAPI void APIENTRY glFrustumf (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
+GLAPI void APIENTRY glFrustumx (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
+GLAPI void APIENTRY glGenTextures (GLsizei n, GLuint *textures);
+GLAPI GLenum APIENTRY glGetError (void);
+GLAPI void APIENTRY glGetIntegerv (GLenum pname, GLint *params);
+GLAPI const GLubyte * APIENTRY glGetString (GLenum name);
+GLAPI void APIENTRY glHint (GLenum target, GLenum mode);
+GLAPI void APIENTRY glLightModelf (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glLightModelfv (GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glLightModelx (GLenum pname, GLfixed param);
+GLAPI void APIENTRY glLightModelxv (GLenum pname, const GLfixed *params);
+GLAPI void APIENTRY glLightf (GLenum light, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glLightfv (GLenum light, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glLightx (GLenum light, GLenum pname, GLfixed param);
+GLAPI void APIENTRY glLightxv (GLenum light, GLenum pname, const GLfixed *params);
+GLAPI void APIENTRY glLineWidth (GLfloat width);
+GLAPI void APIENTRY glLineWidthx (GLfixed width);
+GLAPI void APIENTRY glLoadIdentity (void);
+GLAPI void APIENTRY glLoadMatrixf (const GLfloat *m);
+GLAPI void APIENTRY glLoadMatrixx (const GLfixed *m);
+GLAPI void APIENTRY glLogicOp (GLenum opcode);
+GLAPI void APIENTRY glMaterialf (GLenum face, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glMaterialfv (GLenum face, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glMaterialx (GLenum face, GLenum pname, GLfixed param);
+GLAPI void APIENTRY glMaterialxv (GLenum face, GLenum pname, const GLfixed *params);
+GLAPI void APIENTRY glMatrixMode (GLenum mode);
+GLAPI void APIENTRY glMultMatrixf (const GLfloat *m);
+GLAPI void APIENTRY glMultMatrixx (const GLfixed *m);
+GLAPI void APIENTRY glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+GLAPI void APIENTRY glMultiTexCoord4x (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
+GLAPI void APIENTRY glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz);
+GLAPI void APIENTRY glNormal3x (GLfixed nx, GLfixed ny, GLfixed nz);
+GLAPI void APIENTRY glNormalPointer (GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glOrthof (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
+GLAPI void APIENTRY glOrthox (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
+GLAPI void APIENTRY glPixelStorei (GLenum pname, GLint param);
+GLAPI void APIENTRY glPointSize (GLfloat size);
+GLAPI void APIENTRY glPointSizex (GLfixed size);
+GLAPI void APIENTRY glPolygonOffset (GLfloat factor, GLfloat units);
+GLAPI void APIENTRY glPolygonOffsetx (GLfixed factor, GLfixed units);
+GLAPI void APIENTRY glPopMatrix (void);
+GLAPI void APIENTRY glPushMatrix (void);
+GLAPI void APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
+GLAPI void APIENTRY glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glRotatex (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
+GLAPI void APIENTRY glSampleCoverage (GLclampf value, GLboolean invert);
+GLAPI void APIENTRY glSampleCoveragex (GLclampx value, GLboolean invert);
+GLAPI void APIENTRY glScalef (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glScalex (GLfixed x, GLfixed y, GLfixed z);
+GLAPI void APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glShadeModel (GLenum mode);
+GLAPI void APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);
+GLAPI void APIENTRY glStencilMask (GLuint mask);
+GLAPI void APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
+GLAPI void APIENTRY glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glTexEnvf (GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glTexEnvx (GLenum target, GLenum pname, GLfixed param);
+GLAPI void APIENTRY glTexEnvxv (GLenum target, GLenum pname, const GLfixed *params);
+GLAPI void APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glTexParameterx (GLenum target, GLenum pname, GLfixed param);
+GLAPI void APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glTranslatex (GLfixed x, GLfixed y, GLfixed z);
+GLAPI void APIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __gl_h_ */
diff --git a/opengl/tests/angeles/license-BSD.txt b/opengl/tests/angeles/license-BSD.txt
new file mode 100644
index 0000000..8924e3c
--- /dev/null
+++ b/opengl/tests/angeles/license-BSD.txt
@@ -0,0 +1,34 @@
+This is the BSD-style license for the "San Angeles Observation"

+OpenGL ES version example source code

+---------------------------------------------------------------

+

+San Angeles Observation OpenGL ES version example

+Copyright (c) 2004-2005, Jetro Lauha

+All rights reserved.

+

+Redistribution and use in source and binary forms, with or without

+modification, are permitted provided that the following conditions

+are met:

+

+    * Redistributions of source code must retain the above copyright

+      notice, this list of conditions and the following disclaimer.

+    * Redistributions in binary form must reproduce the above copyright

+      notice, this list of conditions and the following disclaimer in

+      the documentation and/or other materials provided with the

+      distribution.

+    * Neither the name of the software product's copyright owner nor

+      the names of its contributors may be used to endorse or promote

+      products derived from this software without specific prior written

+      permission.

+

+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT

+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR

+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT

+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED

+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR

+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF

+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING

+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS

+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

diff --git a/opengl/tests/angeles/license-LGPL.txt b/opengl/tests/angeles/license-LGPL.txt
new file mode 100644
index 0000000..b1e3f5a
--- /dev/null
+++ b/opengl/tests/angeles/license-LGPL.txt
@@ -0,0 +1,504 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library 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
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/opengl/tests/angeles/license.txt b/opengl/tests/angeles/license.txt
new file mode 100644
index 0000000..620841e
--- /dev/null
+++ b/opengl/tests/angeles/license.txt
@@ -0,0 +1,19 @@
+San Angeles Observation OpenGL ES version example

+Copyright 2004-2005 Jetro Lauha

+All rights reserved.

+Web: http://iki.fi/jetro/

+

+This source is free software; you can redistribute it and/or

+modify it under the terms of EITHER:

+  (1) The GNU Lesser General Public License as published by the Free

+      Software Foundation; either version 2.1 of the License, or (at

+      your option) any later version. The text of the GNU Lesser

+      General Public License is included with this source in the

+      file LICENSE-LGPL.txt.

+  (2) The BSD-style license that is included with this source in

+      the file LICENSE-BSD.txt.

+

+This source 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 files

+LICENSE-LGPL.txt and LICENSE-BSD.txt for more details.

diff --git a/opengl/tests/angeles/shapes.h b/opengl/tests/angeles/shapes.h
new file mode 100644
index 0000000..25ffae8
--- /dev/null
+++ b/opengl/tests/angeles/shapes.h
@@ -0,0 +1,59 @@
+/* San Angeles Observation OpenGL ES version example
+ * Copyright 2004-2005 Jetro Lauha
+ * All rights reserved.
+ * Web: http://iki.fi/jetro/
+ *
+ * This source is free software; you can redistribute it and/or
+ * modify it under the terms of EITHER:
+ *   (1) The GNU Lesser General Public License as published by the Free
+ *       Software Foundation; either version 2.1 of the License, or (at
+ *       your option) any later version. The text of the GNU Lesser
+ *       General Public License is included with this source in the
+ *       file LICENSE-LGPL.txt.
+ *   (2) The BSD-style license that is included with this source in
+ *       the file LICENSE-BSD.txt.
+ *
+ * This source 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 files
+ * LICENSE-LGPL.txt and LICENSE-BSD.txt for more details.
+ *
+ * $Id: shapes.h,v 1.6 2005/01/31 22:15:30 tonic Exp $
+ * $Revision: 1.6 $
+ */
+
+#ifndef SHAPES_H_INCLUDED
+#define SHAPES_H_INCLUDED
+
+
+#define SUPERSHAPE_PARAMS 15
+
+static const float sSuperShapeParams[][SUPERSHAPE_PARAMS] =
+{
+    // m  a     b     n1      n2     n3     m     a     b     n1     n2      n3   res1 res2 scale  (org.res1,res2)
+    { 10, 1,    2,    90,      1,   -45,    8,    1,    1,    -1,     1,  -0.4f,   20,  30, 2 }, // 40, 60
+    { 10, 1,    2,    90,      1,   -45,    4,    1,    1,    10,     1,  -0.4f,   20,  20, 4 }, // 40, 40
+    { 10, 1,    2,    60,      1,   -10,    4,    1,    1,    -1,    -2,  -0.4f,   41,  41, 1 }, // 82, 82
+    {  6, 1,    1,    60,      1,   -70,    8,    1,    1,  0.4f,     3,  0.25f,   20,  20, 1 }, // 40, 40
+    {  4, 1,    1,    30,      1,    20,   12,    1,    1,  0.4f,     3,  0.25f,   10,  30, 1 }, // 20, 60
+    {  8, 1,    1,    30,      1,    -4,    8,    2,    1,    -1,     5,   0.5f,   25,  26, 1 }, // 60, 60
+    { 13, 1,    1,    30,      1,    -4,   13,    1,    1,     1,     5,      1,   30,  30, 6 }, // 60, 60
+    { 10, 1, 1.1f, -0.5f,   0.1f,    70,   60,    1,    1,   -90,     0, -0.25f,   20,  60, 8 }, // 60, 180
+    {  7, 1,    1,    20,  -0.3f, -3.5f,    6,    1,    1,    -1,  4.5f,   0.5f,   10,  20, 4 }, // 60, 80
+    {  4, 1,    1,    10,     10,    10,    4,    1,    1,    10,    10,     10,   10,  20, 1 }, // 20, 40
+    {  4, 1,    1,     1,      1,     1,    4,    1,    1,     1,     1,      1,   10,  10, 2 }, // 10, 10
+    {  1, 1,    1,    38, -0.25f,    19,    4,    1,    1,    10,    10,     10,   10,  15, 2 }, // 20, 40
+    {  2, 1,    1,  0.7f,   0.3f,  0.2f,    3,    1,    1,   100,   100,    100,   10,  25, 2 }, // 20, 50
+    {  6, 1,    1,     1,      1,     1,    3,    1,    1,     1,     1,      1,   30,  30, 2 }, // 60, 60
+    {  3, 1,    1,     1,      1,     1,    6,    1,    1,     2,     1,      1,   10,  20, 2 }, // 20, 40
+    {  6, 1,    1,     6,   5.5f,   100,    6,    1,    1,    25,    10,     10,   30,  20, 2 }, // 60, 40
+    {  3, 1,    1,  0.5f,   1.7f,  1.7f,    2,    1,    1,    10,    10,     10,   20,  20, 2 }, // 40, 40
+    {  5, 1,    1,  0.1f,   1.7f,  1.7f,    1,    1,    1,  0.3f,  0.5f,   0.5f,   20,  20, 4 }, // 40, 40
+    {  2, 1,    1,     6,   5.5f,   100,    6,    1,    1,     4,    10,     10,   10,  22, 1 }, // 40, 40
+    {  6, 1,    1,    -1,     70,  0.1f,    9,    1, 0.5f,   -98, 0.05f,    -45,   20,  30, 4 }, // 60, 91
+    {  6, 1,    1,    -1,     90, -0.1f,    7,    1,    1,    90,  1.3f,     34,   13,  16, 1 }, // 32, 60
+};
+#define SUPERSHAPE_COUNT (sizeof(sSuperShapeParams) / sizeof(sSuperShapeParams[0]))
+
+
+#endif // !SHAPES_H_INCLUDED
diff --git a/opengl/tests/filter/Android.mk b/opengl/tests/filter/Android.mk
new file mode 100644
index 0000000..1c4253c
--- /dev/null
+++ b/opengl/tests/filter/Android.mk
@@ -0,0 +1,16 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES:= \
+	filter.c
+
+LOCAL_SHARED_LIBRARIES := \
+	libcutils \
+    libGLES_CM \
+    libui
+
+LOCAL_MODULE:= test-opengl-filter
+
+LOCAL_MODULE_TAGS := tests
+
+include $(BUILD_EXECUTABLE)
diff --git a/opengl/tests/filter/filter.c b/opengl/tests/filter/filter.c
new file mode 100644
index 0000000..c8bac06
--- /dev/null
+++ b/opengl/tests/filter/filter.c
@@ -0,0 +1,125 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <GLES/egl.h>
+
+int main(int argc, char** argv)
+{
+    if (argc!=2 && argc!=3) {
+        printf("usage: %s <0-6> [pbuffer]\n", argv[0]);
+        return 0;
+    }
+    
+    const int test = atoi(argv[1]);
+    int usePbuffer = argc==3 && !strcmp(argv[2], "pbuffer");
+    EGLint s_configAttribs[] = {
+         EGL_SURFACE_TYPE, EGL_PBUFFER_BIT|EGL_WINDOW_BIT,
+         EGL_RED_SIZE,       5,
+         EGL_GREEN_SIZE,     6,
+         EGL_BLUE_SIZE,      5,
+         EGL_NONE
+     };
+     
+     EGLint numConfigs = -1;
+     EGLint majorVersion;
+     EGLint minorVersion;
+     EGLConfig config;
+     EGLContext context;
+     EGLSurface surface;
+     EGLint w, h;
+     
+     EGLDisplay dpy;
+
+     dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+     eglInitialize(dpy, &majorVersion, &minorVersion);
+     eglChooseConfig(dpy, s_configAttribs, &config, 1, &numConfigs);
+     if (!usePbuffer) {
+         surface = eglCreateWindowSurface(dpy, config,
+                 android_createDisplaySurface(), NULL);
+     } else {
+         printf("using pbuffer\n");
+         EGLint attribs[] = { EGL_WIDTH, 320, EGL_HEIGHT, 480, EGL_NONE };
+         surface = eglCreatePbufferSurface(dpy, config, attribs);
+     }
+     context = eglCreateContext(dpy, config, NULL, NULL);
+     eglMakeCurrent(dpy, surface, surface, context);   
+     eglQuerySurface(dpy, surface, EGL_WIDTH, &w);
+     eglQuerySurface(dpy, surface, EGL_HEIGHT, &h);
+     GLint dim = w<h ? w : h;
+
+     glClear(GL_COLOR_BUFFER_BIT);
+
+     GLint crop[4] = { 0, 4, 4, -4 };
+     glBindTexture(GL_TEXTURE_2D, 0);
+     glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, crop);
+     glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+     glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+     glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+     glEnable(GL_TEXTURE_2D);
+     glColor4f(1,1,1,1);
+
+     // packing is always 4
+     uint8_t t8[]  = { 
+             0x00, 0x55, 0x00, 0x55, 
+             0xAA, 0xFF, 0xAA, 0xFF,
+             0x00, 0x55, 0x00, 0x55, 
+             0xAA, 0xFF, 0xAA, 0xFF  };
+
+     uint16_t t16[]  = { 
+             0x0000, 0x5555, 0x0000, 0x5555, 
+             0xAAAA, 0xFFFF, 0xAAAA, 0xFFFF,
+             0x0000, 0x5555, 0x0000, 0x5555, 
+             0xAAAA, 0xFFFF, 0xAAAA, 0xFFFF  };
+
+     uint16_t t5551[]  = { 
+             0x0000, 0xFFFF, 0x0000, 0xFFFF, 
+             0xFFFF, 0x0000, 0xFFFF, 0x0000,
+             0x0000, 0xFFFF, 0x0000, 0xFFFF, 
+             0xFFFF, 0x0000, 0xFFFF, 0x0000  };
+
+     uint32_t t32[]  = { 
+             0xFF000000, 0xFF0000FF, 0xFF00FF00, 0xFFFF0000, 
+             0xFF00FF00, 0xFFFF0000, 0xFF000000, 0xFF0000FF, 
+             0xFF00FFFF, 0xFF00FF00, 0x00FF00FF, 0xFFFFFF00, 
+             0xFF000000, 0xFFFF00FF, 0xFF00FFFF, 0xFFFFFFFF
+     };
+
+     switch(test) 
+     {
+     case 1:
+         glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE,
+                 4, 4, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, t8);
+         break;
+     case 2:
+         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
+                 4, 4, 0, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, t16);
+         break;
+     case 3:
+         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
+                 4, 4, 0, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, t16);
+         break;
+     case 4:
+         glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA,
+                 4, 4, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, t16);
+         break;
+     case 5:
+         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
+                 4, 4, 0, GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, t5551);
+         break;
+     case 6:
+         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
+                 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, t32);
+         break;
+     }
+
+     glDrawTexiOES(0, 0, 0, dim, dim);
+
+     if (!usePbuffer) {
+         eglSwapBuffers(dpy, surface);
+     } else {
+         glFinish();
+     }
+     
+     eglTerminate(dpy);
+     return 0;
+}
diff --git a/opengl/tests/finish/Android.mk b/opengl/tests/finish/Android.mk
new file mode 100644
index 0000000..f7b95ed
--- /dev/null
+++ b/opengl/tests/finish/Android.mk
@@ -0,0 +1,16 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES:= \
+	finish.c
+
+LOCAL_SHARED_LIBRARIES := \
+	libcutils \
+    libGLES_CM \
+    libui
+
+LOCAL_MODULE:= test-opengl-finish
+
+LOCAL_MODULE_TAGS := tests
+
+include $(BUILD_EXECUTABLE)
diff --git a/opengl/tests/finish/finish.c b/opengl/tests/finish/finish.c
new file mode 100644
index 0000000..3afe227
--- /dev/null
+++ b/opengl/tests/finish/finish.c
@@ -0,0 +1,221 @@
+/*
+ * Copyright (C) 2007 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.
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <time.h>
+#include <sched.h>
+#include <sys/resource.h>
+
+#include <GLES/egl.h>
+
+long long systemTime()
+{
+    struct timespec t;
+    t.tv_sec = t.tv_nsec = 0;
+    clock_gettime(CLOCK_MONOTONIC, &t);
+    return (long long)(t.tv_sec)*1000000000LL + t.tv_nsec;
+}
+
+int main(int argc, char** argv)
+{
+    EGLint s_configAttribs[] = {
+         EGL_RED_SIZE,       5,
+         EGL_GREEN_SIZE,     6,
+         EGL_BLUE_SIZE,      5,
+         EGL_NONE
+     };
+     
+     EGLint numConfigs = -1;
+     EGLint majorVersion;
+     EGLint minorVersion;
+     EGLConfig config;
+     EGLContext context;
+     EGLSurface surface;
+     EGLint w, h;
+     
+     EGLDisplay dpy;
+
+     dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+     eglInitialize(dpy, &majorVersion, &minorVersion);
+     eglChooseConfig(dpy, s_configAttribs, &config, 1, &numConfigs);
+     surface = eglCreateWindowSurface(dpy, config, 
+             android_createDisplaySurface(), NULL);
+     context = eglCreateContext(dpy, config, NULL, NULL);
+     eglMakeCurrent(dpy, surface, surface, context);   
+     eglQuerySurface(dpy, surface, EGL_WIDTH, &w);
+     eglQuerySurface(dpy, surface, EGL_HEIGHT, &h);
+     GLint dim = w<h ? w : h;
+
+     glBindTexture(GL_TEXTURE_2D, 0);
+     glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+     glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+     glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+     glEnable(GL_TEXTURE_2D);
+     glColor4f(1,1,1,1);
+     glDisable(GL_DITHER);
+     glShadeModel(GL_FLAT);
+
+     long long now, t;
+     int i;
+
+     char* texels = malloc(512*512*2);
+     memset(texels,0xFF,512*512*2);
+     
+     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
+             512, 512, 0, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, texels);
+
+     char* dst = malloc(320*480*2);
+     memset(dst, 0, 320*480*2);
+     printf("307200 bytes memcpy\n");
+     for (i=0 ; i<4 ; i++) {
+         now = systemTime();
+         memcpy(dst, texels, 320*480*2);
+         t = systemTime();
+         printf("memcpy() time = %llu us\n", (t-now)/1000);
+         fflush(stdout);
+     }
+     free(dst);
+
+     free(texels);
+
+     setpriority(PRIO_PROCESS, 0, -20);
+     
+     printf("512x512 unmodified texture, 512x512 blit:\n");
+     glClear(GL_COLOR_BUFFER_BIT);
+     for (i=0 ; i<4 ; i++) {
+         GLint crop[4] = { 0, 512, 512, -512 };
+         glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, crop);
+         now = systemTime();
+         glDrawTexiOES(0, 0, 0, 512, 512);
+         glFinish();
+         t = systemTime();
+         printf("glFinish() time = %llu us\n", (t-now)/1000);
+         fflush(stdout);
+         eglSwapBuffers(dpy, surface);
+     }
+     
+     printf("512x512 unmodified texture, 1x1 blit:\n");
+     glClear(GL_COLOR_BUFFER_BIT);
+     for (i=0 ; i<4 ; i++) {
+         GLint crop[4] = { 0, 1, 1, -1 };
+         glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, crop);
+         now = systemTime();
+         glDrawTexiOES(0, 0, 0, 1, 1);
+         glFinish();
+         t = systemTime();
+         printf("glFinish() time = %llu us\n", (t-now)/1000);
+         fflush(stdout);
+         eglSwapBuffers(dpy, surface);
+     }
+     
+     printf("512x512 unmodified texture, 512x512 blit (x2):\n");
+     glClear(GL_COLOR_BUFFER_BIT);
+     for (i=0 ; i<4 ; i++) {
+         GLint crop[4] = { 0, 512, 512, -512 };
+         glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, crop);
+         now = systemTime();
+         glDrawTexiOES(0, 0, 0, 512, 512);
+         glDrawTexiOES(0, 0, 0, 512, 512);
+         glFinish();
+         t = systemTime();
+         printf("glFinish() time = %llu us\n", (t-now)/1000);
+         fflush(stdout);
+         eglSwapBuffers(dpy, surface);
+     }
+
+     printf("512x512 unmodified texture, 1x1 blit (x2):\n");
+     glClear(GL_COLOR_BUFFER_BIT);
+     for (i=0 ; i<4 ; i++) {
+         GLint crop[4] = { 0, 1, 1, -1 };
+         glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, crop);
+         now = systemTime();
+         glDrawTexiOES(0, 0, 0, 1, 1);
+         glDrawTexiOES(0, 0, 0, 1, 1);
+         glFinish();
+         t = systemTime();
+         printf("glFinish() time = %llu us\n", (t-now)/1000);
+         fflush(stdout);
+         eglSwapBuffers(dpy, surface);
+     }
+
+     
+     printf("512x512 (1x1 texel MODIFIED texture), 512x512 blit:\n");
+     glClear(GL_COLOR_BUFFER_BIT);
+     for (i=0 ; i<4 ; i++) {
+         uint16_t green = 0x7E0;
+         GLint crop[4] = { 0, 512, 512, -512 };
+         glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, crop);
+         glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 1, 1, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, &green);
+         now = systemTime();
+         glDrawTexiOES(0, 0, 0, 512, 512);
+         glFinish();
+         t = systemTime();
+         printf("glFinish() time = %llu us\n", (t-now)/1000);
+         fflush(stdout);
+         eglSwapBuffers(dpy, surface);
+     }
+
+
+     int16_t texel = 0xF800;
+     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
+             1, 1, 0, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, &texel);
+
+     printf("1x1 unmodified texture, 1x1 blit:\n");
+     glClear(GL_COLOR_BUFFER_BIT);
+     for (i=0 ; i<4 ; i++) {
+         GLint crop[4] = { 0, 1, 1, -1 };
+         glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, crop);
+         now = systemTime();
+         glDrawTexiOES(0, 0, 0, 1, 1);
+         glFinish();
+         t = systemTime();
+         printf("glFinish() time = %llu us\n", (t-now)/1000);
+         eglSwapBuffers(dpy, surface);
+     }
+
+     printf("1x1 unmodified texture, 512x512 blit:\n");
+     glClear(GL_COLOR_BUFFER_BIT);
+     for (i=0 ; i<4 ; i++) {
+         GLint crop[4] = { 0, 1, 1, -1 };
+         glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, crop);
+         now = systemTime();
+         glDrawTexiOES(0, 0, 0, 512, 512);
+         glFinish();
+         t = systemTime();
+         printf("glFinish() time = %llu us\n", (t-now)/1000);
+         fflush(stdout);
+         eglSwapBuffers(dpy, surface);
+     }
+
+     printf("1x1 (1x1 texel MODIFIED texture), 512x512 blit:\n");
+     glClear(GL_COLOR_BUFFER_BIT);
+     for (i=0 ; i<4 ; i++) {
+         uint16_t green = 0x7E0;
+         GLint crop[4] = { 0, 1, 1, -1 };
+         glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, crop);
+         glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 1, 1, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, &green);
+         now = systemTime();
+         glDrawTexiOES(0, 0, 0, 1, 1);
+         glFinish();
+         t = systemTime();
+         printf("glFinish() time = %llu us\n", (t-now)/1000);
+         fflush(stdout);
+         eglSwapBuffers(dpy, surface);
+     }
+
+     return 0;
+}
diff --git a/opengl/tests/sfsim/Android.mk b/opengl/tests/sfsim/Android.mk
new file mode 100644
index 0000000..8a1a03c
--- /dev/null
+++ b/opengl/tests/sfsim/Android.mk
@@ -0,0 +1,15 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES:= \
+	egl_surface.cpp \
+	sfsim.c
+
+LOCAL_SHARED_LIBRARIES := \
+    libGLES_CM
+
+LOCAL_MODULE:= test-opengl-sfsim
+
+LOCAL_MODULE_TAGS := tests
+
+include $(BUILD_EXECUTABLE)
diff --git a/opengl/tests/sfsim/egl_surface.cpp b/opengl/tests/sfsim/egl_surface.cpp
new file mode 100644
index 0000000..b0777f8
--- /dev/null
+++ b/opengl/tests/sfsim/egl_surface.cpp
@@ -0,0 +1,346 @@
+/* 
+ **
+ ** Copyright 2008 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.
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <sys/mman.h>
+
+#include <GLES/egl.h>
+
+#include "egl_surface.h"
+
+#define LOGI(x...) do { printf("INFO: " x); } while (0)
+#define LOGW(x...) do { printf("WARN: " x); } while (0)
+#define LOGE(x...) do { printf("ERR: " x); } while (0)
+
+// ----------------------------------------------------------------------------
+
+egl_native_window_t* android_createDisplaySurface()
+{
+    egl_native_window_t* s = new android::EGLDisplaySurface();
+    s->memory_type = NATIVE_MEMORY_TYPE_GPU;
+    return s;
+}
+
+#define LIKELY( exp )       (__builtin_expect( (exp) != 0, true  ))
+#define UNLIKELY( exp )     (__builtin_expect( (exp) != 0, false ))
+
+// ----------------------------------------------------------------------------
+namespace android {
+// ----------------------------------------------------------------------------
+
+EGLDisplaySurface::EGLDisplaySurface()
+    : EGLNativeSurface<EGLDisplaySurface>()
+{
+    egl_native_window_t::version = sizeof(egl_native_window_t);
+    egl_native_window_t::ident = 0;
+    egl_native_window_t::incRef = &EGLDisplaySurface::hook_incRef;
+    egl_native_window_t::decRef = &EGLDisplaySurface::hook_decRef;
+    egl_native_window_t::swapBuffers = &EGLDisplaySurface::hook_swapBuffers;
+    egl_native_window_t::setSwapRectangle = &EGLDisplaySurface::hook_setSwapRectangle;
+    egl_native_window_t::nextBuffer = &EGLDisplaySurface::hook_nextBuffer;
+    egl_native_window_t::connect = 0;
+    egl_native_window_t::disconnect = 0;
+
+    mFb[0].data = 0;
+    mFb[1].data = 0;
+    egl_native_window_t::fd = mapFrameBuffer();
+    if (egl_native_window_t::fd >= 0) {
+        const float in2mm = 25.4f;
+        float refreshRate = 1000000000000000LLU / (
+                float( mInfo.upper_margin + mInfo.lower_margin + mInfo.yres ) 
+                * ( mInfo.left_margin  + mInfo.right_margin + mInfo.xres )
+                * mInfo.pixclock);
+
+        const GGLSurface& buffer = mFb[1 - mIndex];
+        egl_native_window_t::width  = buffer.width;
+        egl_native_window_t::height = buffer.height;
+        egl_native_window_t::stride = buffer.stride;
+        egl_native_window_t::format = buffer.format;
+        egl_native_window_t::base   = intptr_t(mFb[0].data);
+        egl_native_window_t::offset =
+            intptr_t(buffer.data) - egl_native_window_t::base;
+        egl_native_window_t::flags  = 0;
+        egl_native_window_t::xdpi = (mInfo.xres * in2mm) / mInfo.width;
+        egl_native_window_t::ydpi = (mInfo.yres * in2mm) / mInfo.height;
+        egl_native_window_t::fps  = refreshRate;
+        egl_native_window_t::memory_type = NATIVE_MEMORY_TYPE_FB;
+        // no error, set the magic word
+        egl_native_window_t::magic = 0x600913;
+    }
+    mSwapCount = -1;
+    mPageFlipCount = 0;
+}
+
+EGLDisplaySurface::~EGLDisplaySurface()
+{
+    magic = 0;
+    close(egl_native_window_t::fd);
+    munmap(mFb[0].data, mSize);
+    if (!(mFlags & PAGE_FLIP))
+        free((void*)mFb[1].data);
+}
+
+void EGLDisplaySurface::hook_incRef(NativeWindowType window) {
+    EGLDisplaySurface* that = static_cast<EGLDisplaySurface*>(window);
+    that->incStrong(that);
+}
+void EGLDisplaySurface::hook_decRef(NativeWindowType window) {
+    EGLDisplaySurface* that = static_cast<EGLDisplaySurface*>(window);
+    that->decStrong(that);
+}
+uint32_t EGLDisplaySurface::hook_swapBuffers(NativeWindowType window) {
+    EGLDisplaySurface* that = static_cast<EGLDisplaySurface*>(window);
+    return that->swapBuffers();
+}
+uint32_t EGLDisplaySurface::hook_nextBuffer(NativeWindowType window) {
+    EGLDisplaySurface* that = static_cast<EGLDisplaySurface*>(window);
+    return that->nextBuffer();
+}
+void EGLDisplaySurface::hook_setSwapRectangle(NativeWindowType window,
+        int l, int t, int w, int h) {
+    EGLDisplaySurface* that = static_cast<EGLDisplaySurface*>(window);
+    that->setSwapRectangle(l, t, w, h);
+}
+
+void EGLDisplaySurface::setSwapRectangle(int l, int t, int w, int h)
+{
+    mInfo.reserved[0] = 0x54445055; // "UPDT";
+    mInfo.reserved[1] = (uint16_t)l | ((uint32_t)t << 16);
+    mInfo.reserved[2] = (uint16_t)(l+w) | ((uint32_t)(t+h) << 16);
+}
+
+uint32_t EGLDisplaySurface::swapBuffers()
+{
+    if (!(mFlags & PAGE_FLIP))
+        return 0;
+
+    // do the actual flip
+    mIndex = 1 - mIndex;
+    mInfo.activate = FB_ACTIVATE_VBL;
+    mInfo.yoffset = mIndex ? mInfo.yres : 0;
+    if (ioctl(egl_native_window_t::fd, FBIOPUT_VSCREENINFO, &mInfo) == -1) {
+        LOGE("FBIOPUT_VSCREENINFO failed");
+        return 0;
+    }
+
+    /*
+     * this is a monstruous hack: Because the h/w accelerator is not able
+     * to render directly into the framebuffer, we need to copy its
+     * internal framebuffer out to the fb. the base address of the internal fb
+     * is given in oem[0]. 
+     * All this is needed only in standalone mode, in SurfaceFlinger mode
+     * we control where the GPU renders.
+     */
+    if (egl_native_window_t::memory_type == NATIVE_MEMORY_TYPE_GPU && oem[0]) {
+        // could use MDP here, but that's tricky because we need
+        // /dev/pmem_gpu* filedescriptor
+        const GGLSurface& buffer = mFb[mIndex];
+        memcpy( buffer.data,
+                (void*)(oem[0] + egl_native_window_t::offset),
+                buffer.stride*buffer.height*2);
+    }
+
+    // update the address of the buffer to draw to next
+    const GGLSurface& buffer = mFb[1 - mIndex];
+    egl_native_window_t::offset =
+        intptr_t(buffer.data) - egl_native_window_t::base;
+
+    mPageFlipCount++;
+
+    // We don't support screen-size changes for now
+    return 0;
+}
+
+int32_t EGLDisplaySurface::getPageFlipCount() const
+{
+    return mPageFlipCount;
+}
+
+uint32_t EGLDisplaySurface::nextBuffer()
+{
+    // update the address of the buffer to draw to next
+    const GGLSurface& buffer = mFb[mIndex];
+    egl_native_window_t::offset =
+        intptr_t(buffer.data) - egl_native_window_t::base;
+    return 0;
+}
+
+int EGLDisplaySurface::mapFrameBuffer()
+{
+    char const * const device_template[] = {
+            "/dev/graphics/fb%u",
+            "/dev/fb%u",
+            0 };
+    int fd = -1;
+    int i=0;
+    char name[64];
+    while ((fd==-1) && device_template[i]) {
+        snprintf(name, 64, device_template[i], 0);
+        fd = open(name, O_RDWR, 0);
+        i++;
+    }
+    if (fd < 0)
+        return -errno;
+
+    struct fb_fix_screeninfo finfo;
+    if (ioctl(fd, FBIOGET_FSCREENINFO, &finfo) == -1)
+        return -errno;
+
+    struct fb_var_screeninfo info;
+    if (ioctl(fd, FBIOGET_VSCREENINFO, &info) == -1)
+        return -errno;
+
+    info.reserved[0] = 0;
+    info.reserved[1] = 0;
+    info.reserved[2] = 0;
+    info.xoffset = 0;
+    info.yoffset = 0;
+    info.yres_virtual = info.yres * 2;
+    info.bits_per_pixel = 16;
+    info.activate = FB_ACTIVATE_NOW;
+
+    uint32_t flags = PAGE_FLIP;
+    if (ioctl(fd, FBIOPUT_VSCREENINFO, &info) == -1) {
+        info.yres_virtual = info.yres;
+        flags &= ~PAGE_FLIP;
+        LOGW("FBIOPUT_VSCREENINFO failed, page flipping not supported");
+    }
+
+    if (info.yres_virtual < info.yres * 2) {
+        info.yres_virtual = info.yres;
+        flags &= ~PAGE_FLIP;
+        LOGW("page flipping not supported (yres_virtual=%d, requested=%d)",
+                info.yres_virtual, info.yres*2);
+    }
+
+    if (ioctl(fd, FBIOGET_VSCREENINFO, &info) == -1)
+        return -errno;    
+
+    int refreshRate = 1000000000000000LLU / 
+    (
+            uint64_t( info.upper_margin + info.lower_margin + info.yres ) 
+            * ( info.left_margin  + info.right_margin + info.xres )
+            * info.pixclock
+    );
+
+    if (refreshRate == 0) {
+        // bleagh, bad info from the driver
+        refreshRate = 60*1000;  // 60 Hz
+    }
+
+    if (int(info.width) <= 0 || int(info.height) <= 0) {
+        // stupid driver, doesn't return that information
+        // default to Sooner's screen size (160 dpi)
+        info.width  = 51;
+        info.height = 38;
+    }
+
+    float xdpi = (info.xres * 25.4f) / info.width; 
+    float ydpi = (info.yres * 25.4f) / info.height;
+    float fps  = refreshRate / 1000.0f; 
+
+    LOGI(   "using (fd=%d)\n"
+            "id           = %s\n"
+            "xres         = %d px\n"
+            "yres         = %d px\n"
+            "xres_virtual = %d px\n"
+            "yres_virtual = %d px\n"
+            "bpp          = %d\n"
+            "r            = %2u:%u\n"
+            "g            = %2u:%u\n"
+            "b            = %2u:%u\n",
+            fd,
+            finfo.id,
+            info.xres,
+            info.yres,
+            info.xres_virtual,
+            info.yres_virtual,
+            info.bits_per_pixel,
+            info.red.offset, info.red.length,
+            info.green.offset, info.green.length,
+            info.blue.offset, info.blue.length
+    );
+
+    LOGI(   "width        = %d mm (%f dpi)\n"
+            "height       = %d mm (%f dpi)\n"
+            "refresh rate = %.2f Hz\n",
+            info.width,  xdpi,
+            info.height, ydpi,
+            fps
+    );
+
+    
+    if (ioctl(fd, FBIOGET_FSCREENINFO, &finfo) == -1)
+        return -errno;
+
+    if (finfo.smem_len <= 0)
+        return -errno;
+
+    /*
+     * Open and map the display.
+     */
+
+    void* buffer  = (uint16_t*) mmap(
+            0, finfo.smem_len,
+            PROT_READ | PROT_WRITE,
+            MAP_SHARED,
+            fd, 0);
+
+    if (buffer == MAP_FAILED)
+        return -errno;
+
+    // at least for now, always clear the fb
+    memset(buffer, 0, finfo.smem_len);
+
+    uint8_t* offscreen[2];
+    offscreen[0] = (uint8_t*)buffer;
+    if (flags & PAGE_FLIP) {
+        offscreen[1] = (uint8_t*)buffer + finfo.line_length*info.yres;
+    } else {
+        offscreen[1] = (uint8_t*)malloc(finfo.smem_len);
+        if (offscreen[1] == 0) {
+            munmap(buffer, finfo.smem_len);
+            return -ENOMEM;
+        }
+    }
+
+    mFlags = flags;
+    mInfo = info;
+    mFinfo = finfo;
+    mSize = finfo.smem_len;
+    mIndex = 0;
+    for (int i=0 ; i<2 ; i++) {
+        mFb[i].version = sizeof(GGLSurface);
+        mFb[i].width   = info.xres;
+        mFb[i].height  = info.yres;
+        mFb[i].stride  = finfo.line_length / (info.bits_per_pixel >> 3);
+        mFb[i].data    = (uint8_t*)(offscreen[i]);
+        mFb[i].format  = NATIVE_PIXEL_FORMAT_RGB_565;
+    }
+    return fd;
+}
+
+// ----------------------------------------------------------------------------
+}; // namespace android
+// ----------------------------------------------------------------------------
diff --git a/opengl/tests/sfsim/egl_surface.h b/opengl/tests/sfsim/egl_surface.h
new file mode 100644
index 0000000..70a94fc
--- /dev/null
+++ b/opengl/tests/sfsim/egl_surface.h
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2008 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.
+ */
+
+#ifndef ANDROID_SIM_EGL_SURFACE_H
+#define ANDROID_SIM_EGL_SURFACE_H
+
+#include <stdint.h>
+#include <errno.h>
+#include <sys/types.h>
+
+#include <GLES/eglnatives.h>
+
+#include <linux/fb.h>
+
+typedef struct {
+    ssize_t    version;    // always set to sizeof(GGLSurface)
+    uint32_t   width;      // width in pixels
+    uint32_t   height;     // height in pixels
+    int32_t    stride;     // stride in pixels
+    uint8_t*   data;       // pointer to the bits
+    uint8_t    format;     // pixel format
+    uint8_t    rfu[3];     // must be zero
+    void*      reserved;
+} GGLSurface;
+
+// ---------------------------------------------------------------------------
+namespace android {
+// ---------------------------------------------------------------------------
+
+template <class TYPE>
+class EGLNativeSurface : public egl_native_window_t
+{
+public:
+    EGLNativeSurface() : mCount(0) { 
+        memset(egl_native_window_t::reserved, 0, 
+                sizeof(egl_native_window_t::reserved));
+        memset(egl_native_window_t::reserved_proc, 0, 
+                sizeof(egl_native_window_t::reserved_proc));
+        memset(egl_native_window_t::oem, 0, 
+                sizeof(egl_native_window_t::oem));
+    }
+    inline void incStrong(void*) const {
+        /* in a real implementation, the inc must be atomic */
+        mCount++;
+    }
+    inline void decStrong(void*) const {
+        /* in a real implementation, the dec must be atomic */
+        if (--mCount == 1) {
+             delete static_cast<const TYPE*>(this);
+         }
+    }
+protected:
+    EGLNativeSurface& operator = (const EGLNativeSurface& rhs);
+    EGLNativeSurface(const EGLNativeSurface& rhs);
+    inline ~EGLNativeSurface() { };
+    mutable volatile int32_t mCount;
+};
+
+
+class EGLDisplaySurface : public EGLNativeSurface<EGLDisplaySurface>
+{
+public:
+    EGLDisplaySurface();
+    ~EGLDisplaySurface();
+
+    int32_t getPageFlipCount() const;
+
+private:
+    static void         hook_incRef(NativeWindowType window);
+    static void         hook_decRef(NativeWindowType window);
+    static uint32_t     hook_swapBuffers(NativeWindowType window);
+    static void         hook_setSwapRectangle(NativeWindowType window, int l, int t, int w, int h);
+    static uint32_t     hook_nextBuffer(NativeWindowType window);
+
+    uint32_t    swapBuffers();
+    uint32_t    nextBuffer();
+    void        setSwapRectangle(int l, int t, int w, int h);
+
+    int    mapFrameBuffer();
+
+    enum {
+        PAGE_FLIP = 0x00000001
+    };
+    GGLSurface          mFb[2];
+    int                 mIndex;
+    uint32_t            mFlags;
+    size_t              mSize;
+    fb_var_screeninfo   mInfo;
+    fb_fix_screeninfo   mFinfo;
+    int32_t             mPageFlipCount;
+    int32_t             mSwapCount;
+    uint32_t            mFeatureFlags;
+};
+
+// ---------------------------------------------------------------------------
+}; // namespace android
+// ---------------------------------------------------------------------------
+
+#endif // ANDROID_SIM_EGL_SURFACE_H
+
diff --git a/opengl/tests/sfsim/sfsim.c b/opengl/tests/sfsim/sfsim.c
new file mode 100644
index 0000000..14ba490
--- /dev/null
+++ b/opengl/tests/sfsim/sfsim.c
@@ -0,0 +1,112 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <GLES/egl.h>
+
+int main(int argc, char** argv)
+{
+    if (argc != 2) {
+        printf("usage: %s <0-6>\n", argv[0]);
+        return 0;
+    }
+    
+    const int test = atoi(argv[1]);
+
+    EGLint s_configAttribs[] = {
+         EGL_RED_SIZE,       5,
+         EGL_GREEN_SIZE,     6,
+         EGL_BLUE_SIZE,      5,
+         EGL_NONE
+     };
+     
+     EGLint numConfigs = -1;
+     EGLint majorVersion;
+     EGLint minorVersion;
+     EGLConfig config;
+     EGLContext context;
+     EGLSurface surface;
+     EGLint w, h;
+     
+     EGLDisplay dpy;
+
+     dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+     eglInitialize(dpy, &majorVersion, &minorVersion);
+     eglChooseConfig(dpy, s_configAttribs, &config, 1, &numConfigs);
+     surface = eglCreateWindowSurface(dpy, config,
+             android_createDisplaySurface(), NULL);
+     context = eglCreateContext(dpy, config, NULL, NULL);
+     eglMakeCurrent(dpy, surface, surface, context);   
+     eglQuerySurface(dpy, surface, EGL_WIDTH, &w);
+     eglQuerySurface(dpy, surface, EGL_HEIGHT, &h);
+     GLint dim = w<h ? w : h;
+
+     glClear(GL_COLOR_BUFFER_BIT);
+
+     GLint crop[4] = { 0, 4, 4, -4 };
+     glBindTexture(GL_TEXTURE_2D, 0);
+     glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, crop);
+     glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+     glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+     glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+     glEnable(GL_TEXTURE_2D);
+     glColor4f(1,1,1,1);
+
+     // packing is always 4
+     uint8_t t8[]  = { 
+             0x00, 0x55, 0x00, 0x55, 
+             0xAA, 0xFF, 0xAA, 0xFF,
+             0x00, 0x55, 0x00, 0x55, 
+             0xAA, 0xFF, 0xAA, 0xFF  };
+
+     uint16_t t16[]  = { 
+             0x0000, 0x5555, 0x0000, 0x5555, 
+             0xAAAA, 0xFFFF, 0xAAAA, 0xFFFF,
+             0x0000, 0x5555, 0x0000, 0x5555, 
+             0xAAAA, 0xFFFF, 0xAAAA, 0xFFFF  };
+
+     uint16_t t5551[]  = { 
+             0x0000, 0xFFFF, 0x0000, 0xFFFF, 
+             0xFFFF, 0x0000, 0xFFFF, 0x0000,
+             0x0000, 0xFFFF, 0x0000, 0xFFFF, 
+             0xFFFF, 0x0000, 0xFFFF, 0x0000  };
+
+     uint32_t t32[]  = { 
+             0xFF000000, 0xFF0000FF, 0xFF00FF00, 0xFFFF0000, 
+             0xFF00FF00, 0xFFFF0000, 0xFF000000, 0xFF0000FF, 
+             0xFF00FFFF, 0xFF00FF00, 0x00FF00FF, 0xFFFFFF00, 
+             0xFF000000, 0xFFFF00FF, 0xFF00FFFF, 0xFFFFFFFF
+     };
+
+     switch(test) 
+     {
+     case 1:
+         glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE,
+                 4, 4, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, t8);
+         break;
+     case 2:
+         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
+                 4, 4, 0, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, t16);
+         break;
+     case 3:
+         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
+                 4, 4, 0, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, t16);
+         break;
+     case 4:
+         glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA,
+                 4, 4, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, t16);
+         break;
+     case 5:
+         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
+                 4, 4, 0, GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, t5551);
+         break;
+     case 6:
+         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
+                 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, t32);
+         break;
+     }
+
+     glDrawTexiOES(0, 0, 0, dim, dim);
+
+     eglSwapBuffers(dpy, surface);
+     return 0;
+}
diff --git a/opengl/tests/textures/Android.mk b/opengl/tests/textures/Android.mk
new file mode 100644
index 0000000..b0c9021
--- /dev/null
+++ b/opengl/tests/textures/Android.mk
@@ -0,0 +1,16 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES:= \
+	textures.c
+
+LOCAL_SHARED_LIBRARIES := \
+	libcutils \
+    libGLES_CM \
+    libui
+
+LOCAL_MODULE:= test-opengl-textures
+
+LOCAL_MODULE_TAGS := tests
+
+include $(BUILD_EXECUTABLE)
diff --git a/opengl/tests/textures/textures.c b/opengl/tests/textures/textures.c
new file mode 100644
index 0000000..98e3be1
--- /dev/null
+++ b/opengl/tests/textures/textures.c
@@ -0,0 +1,107 @@
+/*
+**
+** Copyright 2006, 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.
+*/
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <GLES/egl.h>
+
+int main(int argc, char** argv)
+{
+    EGLint s_configAttribs[] = {
+         EGL_RED_SIZE,       5,
+         EGL_GREEN_SIZE,     6,
+         EGL_BLUE_SIZE,      5,
+         EGL_NONE
+     };
+     
+     EGLint numConfigs = -1;
+     EGLint majorVersion;
+     EGLint minorVersion;
+     EGLConfig config;
+     EGLContext context;
+     EGLSurface surface;
+     EGLint w, h;
+     
+     EGLDisplay dpy;
+
+     dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+     eglInitialize(dpy, &majorVersion, &minorVersion);
+     eglChooseConfig(dpy, s_configAttribs, &config, 1, &numConfigs);
+     surface = eglCreateWindowSurface(dpy, config,
+             android_createDisplaySurface(), NULL);
+     context = eglCreateContext(dpy, config, NULL, NULL);
+     eglMakeCurrent(dpy, surface, surface, context);   
+     eglQuerySurface(dpy, surface, EGL_WIDTH, &w);
+     eglQuerySurface(dpy, surface, EGL_HEIGHT, &h);
+     GLint dim = w<h ? w : h;
+
+
+     GLint crop[4] = { 0, 4, 4, -4 };
+     glBindTexture(GL_TEXTURE_2D, 0);
+     glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, crop);
+     glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+     glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+     glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+     glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+     glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+     glEnable(GL_TEXTURE_2D);
+     glColor4f(1,1,1,1);
+
+     // packing is always 4
+     uint8_t t8[]  = { 
+             0x00, 0x55, 0x00, 0x55, 
+             0xAA, 0xFF, 0xAA, 0xFF,
+             0x00, 0x55, 0x00, 0x55, 
+             0xAA, 0xFF, 0xAA, 0xFF  };
+
+     uint16_t t16[]  = { 
+             0x0000, 0x5555, 0x0000, 0x5555, 
+             0xAAAA, 0xFFFF, 0xAAAA, 0xFFFF,
+             0x0000, 0x5555, 0x0000, 0x5555, 
+             0xAAAA, 0xFFFF, 0xAAAA, 0xFFFF  };
+
+     uint16_t t5551[]  = { 
+             0x0000, 0xFFFF, 0x0000, 0xFFFF, 
+             0xFFFF, 0x0000, 0xFFFF, 0x0000,
+             0x0000, 0xFFFF, 0x0000, 0xFFFF, 
+             0xFFFF, 0x0000, 0xFFFF, 0x0000  };
+
+     uint32_t t32[]  = { 
+             0xFF000000, 0xFF0000FF, 0xFF00FF00, 0xFFFF0000, 
+             0xFF00FF00, 0xFFFF0000, 0xFF000000, 0xFF0000FF, 
+             0xFF00FFFF, 0xFF00FF00, 0x00FF00FF, 0xFFFFFF00, 
+             0xFF000000, 0xFFFF00FF, 0xFF00FFFF, 0xFFFFFFFF
+     };
+
+
+     glClear(GL_COLOR_BUFFER_BIT);
+     glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, 4, 4, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, t8);
+     glDrawTexiOES(0, 0, 0, dim/2, dim/2);
+
+     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 4, 4, 0, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, t16);
+     glDrawTexiOES(dim/2, 0, 0, dim/2, dim/2);
+
+     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, t16);
+     glDrawTexiOES(0, dim/2, 0, dim/2, dim/2);
+
+     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, t32);
+     glDrawTexiOES(dim/2, dim/2, 0, dim/2, dim/2);
+
+     eglSwapBuffers(dpy, surface);
+     return 0;
+}
diff --git a/opengl/tests/tritex/Android.mk b/opengl/tests/tritex/Android.mk
new file mode 100644
index 0000000..4edac4c
--- /dev/null
+++ b/opengl/tests/tritex/Android.mk
@@ -0,0 +1,16 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES:= \
+	tritex.c
+
+LOCAL_SHARED_LIBRARIES := \
+	libcutils \
+    libGLES_CM \
+    libui
+
+LOCAL_MODULE:= test-opengl-tritex
+
+LOCAL_MODULE_TAGS := tests
+
+include $(BUILD_EXECUTABLE)
diff --git a/opengl/tests/tritex/tritex.c b/opengl/tests/tritex/tritex.c
new file mode 100644
index 0000000..8ebe7d4
--- /dev/null
+++ b/opengl/tests/tritex/tritex.c
@@ -0,0 +1,271 @@
+// Calls glDrawElements() the number of times specified by
+// ITERATIONS. Should draw a checkerboard on the screen after
+// a few seconds.
+//
+// Ported from a Java version by Google.
+
+#include <GLES/egl.h>

+#include <stdio.h>

+#include <stdlib.h>
+#include <math.h>
+

+EGLDisplay eglDisplay;

+EGLSurface eglSurface;

+EGLContext eglContext;

+GLuint texture;

+

+#define FIXED_ONE 0x10000
+#define ITERATIONS 50

+

+int init_gl_surface(void);

+void free_gl_surface(void);

+void init_scene(void);

+void render(int quads);

+void create_texture(void);
+int readTimer(void);

+
+static void gluLookAt(float eyeX, float eyeY, float eyeZ,
+        float centerX, float centerY, float centerZ, float upX, float upY,
+        float upZ)
+{
+    // See the OpenGL GLUT documentation for gluLookAt for a description
+    // of the algorithm. We implement it in a straightforward way:
+
+    float fx = centerX - eyeX;
+    float fy = centerY - eyeY;
+    float fz = centerZ - eyeZ;
+
+    // Normalize f
+    float rlf = 1.0f / sqrtf(fx*fx + fy*fy + fz*fz);
+    fx *= rlf;
+    fy *= rlf;
+    fz *= rlf;
+
+    // Normalize up
+    float rlup = 1.0f / sqrtf(upX*upX + upY*upY + upZ*upZ);
+    upX *= rlup;
+    upY *= rlup;
+    upZ *= rlup;
+
+    // compute s = f x up (x means "cross product")
+
+    float sx = fy * upZ - fz * upY;
+    float sy = fz * upX - fx * upZ;
+    float sz = fx * upY - fy * upX;
+
+    // compute u = s x f
+    float ux = sy * fz - sz * fy;
+    float uy = sz * fx - sx * fz;
+    float uz = sx * fy - sy * fx;
+
+    float m[16] ;
+    m[0] = sx;
+    m[1] = ux;
+    m[2] = -fx;
+    m[3] = 0.0f;
+
+    m[4] = sy;
+    m[5] = uy;
+    m[6] = -fy;
+    m[7] = 0.0f;
+
+    m[8] = sz;
+    m[9] = uz;
+    m[10] = -fz;
+    m[11] = 0.0f;
+
+    m[12] = 0.0f;
+    m[13] = 0.0f;
+    m[14] = 0.0f;
+    m[15] = 1.0f;
+
+    glMultMatrixf(m);
+    glTranslatef(-eyeX, -eyeY, -eyeZ);
+}
+

+int main(int argc, char **argv)

+{

+    int q;
+    int start, end;

+
+    printf("Initializing EGL...\n");
+

+    if(!init_gl_surface())

+    {

+        printf("GL initialisation failed - exiting\n");

+        return 0;

+    }

+

+    init_scene();

+

+    create_texture();

+

+    printf("Start test...\n");
+
+    render(argc==2 ? atoi(argv[1]) : ITERATIONS);

+

+    free_gl_surface();

+

+    return 0;

+}

+

+int init_gl_surface(void)

+{

+    EGLint numConfigs = 1;

+    EGLConfig myConfig = {0};

+    EGLint attrib[] =

+    {

+            EGL_DEPTH_SIZE,     16,

+            EGL_NONE

+    };

+

+    if ( (eglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY)) == EGL_NO_DISPLAY )

+    {

+        printf("eglGetDisplay failed\n");

+        return 0;

+    }

+

+    if ( eglInitialize(eglDisplay, NULL, NULL) != EGL_TRUE )

+    {

+        printf("eglInitialize failed\n");

+        return 0;

+    }

+

+    if ( eglChooseConfig(eglDisplay, attrib, &myConfig, 1, &numConfigs) != EGL_TRUE )

+    {

+        printf("eglChooseConfig failed\n");

+        return 0;

+    }

+

+    if ( (eglSurface = eglCreateWindowSurface(eglDisplay, myConfig,
+            android_createDisplaySurface(), 0)) == EGL_NO_SURFACE )

+    {

+        printf("eglCreateWindowSurface failed\n");

+        return 0;

+    }

+

+    if ( (eglContext = eglCreateContext(eglDisplay, myConfig, 0, 0)) == EGL_NO_CONTEXT )

+    {

+        printf("eglCreateContext failed\n");

+        return 0;

+    }

+

+    if ( eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext) != EGL_TRUE )

+    {

+        printf("eglMakeCurrent failed\n");

+        return 0;

+    }

+

+    return 1;

+}

+

+void free_gl_surface(void)

+{

+    if (eglDisplay != EGL_NO_DISPLAY)

+    {

+        eglMakeCurrent( EGL_NO_DISPLAY, EGL_NO_SURFACE,

+                EGL_NO_SURFACE, EGL_NO_CONTEXT );

+        eglDestroyContext( eglDisplay, eglContext );

+        eglDestroySurface( eglDisplay, eglSurface );

+        eglTerminate( eglDisplay );

+        eglDisplay = EGL_NO_DISPLAY;

+    }

+}

+

+void init_scene(void)

+{

+    glDisable(GL_DITHER);
+    glEnable(GL_CULL_FACE);
+
+    float ratio = 320.0f / 480.0f;
+    glViewport(0, 0, 320, 480);
+
+    glMatrixMode(GL_PROJECTION);
+    glLoadIdentity();
+    glFrustumf(-ratio, ratio, -1, 1, 1, 10);
+
+    glMatrixMode(GL_MODELVIEW);

+    glLoadIdentity();
+    gluLookAt(
+            0, 0, 3,  // eye
+            0, 0, 0,  // center
+            0, 1, 0); // up
+

+    glEnable(GL_TEXTURE_2D);

+    glEnableClientState(GL_VERTEX_ARRAY);

+    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+}

+

+void create_texture(void)

+{

+    const unsigned int on = 0xff0000ff;
+    const unsigned int off = 0xffffffff;
+    const unsigned int pixels[] =
+    {
+            on, off, on, off, on, off, on, off,
+            off, on, off, on, off, on, off, on,
+            on, off, on, off, on, off, on, off,
+            off, on, off, on, off, on, off, on,
+            on, off, on, off, on, off, on, off,
+            off, on, off, on, off, on, off, on,
+            on, off, on, off, on, off, on, off,
+            off, on, off, on, off, on, off, on,
+    };

+    glGenTextures(1, &texture);

+    glBindTexture(GL_TEXTURE_2D, texture);

+    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels);

+    glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

+    glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

+    glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);

+}

+

+void render(int quads)

+{

+    int i, j;

+

+    const GLfloat vertices[] = {

+            -1,  -1,  0,

+             1,  -1,  0,

+             1,   1,  0,

+            -1,   1,  0

+    };

+

+    const GLfixed texCoords[] = {

+            0,            0,

+            FIXED_ONE,    0,

+            FIXED_ONE,    FIXED_ONE,

+            0,            FIXED_ONE

+    };

+

+    const GLushort template[] = { 0, 1, 2,  0, 2, 3 };
+
+
+    GLushort* indices = (GLushort*)malloc(quads*sizeof(template));
+    for (i=0 ; i<quads ; i++)
+        memcpy(indices+(sizeof(template)/sizeof(indices[0]))*i, template, sizeof(template));
+

+    glVertexPointer(3, GL_FLOAT, 0, vertices);

+    glTexCoordPointer(2, GL_FIXED, 0, texCoords);
+
+    // make sure to do a couple eglSwapBuffers to make sure there are
+    // no problems with the very first ones (who knows)
+    glClearColor(0.4, 0.4, 0.4, 0.4);
+    glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
+    eglSwapBuffers(eglDisplay, eglSurface);
+    glClearColor(0.6, 0.6, 0.6, 0.6);
+    glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
+    eglSwapBuffers(eglDisplay, eglSurface);
+    glClearColor(1.0, 1.0, 1.0, 1.0);
+
+    for (j=0 ; j<10 ; j++) {
+        printf("loop %d / 10 (%d quads / loop)\n", j, quads);
+
+        int nelem = sizeof(template)/sizeof(template[0]);
+        glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
+        glDrawElements(GL_TRIANGLES, nelem*quads, GL_UNSIGNED_SHORT, indices);
+        eglSwapBuffers(eglDisplay, eglSurface);
+    }
+
+    free(indices);

+}

+
diff --git a/opengl/tools/glgen/gen b/opengl/tools/glgen/gen
new file mode 100755
index 0000000..1c49861
--- /dev/null
+++ b/opengl/tools/glgen/gen
@@ -0,0 +1,99 @@
+#!/bin/sh
+rm -rf out generated
+
+mkdir out
+mkdir -p out/javax/microedition/khronos/opengles
+mkdir -p out/com/google/android/gles_jni
+mkdir -p out/android/graphics
+
+echo "package android.graphics;" > out/android/graphics/Canvas.java
+echo "public interface Canvas {}" >> out/android/graphics/Canvas.java
+
+GLFILE=out/javax/microedition/khronos/opengles/GL.java
+cp stubs/GLHeader.java-if $GLFILE
+
+GLGEN_FILES="CFunc.java CType.java CodeEmitter.java GenerateGL.java JFunc.java JType.java JniCodeEmitter.java ParameterChecker.java"
+
+pushd src > /dev/null
+javac ${GLGEN_FILES}
+popd > /dev/null
+java -classpath src GenerateGL -c glspec-1.0 glspec-1.0ext glspec-1.1 glspec-1.1ext glspec-1.1extpack glspec-checks
+
+pushd out > /dev/null
+mkdir classes
+javac -d classes com/google/android/gles_jni/GLImpl.java javax/microedition/khronos/opengles/GL10.java javax/microedition/khronos/opengles/GL10Ext.java javax/microedition/khronos/opengles/GL11.java javax/microedition/khronos/opengles/GL11Ext.java javax/microedition/khronos/opengles/GL11ExtensionPack.java
+popd > /dev/null
+
+rm -rf generated
+mkdir -p generated/C
+cp out/com_google_android_gles_jni_GLImpl.cpp generated/C
+cp -r out/com generated
+cp -r out/javax generated
+
+rm -rf out
+
+# com_google_android_gles_jni_GLImpl.cpp
+if cmp ../../../frameworks/base/core/jni/com_google_android_gles_jni_GLImpl.cpp generated/C/com_google_android_gles_jni_GLImpl.cpp ; then
+echo com_google_android_gles_jni_GLImpl.cpp unchanged
+else
+echo Please edit ../../../frameworks/base/core/jni/com_google_android_gles_jni_GLImpl.cpp
+echo Please cp generated/C/com_google_android_gles_jni_GLImpl.cpp ../../../frameworks/base/core/jni
+fi
+
+# GLImpl.java
+if cmp ../../java/com/google/android/gles_jni/GLImpl.java generated/com/google/android/gles_jni/GLImpl.java ; then
+echo GLImpl.java unchanged
+else
+echo Please edit ../../java/com/google/android/gles_jni/GLImpl.java
+echo Please cp generated/com/google/android/gles_jni/GLImpl.java ../../java/com/google/android/gles_jni
+fi
+
+# GL.java
+if cmp ../../java/javax/microedition/khronos/opengles/GL.java generated/javax/microedition/khronos/opengles/GL.java ; then
+echo GL.java unchanged
+else
+echo Please edit ../../java/javax/microedition/khronos/opengles/GL.java
+echo Please cp generated/javax/microedition/khronos/opengles/GL.java ../../java/javax/microedition/khronos/opengles/GL.java
+fi
+
+# GL10.java
+if cmp ../../java/javax/microedition/khronos/opengles/GL10.java generated/javax/microedition/khronos/opengles/GL10.java ; then
+echo GL10.java unchanged
+else
+echo Please edit ../../java/javax/microedition/khronos/opengles/GL10.java
+echo Please cp generated/javax/microedition/khronos/opengles/GL10.java ../../java/javax/microedition/khronos/opengles/GL10.java
+fi
+
+# GL10Ext.java
+if cmp ../../java/javax/microedition/khronos/opengles/GL10Ext.java generated/javax/microedition/khronos/opengles/GL10Ext.java ; then
+echo GL10Ext.java unchanged
+else
+echo Please edit ../../java/javax/microedition/khronos/opengles/GL10Ext.java
+echo Please cp generated/javax/microedition/khronos/opengles/GL10Ext.java ../../java/javax/microedition/khronos/opengles/GL10Ext.java
+fi
+
+# GL11.java
+if cmp ../../java/javax/microedition/khronos/opengles/GL11.java generated/javax/microedition/khronos/opengles/GL11.java ; then
+echo GL11.java unchanged
+else
+echo Please edit ../../java/javax/microedition/khronos/opengles/GL11.java
+echo Please cp generated/javax/microedition/khronos/opengles/GL11.java ../../java/javax/microedition/khronos/opengles/GL11.java
+fi
+
+# GL11Ext.java
+if cmp ../../java/javax/microedition/khronos/opengles/GL11Ext.java generated/javax/microedition/khronos/opengles/GL11Ext.java ; then
+echo GL11Ext.java unchanged
+else
+echo Please edit ../../java/javax/microedition/khronos/opengles/GL11Ext.java
+echo Please cp generated/javax/microedition/khronos/opengles/GL11Ext.java ../../java/javax/microedition/khronos/opengles/GL11Ext.java
+fi
+
+# GL11ExtensionPack.java
+if cmp ../../java/javax/microedition/khronos/opengles/GL11ExtensionPack.java generated/javax/microedition/khronos/opengles/GL11ExtensionPack.java ; then
+echo GL11ExtensionPack.java unchanged
+else
+echo Please edit ../../java/javax/microedition/khronos/opengles/GL11ExtensionPack.java
+echo Please cp generated/javax/microedition/khronos/opengles/GL11ExtensionPack.java ../../java/javax/microedition/khronos/opengles/GL11ExtensionPack.java
+fi
+
+rm -rf generated
diff --git a/opengl/tools/glgen/glspec-1.0 b/opengl/tools/glgen/glspec-1.0
new file mode 100644
index 0000000..c442320
--- /dev/null
+++ b/opengl/tools/glgen/glspec-1.0
@@ -0,0 +1,106 @@
+void glActiveTexture ( GLenum texture )

+void glAlphaFunc ( GLenum func, GLclampf ref )

+void glAlphaFuncx ( GLenum func, GLclampx ref )

+void glBindTexture ( GLenum target, GLuint texture )

+void glBlendFunc ( GLenum sfactor, GLenum dfactor )

+void glClear ( GLbitfield mask )

+void glClearColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha )

+void glClearColorx ( GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha )

+void glClearDepthf ( GLclampf depth )

+void glClearDepthx ( GLclampx depth )

+void glClearStencil ( GLint s )

+void glClientActiveTexture ( GLenum texture )

+void glColor4f ( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha )

+void glColor4x ( GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha )

+void glColorMask ( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha )

+void glColorPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer )

+void glCompressedTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data )

+void glCompressedTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data )

+void glCopyTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border )

+void glCopyTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height )

+void glCullFace ( GLenum mode )

+void glDeleteTextures ( GLsizei n, const GLuint *textures )

+void glDepthFunc ( GLenum func )

+void glDepthMask ( GLboolean flag )

+void glDepthRangef ( GLclampf zNear, GLclampf zFar )

+void glDepthRangex ( GLclampx zNear, GLclampx zFar )

+void glDisable ( GLenum cap )

+void glDisableClientState ( GLenum array )

+void glDrawArrays ( GLenum mode, GLint first, GLsizei count )

+void glDrawElements ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices )

+void glEnable ( GLenum cap )

+void glEnableClientState ( GLenum array )

+void glFinish ( void )

+void glFlush ( void )

+void glFogf ( GLenum pname, GLfloat param )

+void glFogfv ( GLenum pname, const GLfloat *params )

+void glFogx ( GLenum pname, GLfixed param )

+void glFogxv ( GLenum pname, const GLfixed *params )

+void glFrontFace ( GLenum mode )

+void glFrustumf ( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar )

+void glFrustumx ( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar )

+void glGenTextures ( GLsizei n, GLuint *textures )

+GLenum glGetError ( void )

+void glGetIntegerv ( GLenum pname, GLint *params )

+const GLubyte * glGetString ( GLenum name )

+void glHint ( GLenum target, GLenum mode )

+void glLightModelf ( GLenum pname, GLfloat param )

+void glLightModelfv ( GLenum pname, const GLfloat *params )

+void glLightModelx ( GLenum pname, GLfixed param )

+void glLightModelxv ( GLenum pname, const GLfixed *params )

+void glLightf ( GLenum light, GLenum pname, GLfloat param )

+void glLightfv ( GLenum light, GLenum pname, const GLfloat *params )

+void glLightx ( GLenum light, GLenum pname, GLfixed param )

+void glLightxv ( GLenum light, GLenum pname, const GLfixed *params )

+void glLineWidth ( GLfloat width )

+void glLineWidthx ( GLfixed width )

+void glLoadIdentity ( void )

+void glLoadMatrixf ( const GLfloat *m )

+void glLoadMatrixx ( const GLfixed *m )

+void glLogicOp ( GLenum opcode )

+void glMaterialf ( GLenum face, GLenum pname, GLfloat param )

+void glMaterialfv ( GLenum face, GLenum pname, const GLfloat *params )

+void glMaterialx ( GLenum face, GLenum pname, GLfixed param )

+void glMaterialxv ( GLenum face, GLenum pname, const GLfixed *params )

+void glMatrixMode ( GLenum mode )

+void glMultMatrixf ( const GLfloat *m )

+void glMultMatrixx ( const GLfixed *m )

+void glMultiTexCoord4f ( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q )

+void glMultiTexCoord4x ( GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q )

+void glNormal3f ( GLfloat nx, GLfloat ny, GLfloat nz )

+void glNormal3x ( GLfixed nx, GLfixed ny, GLfixed nz )

+void glNormalPointer ( GLenum type, GLsizei stride, const GLvoid *pointer )

+void glOrthof ( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar )

+void glOrthox ( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar )

+void glPixelStorei ( GLenum pname, GLint param )

+void glPointSize ( GLfloat size )

+void glPointSizex ( GLfixed size )

+void glPolygonOffset ( GLfloat factor, GLfloat units )

+void glPolygonOffsetx ( GLfixed factor, GLfixed units )

+void glPopMatrix ( void )

+void glPushMatrix ( void )

+void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels )

+void glRotatef ( GLfloat angle, GLfloat x, GLfloat y, GLfloat z )

+void glRotatex ( GLfixed angle, GLfixed x, GLfixed y, GLfixed z )

+void glSampleCoverage ( GLclampf value, GLboolean invert )

+void glSampleCoveragex ( GLclampx value, GLboolean invert )

+void glScalef ( GLfloat x, GLfloat y, GLfloat z )

+void glScalex ( GLfixed x, GLfixed y, GLfixed z )

+void glScissor ( GLint x, GLint y, GLsizei width, GLsizei height )

+void glShadeModel ( GLenum mode )

+void glStencilFunc ( GLenum func, GLint ref, GLuint mask )

+void glStencilMask ( GLuint mask )

+void glStencilOp ( GLenum fail, GLenum zfail, GLenum zpass )

+void glTexCoordPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer )

+void glTexEnvf ( GLenum target, GLenum pname, GLfloat param )

+void glTexEnvfv ( GLenum target, GLenum pname, const GLfloat *params )

+void glTexEnvx ( GLenum target, GLenum pname, GLfixed param )

+void glTexEnvxv ( GLenum target, GLenum pname, const GLfixed *params )

+void glTexImage2D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels )

+void glTexParameterf ( GLenum target, GLenum pname, GLfloat param )

+void glTexParameterx ( GLenum target, GLenum pname, GLfixed param )

+void glTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels )

+void glTranslatef ( GLfloat x, GLfloat y, GLfloat z )

+void glTranslatex ( GLfixed x, GLfixed y, GLfixed z )

+void glVertexPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer )

+void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height )

diff --git a/opengl/tools/glgen/glspec-1.0ext b/opengl/tools/glgen/glspec-1.0ext
new file mode 100644
index 0000000..7d19758
--- /dev/null
+++ b/opengl/tools/glgen/glspec-1.0ext
@@ -0,0 +1 @@
+GLbitfield glQueryMatrixxOES ( GLfixed *mantissa, GLint *exponent )

diff --git a/opengl/tools/glgen/glspec-1.1 b/opengl/tools/glgen/glspec-1.1
new file mode 100644
index 0000000..9149a7f
--- /dev/null
+++ b/opengl/tools/glgen/glspec-1.1
@@ -0,0 +1,42 @@
+void glBindBuffer ( GLenum target, GLuint buffer )

+void glBufferData ( GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage )

+void glBufferSubData ( GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data )

+void glClipPlanef ( GLenum plane, const GLfloat *equation )

+void glClipPlanex ( GLenum plane, const GLfixed *equation )

+void glColor4ub ( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha )

+void glColorPointer ( GLint size, GLenum type, GLsizei stride, GLint offset )

+void glDeleteBuffers ( GLsizei n, const GLuint *buffers )

+void glDrawElements ( GLenum mode, GLsizei count, GLenum type, GLint offset )

+void glGenBuffers ( GLsizei n, GLuint *buffers )

+void glGetBooleanv ( GLenum pname, GLboolean *params )

+void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params )

+void glGetClipPlanef ( GLenum pname, GLfloat *eqn )

+void glGetClipPlanex ( GLenum pname, GLfixed *eqn )

+void glGetFixedv ( GLenum pname, GLfixed *params )

+void glGetFloatv ( GLenum pname, GLfloat *params )

+void glGetLightfv ( GLenum light, GLenum pname, GLfloat *params )

+void glGetLightxv ( GLenum light, GLenum pname, GLfixed *params )

+void glGetMaterialfv ( GLenum face, GLenum pname, GLfloat *params )

+void glGetMaterialxv ( GLenum face, GLenum pname, GLfixed *params )

+void glGetTexEnviv ( GLenum env, GLenum pname, GLint *params )

+void glGetTexEnvxv ( GLenum env, GLenum pname, GLfixed *params )

+void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params )

+void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params )

+void glGetTexParameterxv ( GLenum target, GLenum pname, GLfixed *params )

+GLboolean glIsBuffer ( GLuint buffer )

+GLboolean glIsEnabled ( GLenum cap )

+GLboolean glIsTexture ( GLuint texture )

+void glNormalPointer ( GLenum type, GLsizei stride, GLint offset )

+void glPointParameterf ( GLenum pname, GLfloat param )

+void glPointParameterfv ( GLenum pname, const GLfloat *params )

+void glPointParameterx ( GLenum pname, GLfixed param )

+void glPointParameterxv ( GLenum pname, const GLfixed *params )

+void glPointSizePointerOES ( GLenum type, GLsizei stride, const GLvoid *pointer )

+void glTexCoordPointer ( GLint size, GLenum type, GLsizei stride, GLint offset )

+void glTexEnvi ( GLenum target, GLenum pname, GLint param )

+void glTexEnviv ( GLenum target, GLenum pname, const GLint *params )

+void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params )

+void glTexParameteri ( GLenum target, GLenum pname, GLint param )

+void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params )

+void glTexParameterxv ( GLenum target, GLenum pname, const GLfixed *params )

+void glVertexPointer ( GLint size, GLenum type, GLsizei stride, GLint offset )

diff --git a/opengl/tools/glgen/glspec-1.1ext b/opengl/tools/glgen/glspec-1.1ext
new file mode 100644
index 0000000..cc08c73
--- /dev/null
+++ b/opengl/tools/glgen/glspec-1.1ext
@@ -0,0 +1,16 @@
+void glCurrentPaletteMatrixOES ( GLuint matrixpaletteindex )

+void glDrawTexfOES ( GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height )

+void glDrawTexfvOES ( const GLfloat *coords )

+void glDrawTexiOES ( GLint x, GLint y, GLint z, GLint width, GLint height )

+void glDrawTexivOES ( const GLint *coords )

+void glDrawTexsOES ( GLshort x, GLshort y, GLshort z, GLshort width, GLshort height )

+void glDrawTexsvOES ( const GLshort *coords )

+void glDrawTexxOES ( GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height )

+void glDrawTexxvOES ( const GLfixed *coords )

+void glEnable ( GLenum cap )

+void glEnableClientState ( GLenum array )

+void glLoadPaletteFromModelViewMatrixOES ( void )

+void glMatrixIndexPointerOES ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer )

+void glMatrixIndexPointerOES ( GLint size, GLenum type, GLsizei stride, GLint offset )

+void glWeightPointerOES ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer )

+void glWeightPointerOES ( GLint size, GLenum type, GLsizei stride, GLint offset )

diff --git a/opengl/tools/glgen/glspec-1.1extpack b/opengl/tools/glgen/glspec-1.1extpack
new file mode 100644
index 0000000..ca9e6d2
--- /dev/null
+++ b/opengl/tools/glgen/glspec-1.1extpack
@@ -0,0 +1,38 @@
+void glBindFramebufferOES ( GLint target, GLint framebuffer )
+void glBindRenderbufferOES ( GLint target, GLint renderbuffer )
+void glBindTexture ( GLint target, GLint texture )
+void glBlendEquation ( GLint mode )
+void glBlendEquationSeparate ( GLint modeRGB, GLint modeAlpha )
+void glBlendFuncSeparate ( GLint srcRGB, GLint dstRGB, GLint srcAlpha, GLint dstAlpha )
+GLint glCheckFramebufferStatusOES ( GLint target )
+void glCompressedTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data )
+void glCopyTexImage2D ( GLint target, GLint level, GLint internalformat, GLint x, GLint y, GLint width, GLint height, GLint border )
+void glDeleteFramebuffersOES ( GLint n, GLint *framebuffers )
+void glDeleteRenderbuffersOES ( GLint n, GLint *renderbuffers )
+void glEnable ( GLint cap )
+void glFramebufferRenderbufferOES ( GLint target, GLint attachment, GLint renderbuffertarget, GLint renderbuffer )
+void glFramebufferTexture2DOES ( GLint target, GLint attachment, GLint textarget, GLint texture, GLint level )
+void glGenerateMipmapOES ( GLint target )
+void glGenFramebuffersOES ( GLint n, GLint *framebuffers )
+void glGenRenderbuffersOES ( GLint n, GLint *renderbuffers )
+void glGetFramebufferAttachmentParameterivOES ( GLint target, GLint attachment, GLint pname, GLint *params )
+void glGetIntegerv ( GLint pname, GLint *params )
+void glGetRenderbufferParameterivOES ( GLint target, GLint pname, GLint *params )
+void glGetTexGenfv ( GLint coord, GLint pname, GLfloat *params )
+void glGetTexGeniv ( GLint coord, GLint pname, GLint *params )
+void glGetTexGenxv ( GLint coord, GLint pname, GLint *params )
+GLboolean glIsFramebufferOES ( GLint framebuffer )
+GLboolean glIsRenderbufferOES ( GLint renderbuffer )
+void glRenderbufferStorageOES ( GLint target, GLint internalformat, GLint width, GLint height )
+void glStencilOp ( GLint fail, GLint zfail, GLint zpass )
+void glTexEnvf ( GLint target, GLint pname, GLfloat param )
+void glTexEnvfv ( GLint target, GLint pname, GLfloat *params )
+void glTexEnvx ( GLint target, GLint pname, GLint param )
+void glTexEnvxv ( GLint target, GLint pname, GLint *params )
+void glTexGenf ( GLint coord, GLint pname, GLfloat param )
+void glTexGenfv ( GLint coord, GLint pname, GLfloat *params )
+void glTexGeni ( GLint coord, GLint pname, GLint param )
+void glTexGeniv ( GLint coord, GLint pname, GLint *params )
+void glTexGenx ( GLint coord, GLint pname, GLint param )
+void glTexGenxv ( GLint coord, GLint pname, GLint *params )
+void glTexParameterf ( GLint target, GLint pname, GLfloat param )
diff --git a/opengl/tools/glgen/glspec-checks b/opengl/tools/glgen/glspec-checks
new file mode 100644
index 0000000..a84ed65
--- /dev/null
+++ b/opengl/tools/glgen/glspec-checks
@@ -0,0 +1,59 @@
+glClipPlanef check equation 4

+glClipPlanex check equation 4

+glDeleteBuffers check buffers n 

+glDeleteTextures check textures n

+glDrawElements check_AIOOBE indices count

+glFog ifcheck params 1 pname GL_FOG_MODE,GL_FOG_DENSITY,GL_FOG_START,GL_FOG_END ifcheck params 4 pname GL_FOG_COLOR

+glGenBuffers check buffers n

+glGenTextures check textures n

+glGetClipPlane check eqn 4

+glGetIntegerv ifcheck params 1 pname GL_ALPHA_BITS,GL_ALPHA_TEST_FUNC,GL_ALPHA_TEST_REF,GL_BLEND_DST,GL_BLUE_BITS,GL_COLOR_ARRAY_BUFFER_BINDING,GL_COLOR_ARRAY_SIZE,GL_COLOR_ARRAY_STRIDE,GL_COLOR_ARRAY_TYPE,GL_CULL_FACE,GL_DEPTH_BITS,GL_DEPTH_CLEAR_VALUE,GL_DEPTH_FUNC,GL_DEPTH_WRITEMASK,GL_FOG_DENSITY,GL_FOG_END,GL_FOG_MODE,GL_FOG_START,GL_FRONT_FACE,GL_GREEN_BITS,GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES,GL_IMPLEMENTATION_COLOR_READ_TYPE_OES,GL_LIGHT_MODEL_TWO_SIDE,GL_LINE_SMOOTH_HINT,GL_LINE_WIDTH,GL_LOGIC_OP_MODE,GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES,GL_MATRIX_INDEX_ARRAY_SIZE_OES,GL_MATRIX_INDEX_ARRAY_STRIDE_OES,GL_MATRIX_INDEX_ARRAY_TYPE_OES,GL_MATRIX_MODE,GL_MAX_CLIP_PLANES,GL_MAX_ELEMENTS_INDICES,GL_MAX_ELEMENTS_VERTICES,GL_MAX_LIGHTS,GL_MAX_MODELVIEW_STACK_DEPTH,GL_MAX_PALETTE_MATRICES_OES,GL_MAX_PROJECTION_STACK_DEPTH,GL_MAX_TEXTURE_SIZE,GL_MAX_TEXTURE_STACK_DEPTH,GL_MAX_TEXTURE_UNITS,GL_MAX_VERTEX_UNITS_OES,GL_MODELVIEW_STACK_DEPTH,GL_NORMAL_ARRAY_BUFFER_BINDING,GL_NORMAL_ARRAY_STRIDE,GL_NORMAL_ARRAY_TYPE,GL_NUM_COMPRESSED_TEXTURE_FORMATS,GL_PACK_ALIGNMENT,GL_PERSPECTIVE_CORRECTION_HINT,GL_POINT_SIZE,GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES,GL_POINT_SIZE_ARRAY_STRIDE_OES,GL_POINT_SIZE_ARRAY_TYPE_OES,GL_POINT_SMOOTH_HINT,GL_POLYGON_OFFSET_FACTOR,GL_POLYGON_OFFSET_UNITS,GL_PROJECTION_STACK_DEPTH,GL_RED_BITS,GL_SHADE_MODEL,GL_STENCIL_BITS,GL_STENCIL_CLEAR_VALUE,GL_STENCIL_FAIL,GL_STENCIL_FUNC,GL_STENCIL_PASS_DEPTH_FAIL,GL_STENCIL_PASS_DEPTH_PASS,GL_STENCIL_REF,GL_STENCIL_VALUE_MASK,GL_STENCIL_WRITEMASK,GL_SUBPIXEL_BITS,GL_TEXTURE_BINDING_2D,GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING,GL_TEXTURE_COORD_ARRAY_SIZE,GL_TEXTURE_COORD_ARRAY_STRIDE,GL_TEXTURE_COORD_ARRAY_TYPE,GL_TEXTURE_STACK_DEPTH,GL_UNPACK_ALIGNMENT,GL_VERTEX_ARRAY_BUFFER_BINDING,GL_VERTEX_ARRAY_SIZE,GL_VERTEX_ARRAY_STRIDE,GL_VERTEX_ARRAY_TYPE,GL_WEIGHT_ARRAY_BUFFER_BINDING_OES,GL_WEIGHT_ARRAY_SIZE_OES,GL_WEIGHT_ARRAY_STRIDE_OES,GL_WEIGHT_ARRAY_TYPE_OES ifcheck params 2 pname GL_ALIASED_POINT_SIZE_RANGE,GL_ALIASED_LINE_WIDTH_RANGE,GL_DEPTH_RANGE,GL_MAX_VIEWPORT_DIMS,GL_SMOOTH_LINE_WIDTH_RANGE,GL_SMOOTH_POINT_SIZE_RANGE ifcheck params 4 pname GL_COLOR_CLEAR_VALUE,GL_COLOR_WRITEMASK,GL_SCISSOR_BOX,GL_VIEWPORT ifcheck params 16 pname GL_MODELVIEW_MATRIX,GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES,GL_PROJECTION_MATRIX,GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES,GL_TEXTURE_MATRIX,GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES ifcheck params _NUM_COMPRESSED_TEXTURE_FORMATS pname GL_COMPRESSED_TEXTURE_FORMATS,GL_FOG_COLOR,GL_LIGHT_MODEL_AMBIENT

+glGetLight ifcheck params 1 pname GL_SPOT_EXPONENT,GL_SPOT_CUTOFF,GL_CONSTANT_ATTENUATION,GL_LINEAR_ATTENUATION,GL_QUADRATIC_ATTENUATION ifcheck params 3 pname GL_SPOT_DIRECTION ifcheck params 4 pname GL_AMBIENT,GL_DIFFUSE,GL_SPECULAR,GL_EMISSION

+glGetMaterial ifcheck params 1 pname GL_SHININESS ifcheck params 4 pname GL_AMBIENT,GL_DIFFUSE,GL_SPECULAR,GL_EMISSION,GL_AMBIENT_AND_DIFFUSE

+glGetTexEnv ifcheck params 1 pname GL_TEXTURE_ENV_MODE,GL_COMBINE_RGB,GL_COMBINE_ALPHA ifcheck params 4 pname GL_TEXTURE_ENV_COLOR

+glGetTexParameter check params 1

+glLightModel ifcheck params 1 pname GL_LIGHT_MODEL_TWO_SIDE ifcheck params 4 pname GL_LIGHT_MODEL_AMBIENT

+glLight ifcheck params 1 pname GL_SPOT_EXPONENT,GL_SPOT_CUTOFF,GL_CONSTANT_ATTENUATION,GL_LINEAR_ATTENUATION,GL_QUADRATIC_ATTENUATION ifcheck params 3 pname GL_SPOT_DIRECTION ifcheck params 4 pname GL_AMBIENT,GL_DIFFUSE,GL_SPECULAR,GL_EMISSION

+glLoadMatrix check m 16

+glMaterial ifcheck params 1 pname GL_SHININESS ifcheck params 4 pname GL_AMBIENT,GL_DIFFUSE,GL_SPECULAR,GL_EMISSION,GL_AMBIENT_AND_DIFFUSE

+glMultMatrix check m 16

+glPointParameter check params 1

+glTexEnv ifcheck params 1 pname GL_TEXTURE_ENV_MODE,GL_COMBINE_RGB,GL_COMBINE_ALPHA ifcheck params 4 pname GL_TEXTURE_ENV_COLOR

+glTexImage2D nullAllowed

+glTexSubImage2D nullAllowed

+glBufferData nullAllowed

+glTexParameter check params 1

+glQueryMatrixxOES check mantissa 16 check exponent 16 return -1

+glDrawTexfvOES check coords 5

+glDrawTexivOES check coords 5

+glDrawTexsvOES check coords 5

+glDrawTexxvOES check coords 5

+glBindFramebufferOES unsupported

+glBindRenderbufferOES unsupported

+glBlendEquation unsupported

+glBlendEquationSeparate unsupported

+glBlendFuncSeparate unsupported

+glCheckFramebufferStatusOES unsupported return 0

+glCurrentPaletteMatrixOES unsupported

+glDeleteFramebuffersOES unsupported

+glDeleteRenderbuffersOES unsupported

+glFramebufferRenderbufferOES unsupported

+glFramebufferStorageOES unsupported

+glFramebufferTexture2DOES unsupported

+glGenFramebuffersOES unsupported

+glGenRenderbuffersOES unsupported

+glGenerateMipmapOES unsupported

+glGetBufferParameter unsupported

+glGetFramebufferAttachmentParameterivOES unsupported

+glGetRenderbufferParameterivOES unsupported

+glGetTexGen unsupported

+glIsFramebufferOES unsupported return JNI_FALSE

+glIsRenderbufferOES unsupported return JNI_FALSE

+glLoadPaletteFromModelViewMatrixOES unsupported

+glMatrixIndexPointerOES unsupported

+glRenderbufferStorageOES unsupported return false

+glTexGen unsupported

+glTexGenf unsupported

+glTexGeni unsupported

+glTexGenx unsupported

+glWeightPointerOES unsupported

diff --git a/opengl/tools/glgen/src/CFunc.java b/opengl/tools/glgen/src/CFunc.java
new file mode 100644
index 0000000..0794f41
--- /dev/null
+++ b/opengl/tools/glgen/src/CFunc.java
@@ -0,0 +1,155 @@
+

+import java.util.*;

+

+public class CFunc {

+

+    String original;

+

+    CType ftype;

+    String fname;

+

+    List<String> argNames = new ArrayList<String>();

+    List<CType> argTypes = new ArrayList<CType>();

+

+    boolean hasPointerArg = false;

+    boolean hasTypedPointerArg = false;

+

+    public CFunc(String original) {

+        this.original = original;

+    }

+

+    public String getOriginal() {

+        return original;

+    }

+

+    public void setName(String fname) {

+        this.fname = fname;

+    }

+

+    public String getName() {

+        return fname;

+    }

+

+    public void setType(CType ftype) {

+        this.ftype = ftype;

+    }

+

+    public CType getType() {

+        return ftype;

+    }

+

+    public void addArgument(String argName, CType argType) {

+        argNames.add(argName);

+        argTypes.add(argType);

+

+        if (argType.isPointer()) {

+            hasPointerArg = true;

+        }

+        if (argType.isTypedPointer()) {

+            hasTypedPointerArg = true;

+        }

+    }

+

+    public int getNumArgs() {

+        return argNames.size();

+    }

+

+    public int getArgIndex(String name) {

+        int len = argNames.size();

+        for (int i = 0; i < len; i++) {

+            if (name.equals(argNames.get(i))) {

+                return i;

+            }

+        }

+        return -1;

+    }

+

+    public String getArgName(int index) {

+        return argNames.get(index);

+    }

+

+    public CType getArgType(int index) {

+        return argTypes.get(index);

+    }

+

+    public boolean hasPointerArg() {

+        return hasPointerArg;

+    }

+

+    public boolean hasTypedPointerArg() {

+        return hasTypedPointerArg;

+    }

+

+    public String toString() {

+        String s =  "Function " + fname + " returns " + ftype + ": ";

+        for (int i = 0; i < argNames.size(); i++) {

+            if (i > 0) {

+                s += ", ";

+            }

+            s += argTypes.get(i) + " " + argNames.get(i);

+        }

+        return s;

+    }

+

+    public static CFunc parseCFunc(String s) {

+        CFunc cfunc = new CFunc(s);

+        String[] tokens = s.split("\\s");

+

+        int i = 0;

+        CType ftype = new CType();

+        String ftypeName = tokens[i++];

+        if (ftypeName.equals("const")) {

+            ftype.setIsConst(true);

+            ftypeName = tokens[i++];

+        }

+        ftype.setBaseType(ftypeName);

+

+        String fname = tokens[i++];

+        if (fname.equals("*")) {

+            ftype.setIsPointer(true);

+            fname = tokens[i++];

+        }

+	

+        cfunc.setName(fname);

+        cfunc.setType(ftype);

+	

+        while (i < tokens.length) {

+            String tok = tokens[i++];

+	    

+            if (tok.equals("(")) {

+                continue;

+            }

+            if (tok.equals(")")) {

+                break;

+            }

+

+            CType argType = new CType();

+	    

+            String argTypeName = tok;

+            String argName = "";

+	    

+            if (argTypeName.equals("const")) {

+                argType.setIsConst(true);

+                argTypeName = tokens[i++];

+            }

+            argType.setBaseType(argTypeName);

+

+            if (argTypeName.equals("void")) {

+                break;

+            }

+	    

+            argName = tokens[i++];

+            if (argName.startsWith("*")) {

+                argType.setIsPointer(true);

+                argName = argName.substring(1, argName.length());

+            }

+            if (argName.endsWith(",")) {

+                argName = argName.substring(0, argName.length() - 1);

+            }

+	    

+            cfunc.addArgument(argName, argType);

+        }

+

+        return cfunc;

+    }

+}

diff --git a/opengl/tools/glgen/src/CType.java b/opengl/tools/glgen/src/CType.java
new file mode 100644
index 0000000..331ec62
--- /dev/null
+++ b/opengl/tools/glgen/src/CType.java
@@ -0,0 +1,85 @@
+

+public class CType {

+

+    String baseType;

+    boolean isConst;

+    boolean isPointer;

+

+    public CType() {

+    }

+

+    public CType(String baseType) {

+	setBaseType(baseType);

+    }

+

+    public CType(String baseType, boolean isConst, boolean isPointer) {

+	setBaseType(baseType);

+	setIsConst(isConst);

+	setIsPointer(isPointer);

+    }

+

+    public String getDeclaration() {

+	return baseType + (isPointer ? " *" : "");

+    }

+    

+    public void setIsConst(boolean isConst) {

+	this.isConst = isConst;

+    }

+

+    public boolean isConst() {

+	return isConst;

+    }

+

+    public void setIsPointer(boolean isPointer) {

+	this.isPointer = isPointer;

+    }

+

+    public boolean isPointer() {

+	return isPointer;

+    }

+

+    boolean isVoid() {

+	String baseType = getBaseType();

+	return baseType.equals("GLvoid") ||

+	    baseType.equals("void");

+    }

+

+    public boolean isTypedPointer() {

+	return isPointer() && !isVoid();

+    }

+

+    public void setBaseType(String baseType) {

+	this.baseType = baseType;

+    }

+

+    public String getBaseType() {

+	return baseType;

+    }

+

+    public String toString() {

+	String s = "";

+	if (isConst()) {

+	    s += "const ";

+	}

+	s += baseType;

+	if (isPointer()) {

+	    s += "*";

+	}

+

+	return s;

+    }

+

+    public int hashCode() {

+	return baseType.hashCode() ^ (isPointer ? 2 : 0) ^ (isConst ? 1 : 0);

+    }

+

+    public boolean equals(Object o) {

+	if (o != null && o instanceof CType) {

+	    CType c = (CType)o;

+	    return baseType.equals(c.baseType) &&

+		isPointer() == c.isPointer() &&

+		isConst() == c.isConst();

+	}

+	return false;

+    }

+}

diff --git a/opengl/tools/glgen/src/CodeEmitter.java b/opengl/tools/glgen/src/CodeEmitter.java
new file mode 100644
index 0000000..3e9b90a
--- /dev/null
+++ b/opengl/tools/glgen/src/CodeEmitter.java
@@ -0,0 +1,8 @@
+

+public interface CodeEmitter {

+

+    void setVersion(int version, boolean ext, boolean pack);

+    void emitCode(CFunc cfunc, String original);

+    void addNativeRegistration(String fname);

+    void emitNativeRegistration();

+}

diff --git a/opengl/tools/glgen/src/GenerateGL.java b/opengl/tools/glgen/src/GenerateGL.java
new file mode 100644
index 0000000..657ee6e
--- /dev/null
+++ b/opengl/tools/glgen/src/GenerateGL.java
@@ -0,0 +1,164 @@
+

+import java.io.*;

+import java.util.*;

+

+public class GenerateGL {

+

+    static void copy(String filename, PrintStream out) throws IOException {

+        BufferedReader br = new BufferedReader(new FileReader(filename));

+        String s;

+        while ((s = br.readLine()) != null) {

+            out.println(s);

+        }

+    }

+

+    private static void emit(int version, boolean ext, boolean pack,

+                             CodeEmitter emitter,

+                             BufferedReader specReader,

+                             PrintStream glStream,

+                             PrintStream glImplStream,

+                             PrintStream cStream) throws Exception {

+        String s = null;

+        int counter = 0;

+        while ((s = specReader.readLine()) != null) {

+            if (s.trim().startsWith("//")) {

+                continue;

+            }

+

+            CFunc cfunc = CFunc.parseCFunc(s);

+

+            String fname = cfunc.getName();

+            File f = new File("stubs/" + fname +

+                              ".java-1" + version + "-if");

+            if (f.exists()) {

+                System.out.println("Special-casing function " + fname);

+                copy("stubs/" + fname +

+                     ".java-1" + version + "-if", glStream);

+                copy("stubs/" + fname + ".java-impl", glImplStream);

+                copy("stubs/" + fname + ".cpp", cStream);

+

+                // Register native function names

+                // This should be improved to require fewer discrete files

+                String filename = "stubs/" + fname + ".nativeReg";

+                BufferedReader br =

+                    new BufferedReader(new FileReader(filename));

+                String nfunc;

+                while ((nfunc = br.readLine()) != null) {

+                    emitter.addNativeRegistration(nfunc);

+                }

+            } else {

+                emitter.setVersion(version, ext, pack);

+                emitter.emitCode(cfunc, s);

+            }

+        }

+    }

+

+    public static void main(String[] args) throws Exception {

+        String classPathName = "com/google/android/gles_jni/GLImpl";

+        boolean useContextPointer = true;

+

+        int aidx = 0;

+        while (args[aidx].charAt(0) == '-') {

+            switch (args[aidx].charAt(1)) {

+            case 'c':

+                useContextPointer = false;

+                break;

+

+            default:

+                System.err.println("Unknown flag: " + args[aidx]);

+                System.exit(1);

+            }

+

+            aidx++;

+        }

+

+        System.out.println("useContextPointer = " + useContextPointer);

+

+        BufferedReader spec10Reader =

+            new BufferedReader(new FileReader(args[aidx++]));

+        BufferedReader spec10ExtReader =

+            new BufferedReader(new FileReader(args[aidx++]));

+        BufferedReader spec11Reader =

+            new BufferedReader(new FileReader(args[aidx++]));

+        BufferedReader spec11ExtReader =

+            new BufferedReader(new FileReader(args[aidx++]));

+        BufferedReader spec11ExtPackReader =

+            new BufferedReader(new FileReader(args[aidx++]));

+        BufferedReader checksReader =

+            new BufferedReader(new FileReader(args[aidx++]));

+

+        String gl10Filename = "javax/microedition/khronos/opengles/GL10.java";

+        String gl10ExtFilename =

+            "javax/microedition/khronos/opengles/GL10Ext.java";

+        String gl11Filename = "javax/microedition/khronos/opengles/GL11.java";

+        String gl11ExtFilename =

+            "javax/microedition/khronos/opengles/GL11Ext.java";

+        String gl11ExtPackFilename =

+            "javax/microedition/khronos/opengles/GL11ExtensionPack.java";

+        String glImplFilename = "com/google/android/gles_jni/GLImpl.java";

+        String cFilename = "com_google_android_gles_jni_GLImpl.cpp";

+

+        PrintStream gl10Stream =

+            new PrintStream(new FileOutputStream("out/" + gl10Filename));

+        PrintStream gl10ExtStream =

+            new PrintStream(new FileOutputStream("out/" + gl10ExtFilename));

+        PrintStream gl11Stream =

+            new PrintStream(new FileOutputStream("out/" + gl11Filename));

+        PrintStream gl11ExtStream =

+            new PrintStream(new FileOutputStream("out/" + gl11ExtFilename));

+        PrintStream gl11ExtPackStream =

+            new PrintStream(new FileOutputStream("out/" + gl11ExtPackFilename));

+        PrintStream glImplStream =

+            new PrintStream(new FileOutputStream("out/" + glImplFilename));

+        PrintStream cStream =

+            new PrintStream(new FileOutputStream("out/" + cFilename));

+

+        ParameterChecker checker = new ParameterChecker(checksReader);

+

+        CodeEmitter emitter =

+            new JniCodeEmitter(classPathName,

+                               checker,

+                               gl10Stream, gl10ExtStream,

+                               gl11Stream, gl11ExtStream, gl11ExtPackStream,

+                               glImplStream, cStream,

+                               useContextPointer);

+

+        gl10Stream.println("/* //device/java/android/" + gl10Filename);

+        gl10ExtStream.println("/* //device/java/android/" + gl10ExtFilename);

+        gl11Stream.println("/* //device/java/android/" + gl11Filename);

+        gl11ExtStream.println("/* //device/java/android/" + gl11ExtFilename);

+        gl11ExtPackStream.println("/* //device/java/android/" +

+            gl11ExtPackFilename);

+        glImplStream.println("/* //device/java/android/" + glImplFilename);

+        cStream.println("/* //device/libs/android_runtime/" + cFilename);

+

+        copy("stubs/GL10Header.java-if", gl10Stream);

+        copy("stubs/GL10ExtHeader.java-if", gl10ExtStream);

+        copy("stubs/GL11Header.java-if", gl11Stream);

+        copy("stubs/GL11ExtHeader.java-if", gl11ExtStream);

+        copy("stubs/GL11ExtensionPackHeader.java-if", gl11ExtPackStream);

+        copy("stubs/GLImplHeader.java-impl", glImplStream);

+        copy("stubs/GLCHeader.cpp", cStream);

+

+        emit(0, false, false,

+             emitter, spec10Reader, gl10Stream, glImplStream, cStream);

+        emit(0, true, false,

+             emitter, spec10ExtReader, gl10ExtStream, glImplStream, cStream);

+        emit(1, false, false,

+             emitter, spec11Reader, gl11Stream, glImplStream, cStream);

+        emit(1, true, false,

+             emitter, spec11ExtReader, gl11ExtStream, glImplStream, cStream);

+        emit(1, true, true,

+             emitter, spec11ExtPackReader, gl11ExtPackStream, glImplStream,

+             cStream);

+

+        emitter.emitNativeRegistration();

+

+        gl10Stream.println("}");

+        gl10ExtStream.println("}");

+        gl11Stream.println("}");

+        gl11ExtStream.println("}");

+        gl11ExtPackStream.println("}");

+        glImplStream.println("}");

+    }

+}

diff --git a/opengl/tools/glgen/src/JFunc.java b/opengl/tools/glgen/src/JFunc.java
new file mode 100644
index 0000000..42d466c
--- /dev/null
+++ b/opengl/tools/glgen/src/JFunc.java
@@ -0,0 +1,148 @@
+

+import java.util.ArrayList;

+import java.util.List;

+

+public class JFunc {

+

+    String className = "com.google.android.gles_jni.GL11Impl";

+

+    CFunc cfunc;

+    JType ftype;

+    String fname;

+

+    List<String> argNames = new ArrayList<String>();

+    List<JType> argTypes = new ArrayList<JType>();

+    List<Integer> argCIndices = new ArrayList<Integer>();

+

+    boolean hasBufferArg = false;

+    boolean hasTypedBufferArg = false;

+    ArrayList<String> bufferArgNames = new ArrayList<String>();

+

+    public JFunc(CFunc cfunc) {

+        this.cfunc = cfunc;

+    }

+

+    public CFunc getCFunc() {

+        return cfunc;

+    }

+

+    public void setName(String fname) {

+        this.fname = fname;

+    }

+

+    public String getName() {

+        return fname;

+    }

+

+    public void setType(JType ftype) {

+        this.ftype = ftype;

+    }

+

+    public JType getType() {

+        return ftype;

+    }

+

+    public void setClassName(String className) {

+        this.className = className;

+    }

+

+    public String getClassName() {

+        return className;

+    }

+    

+    public boolean hasBufferArg() {

+        return hasBufferArg;

+    }

+

+    public boolean hasTypedBufferArg() {

+        return hasTypedBufferArg;

+    }

+

+    public String getBufferArgName(int index) {

+        return bufferArgNames.get(index);

+    }

+

+    public void addArgument(String argName, JType argType, int cindex) {

+        argNames.add(argName);

+        argTypes.add(argType);

+        argCIndices.add(new Integer(cindex));

+

+        if (argType.isBuffer()) {

+            hasBufferArg = true;

+            bufferArgNames.add(argName);

+        }

+        if (argType.isTypedBuffer()) {

+            hasTypedBufferArg = true;

+            bufferArgNames.add(argName);

+        }

+    }

+

+    public int getNumArgs() {

+        return argNames.size();

+    }

+

+    public int getArgIndex(String name) {

+        int len = argNames.size();

+        for (int i = 0; i < len; i++) {

+            if (name.equals(argNames.get(i))) {

+                return i;

+            }

+        }

+        return -1;

+    }

+

+    public String getArgName(int index) {

+        return argNames.get(index);

+    }

+

+    public JType getArgType(int index) {

+        return argTypes.get(index);

+    }

+

+    public int getArgCIndex(int index) {

+        return argCIndices.get(index).intValue();

+    }

+

+    public static JFunc convert(CFunc cfunc, boolean useArray) {

+        JFunc jfunc = new JFunc(cfunc);

+        jfunc.setName(cfunc.getName());

+        jfunc.setType(JType.convert(cfunc.getType(), false));

+	

+        int numArgs = cfunc.getNumArgs();

+        int numOffsets = 0;

+        for (int i = 0; i < numArgs; i++) {

+            CType cArgType = cfunc.getArgType(i);

+            if (cArgType.isTypedPointer() && useArray) {

+                ++numOffsets;

+            }

+        }

+

+        for (int i = 0; i < numArgs; i++) {

+            String cArgName = cfunc.getArgName(i);

+            CType cArgType = cfunc.getArgType(i);

+

+            jfunc.addArgument(cArgName, JType.convert(cArgType, useArray), i);

+            if (cArgType.isTypedPointer() && useArray) {

+                if (numOffsets > 1) {

+                    jfunc.addArgument(cArgName + "Offset", new JType("int"), i);

+                } else {

+                    jfunc.addArgument("offset", new JType("int"), i);

+                }

+            }

+        }

+

+        return jfunc;

+    }

+

+    public String toString() {

+        String s =  "Function " + fname + " returns " + ftype + ": ";

+        for (int i = 0; i < argNames.size(); i++) {

+            if (i > 0) {

+                s += ", ";

+            }

+            s += argTypes.get(i) + " " + argNames.get(i);

+        }

+        return s;

+    }

+

+}

diff --git a/opengl/tools/glgen/src/JType.java b/opengl/tools/glgen/src/JType.java
new file mode 100644
index 0000000..a16d440
--- /dev/null
+++ b/opengl/tools/glgen/src/JType.java
@@ -0,0 +1,139 @@
+

+import java.util.HashMap;

+

+public class JType {

+    

+    String baseType;

+    boolean isArray;

+    boolean isClass;

+

+    static HashMap<CType,JType> typeMapping = new HashMap<CType,JType>();

+    static HashMap<CType,JType> arrayTypeMapping = new HashMap<CType,JType>();

+

+    static {

+	// Primitive types

+	typeMapping.put(new CType("GLbitfield"), new JType("int"));

+	typeMapping.put(new CType("GLboolean"), new JType("boolean"));

+	typeMapping.put(new CType("GLclampf"), new JType("float"));

+	typeMapping.put(new CType("GLclampx"), new JType("int"));

+	typeMapping.put(new CType("GLenum"), new JType("int"));

+	typeMapping.put(new CType("GLfloat"), new JType("float"));

+	typeMapping.put(new CType("GLfixed"), new JType("int"));

+	typeMapping.put(new CType("GLint"), new JType("int"));

+	typeMapping.put(new CType("GLintptr"), new JType("int"));

+	typeMapping.put(new CType("GLshort"), new JType("short"));

+	typeMapping.put(new CType("GLsizei"), new JType("int"));

+	typeMapping.put(new CType("GLsizeiptr"), new JType("int"));

+	typeMapping.put(new CType("GLubyte"), new JType("byte"));

+	typeMapping.put(new CType("GLuint"), new JType("int"));

+	typeMapping.put(new CType("void"), new JType("void"));

+	typeMapping.put(new CType("GLubyte", true, true), new JType("String"));

+

+	// Untyped pointers map to untyped Buffers

+	typeMapping.put(new CType("GLvoid", true, true),

+			new JType("java.nio.Buffer", true, false));

+	typeMapping.put(new CType("GLvoid", false, true),

+			new JType("java.nio.Buffer", true, false));

+	typeMapping.put(new CType("void", false, true),

+			new JType("java.nio.Buffer", true, false));

+

+	// Typed pointers map to typed Buffers

+	typeMapping.put(new CType("GLboolean", false, true),

+			new JType("java.nio.IntBuffer", true, false));

+	typeMapping.put(new CType("GLfixed", false, true),

+			new JType("java.nio.IntBuffer", true, false));

+	typeMapping.put(new CType("GLfixed", true, true),

+			new JType("java.nio.IntBuffer", true, false));

+	typeMapping.put(new CType("GLfloat", false, true),

+			new JType("java.nio.FloatBuffer", true, false));

+	typeMapping.put(new CType("GLfloat", true, true),

+			new JType("java.nio.FloatBuffer", true, false));

+	typeMapping.put(new CType("GLint", false, true),

+			new JType("java.nio.IntBuffer", true, false));

+	typeMapping.put(new CType("GLint", true, true),

+			new JType("java.nio.IntBuffer", true, false));

+	typeMapping.put(new CType("GLuint", false, true),

+			new JType("java.nio.IntBuffer", true, false));

+	typeMapping.put(new CType("GLuint", true, true),

+			new JType("java.nio.IntBuffer", true, false));

+	typeMapping.put(new CType("GLshort", true, true),

+			new JType("java.nio.ShortBuffer", true, false));

+

+	// Typed pointers map to arrays + offsets

+	arrayTypeMapping.put(new CType("GLboolean", false, true),

+			     new JType("boolean", false, true));

+	arrayTypeMapping.put(new CType("GLfixed", true, true), new JType("int", false, true));

+	arrayTypeMapping.put(new CType("GLfixed", false, true), new JType("int", false, true));

+	arrayTypeMapping.put(new CType("GLfloat", false, true), new JType("float", false, true));

+	arrayTypeMapping.put(new CType("GLfloat", true, true), new JType("float", false, true));

+	arrayTypeMapping.put(new CType("GLint", false, true), new JType("int", false, true));

+	arrayTypeMapping.put(new CType("GLint", true, true), new JType("int", false, true));

+	arrayTypeMapping.put(new CType("GLshort", true, true), new JType("short", false, true));

+	arrayTypeMapping.put(new CType("GLuint", false, true), new JType("int", false, true));

+	arrayTypeMapping.put(new CType("GLuint", true, true), new JType("int", false, true));

+	arrayTypeMapping.put(new CType("GLintptr"), new JType("int", false, true));

+	arrayTypeMapping.put(new CType("GLsizeiptr"), new JType("int", false, true));

+    }

+

+    public JType() {

+    }

+

+    public JType(String primitiveTypeName) {

+	this.baseType = primitiveTypeName;

+	this.isClass = false;

+	this.isArray = false;

+    }

+

+    public JType(String primitiveTypeName, boolean isClass, boolean isArray) {

+	this.baseType = primitiveTypeName;

+	this.isClass = isClass;

+	this.isArray = isArray;

+    }

+

+    public String getBaseType() {

+	return baseType;

+    }

+

+    public String toString() {

+	return baseType + (isArray ? "[]" : "");

+    }

+

+    public boolean isArray() {

+	return isArray;

+    }

+

+    public boolean isClass() {

+	return isClass;

+    }

+

+    public boolean isPrimitive() {

+	return !isClass() && !isArray();

+    }

+

+    public boolean isVoid() {

+	return baseType.equals("void");

+    }

+

+    public boolean isBuffer() {

+	return baseType.indexOf("Buffer") != -1;

+    }

+

+    public boolean isTypedBuffer() {

+	return !baseType.equals("java.nio.Buffer") &&

+	    (baseType.indexOf("Buffer") != -1);

+    }

+

+    public static JType convert(CType ctype, boolean useArray) {

+ 	JType javaType = null;

+ 	if (useArray) {

+ 	    javaType = arrayTypeMapping.get(ctype);

+ 	}

+ 	if (javaType == null) {

+ 	    javaType = typeMapping.get(ctype);

+ 	}

+ 	if (javaType == null) {

+ 	    throw new RuntimeException("Unsupported C type: " + ctype);

+ 	}

+ 	return javaType;

+    }

+}

diff --git a/opengl/tools/glgen/src/JniCodeEmitter.java b/opengl/tools/glgen/src/JniCodeEmitter.java
new file mode 100644
index 0000000..33b9a3e
--- /dev/null
+++ b/opengl/tools/glgen/src/JniCodeEmitter.java
@@ -0,0 +1,1086 @@
+import java.io.PrintStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Emits a Java interface and Java & C implementation for a C function.
+ *
+ * <p> The Java interface will have Buffer and array variants for functions that
+ * have a typed pointer argument.  The array variant will convert a single "<type> *data"
+ * argument to a pair of arguments "<type>[] data, int offset".
+ */
+public class JniCodeEmitter implements CodeEmitter {
+
+    // If true, use C++ style for calling through a JNIEnv *:
+    // env->Func(...)
+    // If false, use C style:
+    // (*env)->Func(env, ...)
+    static final boolean mUseCPlusPlus = true;
+
+    boolean mUseContextPointer = true;
+
+    String mClassPathName;
+    
+    ParameterChecker mChecker;
+    PrintStream mJava10InterfaceStream;
+    PrintStream mJava10ExtInterfaceStream;
+    PrintStream mJava11InterfaceStream;
+    PrintStream mJava11ExtInterfaceStream;
+    PrintStream mJava11ExtPackInterfaceStream;
+    PrintStream mJavaImplStream;
+    PrintStream mCStream;
+
+    PrintStream mJavaInterfaceStream;
+
+    List<String> nativeRegistrations = new ArrayList<String>();
+
+    boolean needsExit;
+
+    static String indent = "    ";
+
+    HashSet<String> mFunctionsEmitted = new HashSet<String>();
+
+    /**
+     * @param java10InterfaceStream the PrintStream to which to emit the Java interface for GL 1.0 functions
+     * @param java10ExtInterfaceStream the PrintStream to which to emit the Java interface for GL 1.0 extension functions
+     * @param java11InterfaceStream the PrintStream to which to emit the Java interface for GL 1.1 functions 
+     * @param java11ExtInterfaceStream the PrintStream to which to emit the Java interface for GL 1.1 Extension functions
+     * @param java11ExtPackInterfaceStream the PrintStream to which to emit the Java interface for GL 1.1 Extension Pack functions
+     * @param javaImplStream the PrintStream to which to emit the Java implementation
+     * @param cStream the PrintStream to which to emit the C implementation
+     */
+    public JniCodeEmitter(String classPathName,
+                          ParameterChecker checker,
+                          PrintStream java10InterfaceStream,
+                          PrintStream java10ExtInterfaceStream,
+                          PrintStream java11InterfaceStream,
+                          PrintStream java11ExtInterfaceStream,
+                          PrintStream java11ExtPackInterfaceStream,
+                          PrintStream javaImplStream,
+                          PrintStream cStream,
+                          boolean useContextPointer) {
+        mClassPathName = classPathName;
+        mChecker = checker;
+        mJava10InterfaceStream = java10InterfaceStream;
+        mJava10ExtInterfaceStream = java10ExtInterfaceStream;
+        mJava11InterfaceStream = java11InterfaceStream;
+        mJava11ExtInterfaceStream = java11ExtInterfaceStream;
+        mJava11ExtPackInterfaceStream = java11ExtPackInterfaceStream;
+        mJavaImplStream = javaImplStream;
+        mCStream = cStream;
+        mUseContextPointer = useContextPointer;
+    }
+
+    public void setVersion(int version, boolean ext, boolean pack) {
+        if (version == 0) {
+            mJavaInterfaceStream = ext ? mJava10ExtInterfaceStream :
+                mJava10InterfaceStream;
+        } else if (version == 1) {
+            mJavaInterfaceStream = ext ?
+                (pack ? mJava11ExtPackInterfaceStream :
+                 mJava11ExtInterfaceStream) :
+                mJava11InterfaceStream;
+        } else {
+            throw new RuntimeException("Bad version: " + version);
+        }
+    }
+
+    public void emitCode(CFunc cfunc, String original) {
+        JFunc jfunc;
+        String signature;
+        boolean duplicate;
+        
+        if (cfunc.hasTypedPointerArg()) {
+            jfunc = JFunc.convert(cfunc, true);
+
+            // Don't emit duplicate functions
+            // These may appear because they are defined in multiple
+            // Java interfaces (e.g., GL11/GL11ExtensionPack)
+            signature = jfunc.toString();
+            duplicate = false;
+            if (mFunctionsEmitted.contains(signature)) {
+                duplicate = true;
+            } else {
+                mFunctionsEmitted.add(signature);
+            }
+
+            if (!duplicate) {
+                emitNativeDeclaration(jfunc, mJavaImplStream);
+                emitJavaCode(jfunc, mJavaImplStream);
+            }
+            emitJavaInterfaceCode(jfunc, mJavaInterfaceStream);
+            if (!duplicate) {
+                emitJniCode(jfunc, mCStream);
+            }
+        }
+
+        jfunc = JFunc.convert(cfunc, false);
+
+        signature = jfunc.toString();
+        duplicate = false;
+        if (mFunctionsEmitted.contains(signature)) {
+            duplicate = true;
+        } else {
+            mFunctionsEmitted.add(signature);
+        }
+
+        if (!duplicate) {
+            emitNativeDeclaration(jfunc, mJavaImplStream);
+        }
+        emitJavaInterfaceCode(jfunc, mJavaInterfaceStream);
+        if (!duplicate) {
+            emitJavaCode(jfunc, mJavaImplStream);
+            emitJniCode(jfunc, mCStream);
+        }
+    }
+
+    public void emitNativeDeclaration(JFunc jfunc, PrintStream out) {
+        out.println("    // C function " + jfunc.getCFunc().getOriginal());
+        out.println();
+
+        emitFunction(jfunc, out, true, false);
+    }
+
+    public void emitJavaInterfaceCode(JFunc jfunc, PrintStream out) {
+        emitFunction(jfunc, out, false, true);
+    }
+
+    public void emitJavaCode(JFunc jfunc, PrintStream out) {
+        emitFunction(jfunc, out, false, false);
+    }
+    
+    void emitFunctionCall(JFunc jfunc, PrintStream out, String iii, boolean grabArray ) {
+        boolean isVoid = jfunc.getType().isVoid();
+        boolean isPointerFunc = jfunc.getName().endsWith("Pointer") &&
+            jfunc.getCFunc().hasPointerArg();
+
+        if (!isVoid) {
+            out.println(iii +
+                        jfunc.getType() + " _returnValue;");
+        }
+        out.println(iii +
+                    (isVoid ? "" : "_returnValue = ") +
+                    jfunc.getName() +
+                    (isPointerFunc ? "Bounds" : "" ) +
+                    "(");
+	
+        int numArgs = jfunc.getNumArgs();
+        for (int i = 0; i < numArgs; i++) {
+            String argName = jfunc.getArgName(i);
+            JType argType = jfunc.getArgType(i);
+
+            if (grabArray && argType.isTypedBuffer()) {
+                String typeName = argType.getBaseType();
+                typeName = typeName.substring(9, typeName.length() - 6);
+                out.println(iii + indent + "get" + typeName + "Array(" + argName + "),");
+                out.print(iii + indent + "getOffset(" + argName + ")"); 
+            } else {
+                out.print(iii + indent + argName);
+            }
+            if (i == numArgs - 1) {
+                if (isPointerFunc) {
+                    out.println(",");
+                    out.println(iii + indent + argName + ".remaining()");
+                } else {
+                    out.println();
+                }
+            } else {
+                out.println(",");
+            }
+        }
+	
+        out.println(iii + ");");
+    }
+
+    void printIfcheckPostamble(PrintStream out, boolean isBuffer,
+                               boolean emitExceptionCheck, String iii) {
+        printIfcheckPostamble(out, isBuffer, emitExceptionCheck,
+                              "offset", "_remaining", iii);
+    }
+
+    void printIfcheckPostamble(PrintStream out, boolean isBuffer,
+                               boolean emitExceptionCheck,
+                               String offset, String remaining, String iii) {
+        out.println(iii + "    default:");
+        out.println(iii + "        _needed = 0;");
+        out.println(iii + "        break;");
+        out.println(iii + "}");
+
+        out.println(iii + "if (" + remaining + " < _needed) {");
+        if (emitExceptionCheck) {
+            out.println(iii + indent + "_exception = 1;");
+        }
+        out.println(iii + indent +
+                    (mUseCPlusPlus ? "_env" : "(*_env)") +
+                    "->ThrowNew(" +
+                    (mUseCPlusPlus ? "" : "_env, ") +
+                    "IAEClass, " +
+                    "\"" +
+                    (isBuffer ? 
+                     "remaining()" : "length - " + offset) +
+                    " < needed\");");
+        out.println(iii + indent + "goto exit;");
+        needsExit = true;
+        out.println(iii + "}");
+    }
+
+    boolean isNullAllowed(CFunc cfunc) {
+        String[] checks = mChecker.getChecks(cfunc.getName());
+        int index = 1;
+        if (checks != null) {
+            while (index < checks.length) {
+                if (checks[index].equals("return")) {
+                    index += 2;
+                } else if (checks[index].startsWith("check")) {
+                    index += 3;
+                } else if (checks[index].equals("ifcheck")) {
+                    index += 5;
+                } else if (checks[index].equals("unsupported")) {
+                    index += 1;
+                } else if (checks[index].equals("nullAllowed")) {
+                    return true;
+                } else {
+                    System.out.println("Error: unknown keyword \"" +
+                                       checks[index] + "\"");
+                    System.exit(0);
+                }
+            }
+        }
+        return false;
+    }
+
+    String getErrorReturnValue(CFunc cfunc) {
+        CType returnType = cfunc.getType();
+        boolean isVoid = returnType.isVoid();
+        if (isVoid) {
+            return null;
+        }
+
+        String[] checks = mChecker.getChecks(cfunc.getName());
+
+        int index = 1;
+        if (checks != null) {
+            while (index < checks.length) {
+                if (checks[index].equals("return")) {
+                    return checks[index + 1];
+                } else if (checks[index].startsWith("check")) {
+                    index += 3;
+                } else if (checks[index].equals("ifcheck")) {
+                    index += 5;
+                } else if (checks[index].equals("unsupported")) {
+                    index += 1;
+                } else if (checks[index].equals("nullAllowed")) {
+                    index += 1;
+                } else {
+                    System.out.println("Error: unknown keyword \"" +
+                                       checks[index] + "\"");
+                    System.exit(0);
+                }
+            }
+        }
+
+        return null;
+    }
+
+    boolean isUnsupportedFunc(CFunc cfunc) {
+        String[] checks = mChecker.getChecks(cfunc.getName());
+        int index = 1;
+        if (checks != null) {
+            while (index < checks.length) {
+                if (checks[index].equals("unsupported")) {
+                    return true;
+                } else if (checks[index].equals("return")) {
+                    index += 2;
+                } else if (checks[index].startsWith("check")) {
+                    index += 3;
+                } else if (checks[index].equals("ifcheck")) {
+                    index += 5;
+                } else if (checks[index].equals("nullAllowed")) {
+                    index += 1;
+                } else {
+                    System.out.println("Error: unknown keyword \"" +
+                                       checks[index] + "\"");
+                    System.exit(0);
+                }
+            }
+        }
+        return false;
+    }
+
+    void emitNativeBoundsChecks(CFunc cfunc, String cname, PrintStream out,
+                                boolean isBuffer, boolean emitExceptionCheck,
+                                String offset, String remaining, String iii) {
+        CType returnType = cfunc.getType();
+        boolean isVoid = returnType.isVoid();
+
+        String[] checks = mChecker.getChecks(cfunc.getName());
+        String checkVar;
+        String retval = getErrorReturnValue(cfunc);
+
+        boolean lastWasIfcheck = false;
+
+        int index = 1;
+        if (checks != null) {
+            boolean remainingDeclared = false;
+            boolean nullCheckDeclared = false;
+            boolean offsetChecked = false;
+            while (index < checks.length) {
+                if (checks[index].startsWith("check")) {
+                    if (lastWasIfcheck) {
+                        printIfcheckPostamble(out, isBuffer, emitExceptionCheck,
+                                              offset, remaining, iii);
+                    }
+                    lastWasIfcheck = false;
+                    if (cname != null && !cname.equals(checks[index + 1])) {
+                        index += 3;
+                        continue;
+                    }
+                    out.println(iii + "if (" + remaining + " < " +
+                                checks[index + 2] +
+                                ") {");
+                    if (emitExceptionCheck) {
+                        out.println(iii + indent + "_exception = 1;");
+                    }
+		    String exceptionClassName = "IAEClass";
+		    // If the "check" keyword was of the form
+		    // "check_<class name>", use the class name in the
+		    // exception to be thrown
+		    int underscore = checks[index].indexOf('_');
+		    if (underscore >= 0) {
+			exceptionClassName = checks[index].substring(underscore + 1) + "Class";
+		    }
+                    out.println(iii + indent +
+                                (mUseCPlusPlus ? "_env" : "(*_env)") +
+                                "->ThrowNew(" +
+                                (mUseCPlusPlus ? "" : "_env, ") +
+				exceptionClassName + ", " +
+                                "\"" +
+                                (isBuffer ? 
+                                 "remaining()" : "length - " + offset) +
+                                " < " + checks[index + 2] +
+                                "\");");
+
+                    out.println(iii + indent + "goto exit;");
+                    needsExit = true;
+                    out.println(iii + "}");
+                
+                    index += 3;
+                } else if (checks[index].equals("ifcheck")) {
+                    String[] matches = checks[index + 4].split(",");
+
+                    if (!lastWasIfcheck) {
+                        out.println(iii + "int _needed;");
+                        out.println(iii +
+                                    "switch (" +
+                                    checks[index + 3] +
+                                    ") {");
+                    }
+                    
+                    for (int i = 0; i < matches.length; i++) {
+                        out.println("#if defined(" + matches[i] + ")");
+                        out.println(iii +
+                                    "    case " +
+                                    matches[i] +
+                                    ":");
+                        out.println("#endif // defined(" + matches[i] + ")");
+                    }
+                    out.println(iii +
+                                "        _needed = " +
+                                checks[index + 2] +
+                                ";");
+                    out.println(iii +
+                                "        break;");
+                
+                    lastWasIfcheck = true;
+                    index += 5;
+                } else if (checks[index].equals("return")) {
+                    // ignore
+                    index += 2;
+                } else if (checks[index].equals("unsupported")) {
+                    // ignore
+                    index += 1;
+                } else if (checks[index].equals("nullAllowed")) {
+                    // ignore
+                    index += 1;
+                } else {
+                    System.out.println("Error: unknown keyword \"" +
+                                       checks[index] + "\"");
+                    System.exit(0);
+                }
+            }
+        }
+
+        if (lastWasIfcheck) {
+            printIfcheckPostamble(out, isBuffer, emitExceptionCheck, iii);
+        }
+    }
+
+    boolean hasNonConstArg(JFunc jfunc, CFunc cfunc,
+        List<Integer> nonPrimitiveArgs) {
+        if (nonPrimitiveArgs.size() > 0) {
+            for (int i = nonPrimitiveArgs.size() - 1; i >= 0; i--) {
+                int idx = nonPrimitiveArgs.get(i).intValue();
+                int cIndex = jfunc.getArgCIndex(idx);
+                if (jfunc.getArgType(idx).isArray()) {
+                    if (!cfunc.getArgType(cIndex).isConst()) {
+                        return true;
+                    }
+                } else if (jfunc.getArgType(idx).isBuffer()) {
+                    if (!cfunc.getArgType(cIndex).isConst()) {
+                        return true;
+                    }
+                }
+            }
+        }
+
+        return false;
+    }
+    
+    /**
+     * Emit a function in several variants:
+     *
+     * if nativeDecl: public native <returntype> func(args);
+     *
+     * if !nativeDecl:
+     *   if interfaceDecl:  public <returntype> func(args);
+     *   if !interfaceDecl: public <returntype> func(args) { body }
+     */
+    void emitFunction(JFunc jfunc,
+                      PrintStream out,
+                      boolean nativeDecl, boolean interfaceDecl) {
+        boolean isPointerFunc =
+            jfunc.getName().endsWith("Pointer") &&
+            jfunc.getCFunc().hasPointerArg();
+
+        if (!nativeDecl && !interfaceDecl && !isPointerFunc) {
+            // If it's not a pointer function, we've already emitted it
+            // with nativeDecl == true
+            return;
+        }
+
+        if (isPointerFunc) {
+            out.println(indent +
+                        (nativeDecl ? "private native " :
+                         (interfaceDecl ? "" : "public ")) +
+                        jfunc.getType() + " " +
+                        jfunc.getName() +
+                        (nativeDecl ? "Bounds" : "") +
+                        "(");
+        } else {
+            out.println(indent +
+                        (nativeDecl ? "public native " :
+                         (interfaceDecl ? "" : "public ")) +
+                        jfunc.getType() + " " +
+                        jfunc.getName() +
+                        "(");
+        }
+	
+        int numArgs = jfunc.getNumArgs();
+        for (int i = 0; i < numArgs; i++) {
+            String argName = jfunc.getArgName(i);
+            JType argType = jfunc.getArgType(i);
+	    
+            out.print(indent + indent + argType + " " + argName);
+            if (i == numArgs - 1) {
+                if (isPointerFunc && nativeDecl) {
+                    out.println(",");
+                    out.println(indent + indent + "int remaining");
+                } else {
+                    out.println();
+                }
+            } else {
+                out.println(",");
+            }
+        }
+
+        if (nativeDecl || interfaceDecl) {
+            out.println(indent + ");");
+        } else {
+            out.println(indent + ") {");
+
+            String iii = indent + indent;
+
+            String fname = jfunc.getName();
+            if (isPointerFunc) {
+                // TODO - deal with VBO variants
+                if (fname.equals("glColorPointer")) {
+                    out.println(iii + "if ((size == 4) &&");
+                    out.println(iii + "    ((type == GL_FLOAT) ||");
+                    out.println(iii + "     (type == GL_UNSIGNED_BYTE) ||");
+                    out.println(iii + "     (type == GL_FIXED)) &&");
+                    out.println(iii + "    (stride >= 0)) {");
+                    out.println(iii + indent + "_colorPointer = pointer;");
+                    out.println(iii + "}");
+                } else if (fname.equals("glNormalPointer")) {
+                    out.println(iii + "if (((type == GL_FLOAT) ||");
+                    out.println(iii + "     (type == GL_BYTE) ||");
+                    out.println(iii + "     (type == GL_SHORT) ||");
+                    out.println(iii + "     (type == GL_FIXED)) &&");
+                    out.println(iii + "    (stride >= 0)) {");
+                    out.println(iii + indent + "_normalPointer = pointer;");
+                    out.println(iii + "}");
+                } else if (fname.equals("glTexCoordPointer")) {
+                    out.println(iii + "if (((size == 2) ||");
+                    out.println(iii + "     (size == 3) ||");
+                    out.println(iii + "     (size == 4)) &&");
+                    out.println(iii + "    ((type == GL_FLOAT) ||");
+                    out.println(iii + "     (type == GL_BYTE) ||");
+                    out.println(iii + "     (type == GL_SHORT) ||");
+                    out.println(iii + "     (type == GL_FIXED)) &&");
+                    out.println(iii + "    (stride >= 0)) {");
+                    out.println(iii + indent + "_texCoordPointer = pointer;");
+                    out.println(iii + "}");
+                } else if (fname.equals("glVertexPointer")) {
+                    out.println(iii + "if (((size == 2) ||");
+                    out.println(iii + "     (size == 3) ||");
+                    out.println(iii + "     (size == 4)) &&");
+                    out.println(iii + "    ((type == GL_FLOAT) ||");
+                    out.println(iii + "     (type == GL_BYTE) ||");
+                    out.println(iii + "     (type == GL_SHORT) ||");
+                    out.println(iii + "     (type == GL_FIXED)) &&");
+                    out.println(iii + "    (stride >= 0)) {");
+                    out.println(iii + indent + "_vertexPointer = pointer;");
+                    out.println(iii + "}");
+                }
+            }
+
+            // emitBoundsChecks(jfunc, out, iii);
+            emitFunctionCall(jfunc, out, iii, false);
+
+            boolean isVoid = jfunc.getType().isVoid();
+
+            if (!isVoid) {
+                out.println(indent + indent + "return _returnValue;");
+            }
+            out.println(indent + "}");
+        }
+        out.println();
+    }
+
+    public static String getJniName(JType jType) {
+        String jniName = "";
+        if (jType.isClass()) {
+            return "L" + jType.getBaseType() + ";";
+        } else if (jType.isArray()) {
+            jniName = "[";
+        }
+	
+        String baseType = jType.getBaseType();
+        if (baseType.equals("int")) {
+            jniName += "I";
+        } else if (baseType.equals("float")) {
+            jniName += "F";
+        } else if (baseType.equals("boolean")) {
+            jniName += "Z";
+        } else if (baseType.equals("short")) {
+            jniName += "S";
+        } else if (baseType.equals("long")) {
+            jniName += "L";
+        } else if (baseType.equals("byte")) {
+            jniName += "B";
+        }
+        return jniName;
+    }
+
+    String getJniType(JType jType) {
+        if (jType.isVoid()) {
+            return "void";
+        }
+
+        String baseType = jType.getBaseType();
+        if (jType.isPrimitive()) {
+            if (baseType.equals("String")) {
+                return "jstring";
+            } else {
+                return "j" + baseType;
+            }
+        } else if (jType.isArray()) {
+            return "j" + baseType + "Array";
+        } else {
+            return "jobject";
+        }
+    }
+    
+    String getJniMangledName(String name) {
+        name = name.replaceAll("_", "_1");
+        name = name.replaceAll(";", "_2");
+        name = name.replaceAll("\\[", "_3");
+        return name;
+    }
+
+    public void emitJniCode(JFunc jfunc, PrintStream out) {
+        CFunc cfunc = jfunc.getCFunc();
+	
+        // Emit comment identifying original C function
+        //
+        // Example:
+        //
+        // /* void glClipPlanef ( GLenum plane, const GLfloat *equation ) */
+        //
+        out.println("/* " + cfunc.getOriginal() + " */");
+
+        // Emit JNI signature (name)
+        //
+        // Example:
+        //
+        // void
+        // android_glClipPlanef__I_3FI
+        //
+
+        String outName = "android_" + jfunc.getName();
+        boolean isPointerFunc = outName.endsWith("Pointer") &&
+            jfunc.getCFunc().hasPointerArg();
+        boolean isVBOPointerFunc = (outName.endsWith("Pointer") ||
+            outName.endsWith("DrawElements")) &&
+            !jfunc.getCFunc().hasPointerArg();
+        if (isPointerFunc) {
+            outName += "Bounds";
+        }
+
+        out.print("static ");
+        out.println(getJniType(jfunc.getType()));
+        out.print(outName);
+
+        String rsignature = getJniName(jfunc.getType());
+
+        String signature = "";
+        int numArgs = jfunc.getNumArgs();
+        for (int i = 0; i < numArgs; i++) {
+            JType argType = jfunc.getArgType(i);
+            signature += getJniName(argType);
+        }
+        if (isPointerFunc) {
+            signature += "I";
+        }
+
+        // Append signature to function name
+        String sig = getJniMangledName(signature).replace('.', '_');        
+        out.print("__" + sig);
+        outName += "__" + sig;
+	
+        signature = signature.replace('.', '/');
+        rsignature = rsignature.replace('.', '/');
+	
+        out.println();
+        if (rsignature.length() == 0) {
+            rsignature = "V";
+        }
+
+        String s = "{\"" +
+            jfunc.getName() +
+            (isPointerFunc ? "Bounds" : "") +
+            "\", \"(" + signature +")" +
+            rsignature +
+            "\", (void *) " +
+            outName +
+            " },";
+        nativeRegistrations.add(s);
+
+        List<Integer> nonPrimitiveArgs = new ArrayList<Integer>();
+        int numBufferArgs = 0;
+        List<String> bufferArgNames = new ArrayList<String>();
+
+        // Emit JNI signature (arguments)
+        //
+        // Example:
+        //
+        // (JNIEnv *_env, jobject this, jint plane, jfloatArray equation_ref, jint offset) {
+        //
+        out.print("  (JNIEnv *_env, jobject _this");
+        for (int i = 0; i < numArgs; i++) {
+            out.print(", ");
+            JType argType = jfunc.getArgType(i);
+            String suffix;
+            if (!argType.isPrimitive()) {
+                if (argType.isArray()) {
+                    suffix = "_ref";
+                } else {
+                    suffix = "_buf";
+                }
+                nonPrimitiveArgs.add(new Integer(i));
+                if (jfunc.getArgType(i).isBuffer()) {
+                    int cIndex = jfunc.getArgCIndex(i);
+                    String cname = cfunc.getArgName(cIndex);
+                    bufferArgNames.add(cname);
+                    numBufferArgs++;
+                }
+            } else {
+                suffix = "";
+            }
+
+            out.print(getJniType(argType) + " " + jfunc.getArgName(i) + suffix);
+        }
+        if (isPointerFunc) {
+            out.print(", jint remaining");
+        }
+        out.println(") {");
+	
+        int numArrays = 0;
+        int numBuffers = 0;
+        for (int i = 0; i < nonPrimitiveArgs.size(); i++) {
+            int idx = nonPrimitiveArgs.get(i).intValue();
+            int cIndex = jfunc.getArgCIndex(idx);
+            String cname = cfunc.getArgName(cIndex);
+            if (jfunc.getArgType(idx).isArray()) {
+                ++numArrays;
+            }
+            if (jfunc.getArgType(idx).isBuffer()) {
+                ++numBuffers;
+            }
+        }
+
+        // Emit method body
+
+        // Emit local variable declarations for _exception and _returnValue
+        //
+        // Example:
+        //
+        // android::gl::ogles_context_t *ctx;
+        // 
+        // jint _exception;
+        // GLenum _returnValue;
+        //
+        CType returnType = cfunc.getType();
+        boolean isVoid = returnType.isVoid();
+
+        boolean isUnsupported = isUnsupportedFunc(cfunc);
+        if (isUnsupported) {
+            out.println(indent +
+                        "_env->ThrowNew(UOEClass,");
+            out.println(indent +
+                        "    \"" + cfunc.getName() + "\");");
+            if (!isVoid) {
+                String retval = getErrorReturnValue(cfunc);
+                out.println(indent + "return " + retval + ";");
+            }
+            out.println("}");
+            out.println();
+            return;
+        }
+
+        if (mUseContextPointer) {
+            out.println(indent +
+                "android::gl::ogles_context_t *ctx = getContext(_env, _this);");
+        }
+
+        boolean emitExceptionCheck = (numArrays > 0 || numBuffers > 0) &&
+            hasNonConstArg(jfunc, cfunc, nonPrimitiveArgs);
+        // mChecker.getChecks(cfunc.getName()) != null
+
+        // Emit an _exeption variable if there will be error checks
+        if (emitExceptionCheck) {
+            out.println(indent + "jint _exception = 0;");
+        }
+
+        // Emit a single _array or multiple _XXXArray variables
+        if (numBufferArgs == 1) {
+                out.println(indent + "jarray _array = (jarray) 0;");
+        } else {
+            for (int i = 0; i < numBufferArgs; i++) {
+                out.println(indent + "jarray _" + bufferArgNames.get(i) +
+                            "Array = (jarray) 0;");
+            }
+        }
+        if (!isVoid) {
+            String retval = getErrorReturnValue(cfunc);
+            if (retval != null) {
+                out.println(indent + returnType.getDeclaration() +
+                            " _returnValue = " + retval + ";");
+            } else {
+                out.println(indent + returnType.getDeclaration() +
+                            " _returnValue;");
+            }
+        }
+
+        // Emit local variable declarations for pointer arguments
+        //
+        // Example:
+        //
+        // GLfixed *eqn_base;
+        // GLfixed *eqn;
+        //
+        String offset = "offset";
+        String remaining = "_remaining";
+        if (nonPrimitiveArgs.size() > 0) {
+            for (int i = 0; i < nonPrimitiveArgs.size(); i++) {
+                int idx = nonPrimitiveArgs.get(i).intValue();
+                int cIndex = jfunc.getArgCIndex(idx);
+                String cname = cfunc.getArgName(cIndex);
+
+                CType type = cfunc.getArgType(jfunc.getArgCIndex(idx));
+                String decl = type.getDeclaration();
+                if (jfunc.getArgType(idx).isArray()) {
+                    out.println(indent +
+                                decl +
+                                (decl.endsWith("*") ? "" : " ") +
+                                jfunc.getArgName(idx) +
+                                "_base = (" + decl + ") 0;");
+                }
+                remaining = (numArrays <= 1 && numBuffers <= 1) ? "_remaining" :
+                    "_" + cname + "Remaining";
+                out.println(indent +
+                            "jint " + remaining + ";");
+                out.println(indent +
+                            decl +
+                            (decl.endsWith("*") ? "" : " ") +
+                            jfunc.getArgName(idx) + 
+                            " = (" + decl + ") 0;");
+            }
+
+            out.println();
+        }
+
+        String retval = isVoid ? "" : " _returnValue";
+
+        // Emit 'GetPrimitiveArrayCritical' for arrays
+        // Emit 'GetPointer' calls for Buffer pointers
+        int bufArgIdx = 0;
+        if (nonPrimitiveArgs.size() > 0) {
+            for (int i = 0; i < nonPrimitiveArgs.size(); i++) {
+                int idx = nonPrimitiveArgs.get(i).intValue();
+                int cIndex = jfunc.getArgCIndex(idx);
+		
+                String cname = cfunc.getArgName(cIndex);
+                offset = numArrays <= 1 ? "offset" :
+                    cname + "Offset";
+                remaining = (numArrays <= 1 && numBuffers <= 1) ? "_remaining" :
+                    "_" + cname + "Remaining";
+
+                if (jfunc.getArgType(idx).isArray()) {
+                    out.println(indent +
+                                "if (!" + 
+                                cname +
+                                "_ref) {");
+                    if (emitExceptionCheck) {
+                        out.println(indent + indent + "_exception = 1;");
+                    }
+                    out.println(indent + "    " +
+                                (mUseCPlusPlus ? "_env" : "(*_env)") +
+                                "->ThrowNew(" +
+                                (mUseCPlusPlus ? "" : "_env, ") +
+                                "IAEClass, " +
+                                "\"" + cname +
+                                " == null\");");
+                    out.println(indent + "    goto exit;");
+                    needsExit = true;
+                    out.println(indent + "}");
+
+                    out.println(indent + "if (" + offset + " < 0) {");
+                    if (emitExceptionCheck) {
+                        out.println(indent + indent + "_exception = 1;");
+                    }
+                    out.println(indent + "    " +
+                                (mUseCPlusPlus ? "_env" : "(*_env)") +
+                                "->ThrowNew(" +
+                                (mUseCPlusPlus ? "" : "_env, ") +
+                                "IAEClass, " +
+                                "\"" + offset + " < 0\");");
+                    out.println(indent + "    goto exit;");
+                    needsExit = true;
+                    out.println(indent + "}");
+
+                    out.println(indent + remaining + " = " +
+                                    (mUseCPlusPlus ? "_env" : "(*_env)") + 
+                                    "->GetArrayLength(" +
+                                    (mUseCPlusPlus ? "" : "_env, ") +
+                                    cname + "_ref) - " + offset + ";");
+
+                    emitNativeBoundsChecks(cfunc, cname, out, false,
+                                           emitExceptionCheck,
+                                           offset, remaining, "    ");
+
+                    out.println(indent +
+                                cname +
+                                "_base = (" +
+                                cfunc.getArgType(cIndex).getDeclaration() +
+                                ")");
+                    out.println(indent + "    " +
+                                (mUseCPlusPlus ? "_env" : "(*_env)") +
+                                "->GetPrimitiveArrayCritical(" +
+                                (mUseCPlusPlus ? "" : "_env, ") + 
+                                jfunc.getArgName(idx) +
+                                "_ref, (jboolean *)0);");
+                    out.println(indent +
+                                cname + " = " + cname + "_base + " + offset +
+                                ";");
+                    out.println();
+                } else {
+                    String array = numBufferArgs <= 1 ? "_array" :
+                        "_" + bufferArgNames.get(bufArgIdx++) + "Array";
+
+                    boolean nullAllowed = isNullAllowed(cfunc);
+                    if (nullAllowed) {
+                        out.println(indent + "if (" + cname + "_buf) {");
+                        out.print(indent);
+                    }
+                    
+                    out.println(indent +
+                                cname +
+                                " = (" +
+                                cfunc.getArgType(cIndex).getDeclaration() +
+                                ")getPointer(_env, " +
+                                cname +
+                                "_buf, &" + array + ", &" + remaining + ");");
+
+                    if (nullAllowed) {
+                        out.println(indent + "}");
+                    }
+
+                    emitNativeBoundsChecks(cfunc, cname, out, true,
+                                           emitExceptionCheck,
+                                           offset, remaining, "    ");
+                }
+            }
+        }
+
+        if (!isVoid) {
+            out.print(indent + "_returnValue = ");
+        } else {
+            out.print(indent);
+        }
+        String name = cfunc.getName();
+
+        if (mUseContextPointer) {
+            name = name.substring(2, name.length()); // Strip off 'gl' prefix
+            name = name.substring(0, 1).toLowerCase() +
+                name.substring(1, name.length());
+            out.print("ctx->procs.");
+        }
+        
+        out.print(name + (isPointerFunc ? "Bounds" : "") + "(");
+
+        numArgs = cfunc.getNumArgs();    
+        if (numArgs == 0) {
+            if (mUseContextPointer) {
+                out.println("ctx);");
+            } else {
+                out.println(");");
+            }
+        } else {
+            if (mUseContextPointer) {
+                out.println("ctx,");
+            } else {
+                out.println();
+            }
+            for (int i = 0; i < numArgs; i++) {
+                String typecast;
+                if (i == numArgs - 1 && isVBOPointerFunc) {
+                    typecast = "const GLvoid *";
+                } else {
+                    typecast = cfunc.getArgType(i).getDeclaration();
+                }
+                out.print(indent + indent +
+                          "(" +
+                          typecast +
+                          ")" +
+                          cfunc.getArgName(i));
+
+                if (i == numArgs - 1) {
+                    if (isPointerFunc) {
+                        out.println(",");
+                        out.println(indent + indent + "(GLsizei)remaining");
+                    } else {
+                        out.println();
+                    }
+                } else {
+                    out.println(",");
+                }
+            }
+            out.println(indent + ");");
+        }
+
+        if (needsExit) {
+            out.println();
+            out.println("exit:");
+            needsExit = false;
+        }
+
+        bufArgIdx = 0;
+        if (nonPrimitiveArgs.size() > 0) {
+            for (int i = nonPrimitiveArgs.size() - 1; i >= 0; i--) {
+                int idx = nonPrimitiveArgs.get(i).intValue();
+
+                int cIndex = jfunc.getArgCIndex(idx);
+                if (jfunc.getArgType(idx).isArray()) {
+		    
+                    // If the argument is 'const', GL will not write to it.
+                    // In this case, we can use the 'JNI_ABORT' flag to avoid
+                    // the need to write back to the Java array
+                    out.println(indent +
+                                "if (" + jfunc.getArgName(idx) + "_base) {");
+                    out.println(indent + indent +
+                                (mUseCPlusPlus ? "_env" : "(*_env)") +
+                                "->ReleasePrimitiveArrayCritical(" +
+                                (mUseCPlusPlus ? "" : "_env, ") + 
+                                jfunc.getArgName(idx) + "_ref, " +
+                                cfunc.getArgName(cIndex) +
+                                "_base,");
+                    out.println(indent + indent + indent +
+                                (cfunc.getArgType(cIndex).isConst() ?
+                                 "JNI_ABORT" :
+                                 "_exception ? JNI_ABORT: 0") +
+                                ");");
+                    out.println(indent + "}");
+                } else if (jfunc.getArgType(idx).isBuffer()) {
+                    String array = numBufferArgs <= 1 ? "_array" :
+                        "_" + bufferArgNames.get(bufArgIdx++) + "Array";
+                    out.println(indent + "if (" + array + ") {");
+                    out.println(indent + indent +
+                                "releasePointer(_env, " + array + ", " +
+                                cfunc.getArgName(cIndex) +
+                                ", " +
+                                (cfunc.getArgType(cIndex).isConst() ?
+                                 "JNI_FALSE" : "_exception ? JNI_FALSE : JNI_TRUE") +
+                                ");");
+                    out.println(indent + "}");
+                }
+            }
+        }
+
+        if (!isVoid) {
+            out.println(indent + "return _returnValue;");
+        }
+
+        out.println("}");
+        out.println();
+    }
+
+    public void addNativeRegistration(String s) {
+        nativeRegistrations.add(s);
+    }
+
+    public void emitNativeRegistration() {
+        mCStream.println("static const char *classPathName = \"" +
+                        mClassPathName +
+                        "\";");
+        mCStream.println();
+
+        mCStream.println("static JNINativeMethod methods[] = {");
+
+        mCStream.println("{\"_nativeClassInit\", \"()V\", (void*)nativeClassInit },");
+
+        Iterator<String> i = nativeRegistrations.iterator();
+        while (i.hasNext()) {
+            mCStream.println(i.next());
+        }
+
+        mCStream.println("};");
+        mCStream.println();
+    
+
+        mCStream.println("int register_com_google_android_gles_jni_GLImpl(JNIEnv *_env)");
+        mCStream.println("{");
+        mCStream.println(indent +
+                        "int err;");
+
+        mCStream.println(indent +
+                        "err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods));");
+
+        mCStream.println(indent + "return err;");
+        mCStream.println("}");
+    }
+}
diff --git a/opengl/tools/glgen/src/ParameterChecker.java b/opengl/tools/glgen/src/ParameterChecker.java
new file mode 100644
index 0000000..df26acd
--- /dev/null
+++ b/opengl/tools/glgen/src/ParameterChecker.java
@@ -0,0 +1,28 @@
+
+import java.io.BufferedReader;
+import java.util.HashMap;
+
+public class ParameterChecker {
+
+    HashMap<String,String[]> map = new HashMap<String,String[]>();
+
+    public ParameterChecker(BufferedReader reader) throws Exception {
+        String s;
+        while ((s = reader.readLine()) != null) {
+            String[] tokens = s.split("\\s");
+            map.put(tokens[0], tokens);
+        }
+    }
+
+    public String[] getChecks(String functionName) {
+        String[] checks = map.get(functionName);
+        if (checks == null &&
+            (functionName.endsWith("fv") ||
+             functionName.endsWith("xv") ||
+             functionName.endsWith("iv"))) {
+            functionName = functionName.substring(0, functionName.length() - 2);
+            checks = map.get(functionName);
+        }
+        return checks;
+    }
+}
diff --git a/opengl/tools/glgen/stubs/GL10ExtHeader.java-if b/opengl/tools/glgen/stubs/GL10ExtHeader.java-if
new file mode 100644
index 0000000..b0999c2
--- /dev/null
+++ b/opengl/tools/glgen/stubs/GL10ExtHeader.java-if
@@ -0,0 +1,22 @@
+**
+** Copyright 2007, 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.
+*/
+
+// This source file is automatically generated
+
+package javax.microedition.khronos.opengles;
+
+public interface GL10Ext extends GL {
+
diff --git a/opengl/tools/glgen/stubs/GL10Header.java-if b/opengl/tools/glgen/stubs/GL10Header.java-if
new file mode 100644
index 0000000..8392821
--- /dev/null
+++ b/opengl/tools/glgen/stubs/GL10Header.java-if
@@ -0,0 +1,259 @@
+**
+** Copyright 2006, 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.
+*/
+
+// This source file is automatically generated
+
+package javax.microedition.khronos.opengles;
+
+public interface GL10 extends GL {
+    int GL_ADD                                   = 0x0104;
+    int GL_ALIASED_LINE_WIDTH_RANGE              = 0x846E;
+    int GL_ALIASED_POINT_SIZE_RANGE              = 0x846D;
+    int GL_ALPHA                                 = 0x1906;
+    int GL_ALPHA_BITS                            = 0x0D55;
+    int GL_ALPHA_TEST                            = 0x0BC0;
+    int GL_ALWAYS                                = 0x0207;
+    int GL_AMBIENT                               = 0x1200;
+    int GL_AMBIENT_AND_DIFFUSE                   = 0x1602;
+    int GL_AND                                   = 0x1501;
+    int GL_AND_INVERTED                          = 0x1504;
+    int GL_AND_REVERSE                           = 0x1502;
+    int GL_BACK                                  = 0x0405;
+    int GL_BLEND                                 = 0x0BE2;
+    int GL_BLUE_BITS                             = 0x0D54;
+    int GL_BYTE                                  = 0x1400;
+    int GL_CCW                                   = 0x0901;
+    int GL_CLAMP_TO_EDGE                         = 0x812F;
+    int GL_CLEAR                                 = 0x1500;
+    int GL_COLOR_ARRAY                           = 0x8076;
+    int GL_COLOR_BUFFER_BIT                      = 0x4000;
+    int GL_COLOR_LOGIC_OP                        = 0x0BF2;
+    int GL_COLOR_MATERIAL                        = 0x0B57;
+    int GL_COMPRESSED_TEXTURE_FORMATS            = 0x86A3;
+    int GL_CONSTANT_ATTENUATION                  = 0x1207;
+    int GL_COPY                                  = 0x1503;
+    int GL_COPY_INVERTED                         = 0x150C;
+    int GL_CULL_FACE                             = 0x0B44;
+    int GL_CW                                    = 0x0900;
+    int GL_DECAL                                 = 0x2101;
+    int GL_DECR                                  = 0x1E03;
+    int GL_DEPTH_BITS                            = 0x0D56;
+    int GL_DEPTH_BUFFER_BIT                      = 0x0100;
+    int GL_DEPTH_TEST                            = 0x0B71;
+    int GL_DIFFUSE                               = 0x1201;
+    int GL_DITHER                                = 0x0BD0;
+    int GL_DONT_CARE                             = 0x1100;
+    int GL_DST_ALPHA                             = 0x0304;
+    int GL_DST_COLOR                             = 0x0306;
+    int GL_EMISSION                              = 0x1600;
+    int GL_EQUAL                                 = 0x0202;
+    int GL_EQUIV                                 = 0x1509;
+    int GL_EXP                                   = 0x0800;
+    int GL_EXP2                                  = 0x0801;
+    int GL_EXTENSIONS                            = 0x1F03;
+    int GL_FALSE                                 = 0;
+    int GL_FASTEST                               = 0x1101;
+    int GL_FIXED                                 = 0x140C;
+    int GL_FLAT                                  = 0x1D00;
+    int GL_FLOAT                                 = 0x1406;
+    int GL_FOG                                   = 0x0B60;
+    int GL_FOG_COLOR                             = 0x0B66;
+    int GL_FOG_DENSITY                           = 0x0B62;
+    int GL_FOG_END                               = 0x0B64;
+    int GL_FOG_HINT                              = 0x0C54;
+    int GL_FOG_MODE                              = 0x0B65;
+    int GL_FOG_START                             = 0x0B63;
+    int GL_FRONT                                 = 0x0404;
+    int GL_FRONT_AND_BACK                        = 0x0408;
+    int GL_GEQUAL                                = 0x0206;
+    int GL_GREATER                               = 0x0204;
+    int GL_GREEN_BITS                            = 0x0D53;
+    int GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES  = 0x8B9B;
+    int GL_IMPLEMENTATION_COLOR_READ_TYPE_OES    = 0x8B9A;
+    int GL_INCR                                  = 0x1E02;
+    int GL_INVALID_ENUM                          = 0x0500;
+    int GL_INVALID_OPERATION                     = 0x0502;
+    int GL_INVALID_VALUE                         = 0x0501;
+    int GL_INVERT                                = 0x150A;
+    int GL_KEEP                                  = 0x1E00;
+    int GL_LEQUAL                                = 0x0203;
+    int GL_LESS                                  = 0x0201;
+    int GL_LIGHT_MODEL_AMBIENT                   = 0x0B53;
+    int GL_LIGHT_MODEL_TWO_SIDE                  = 0x0B52;
+    int GL_LIGHT0                                = 0x4000;
+    int GL_LIGHT1                                = 0x4001;
+    int GL_LIGHT2                                = 0x4002;
+    int GL_LIGHT3                                = 0x4003;
+    int GL_LIGHT4                                = 0x4004;
+    int GL_LIGHT5                                = 0x4005;
+    int GL_LIGHT6                                = 0x4006;
+    int GL_LIGHT7                                = 0x4007;
+    int GL_LIGHTING                              = 0x0B50;
+    int GL_LINE_LOOP                             = 0x0002;
+    int GL_LINE_SMOOTH                           = 0x0B20;
+    int GL_LINE_SMOOTH_HINT                      = 0x0C52;
+    int GL_LINE_STRIP                            = 0x0003;
+    int GL_LINEAR                                = 0x2601;
+    int GL_LINEAR_ATTENUATION                    = 0x1208;
+    int GL_LINEAR_MIPMAP_LINEAR                  = 0x2703;
+    int GL_LINEAR_MIPMAP_NEAREST                 = 0x2701;
+    int GL_LINES                                 = 0x0001;
+    int GL_LUMINANCE                             = 0x1909;
+    int GL_LUMINANCE_ALPHA                       = 0x190A;
+    int GL_MAX_ELEMENTS_INDICES                  = 0x80E9;
+    int GL_MAX_ELEMENTS_VERTICES                 = 0x80E8;
+    int GL_MAX_LIGHTS                            = 0x0D31;
+    int GL_MAX_MODELVIEW_STACK_DEPTH             = 0x0D36;
+    int GL_MAX_PROJECTION_STACK_DEPTH            = 0x0D38;
+    int GL_MAX_TEXTURE_SIZE                      = 0x0D33;
+    int GL_MAX_TEXTURE_STACK_DEPTH               = 0x0D39;
+    int GL_MAX_TEXTURE_UNITS                     = 0x84E2;
+    int GL_MAX_VIEWPORT_DIMS                     = 0x0D3A;
+    int GL_MODELVIEW                             = 0x1700;
+    int GL_MODULATE                              = 0x2100;
+    int GL_MULTISAMPLE                           = 0x809D;
+    int GL_NAND                                  = 0x150E;
+    int GL_NEAREST                               = 0x2600;
+    int GL_NEAREST_MIPMAP_LINEAR                 = 0x2702;
+    int GL_NEAREST_MIPMAP_NEAREST                = 0x2700;
+    int GL_NEVER                                 = 0x0200;
+    int GL_NICEST                                = 0x1102;
+    int GL_NO_ERROR                              = 0;
+    int GL_NOOP                                  = 0x1505;
+    int GL_NOR                                   = 0x1508;
+    int GL_NORMAL_ARRAY                          = 0x8075;
+    int GL_NORMALIZE                             = 0x0BA1;
+    int GL_NOTEQUAL                              = 0x0205;
+    int GL_NUM_COMPRESSED_TEXTURE_FORMATS        = 0x86A2;
+    int GL_ONE                                   = 1;
+    int GL_ONE_MINUS_DST_ALPHA                   = 0x0305;
+    int GL_ONE_MINUS_DST_COLOR                   = 0x0307;
+    int GL_ONE_MINUS_SRC_ALPHA                   = 0x0303;
+    int GL_ONE_MINUS_SRC_COLOR                   = 0x0301;
+    int GL_OR                                    = 0x1507;
+    int GL_OR_INVERTED                           = 0x150D;
+    int GL_OR_REVERSE                            = 0x150B;
+    int GL_OUT_OF_MEMORY                         = 0x0505;
+    int GL_PACK_ALIGNMENT                        = 0x0D05;
+    int GL_PALETTE4_R5_G6_B5_OES                 = 0x8B92;
+    int GL_PALETTE4_RGB5_A1_OES                  = 0x8B94;
+    int GL_PALETTE4_RGB8_OES                     = 0x8B90;
+    int GL_PALETTE4_RGBA4_OES                    = 0x8B93;
+    int GL_PALETTE4_RGBA8_OES                    = 0x8B91;
+    int GL_PALETTE8_R5_G6_B5_OES                 = 0x8B97;
+    int GL_PALETTE8_RGB5_A1_OES                  = 0x8B99;
+    int GL_PALETTE8_RGB8_OES                     = 0x8B95;
+    int GL_PALETTE8_RGBA4_OES                    = 0x8B98;
+    int GL_PALETTE8_RGBA8_OES                    = 0x8B96;
+    int GL_PERSPECTIVE_CORRECTION_HINT           = 0x0C50;
+    int GL_POINT_SMOOTH                          = 0x0B10;
+    int GL_POINT_SMOOTH_HINT                     = 0x0C51;
+    int GL_POINTS                                = 0x0000;
+    int GL_POINT_FADE_THRESHOLD_SIZE             = 0x8128;
+    int GL_POINT_SIZE                            = 0x0B11;
+    int GL_POLYGON_OFFSET_FILL                   = 0x8037;
+    int GL_POLYGON_SMOOTH_HINT                   = 0x0C53;
+    int GL_POSITION                              = 0x1203;
+    int GL_PROJECTION                            = 0x1701;
+    int GL_QUADRATIC_ATTENUATION                 = 0x1209;
+    int GL_RED_BITS                              = 0x0D52;
+    int GL_RENDERER                              = 0x1F01;
+    int GL_REPEAT                                = 0x2901;
+    int GL_REPLACE                               = 0x1E01;
+    int GL_RESCALE_NORMAL                        = 0x803A;
+    int GL_RGB                                   = 0x1907;
+    int GL_RGBA                                  = 0x1908;
+    int GL_SAMPLE_ALPHA_TO_COVERAGE              = 0x809E;
+    int GL_SAMPLE_ALPHA_TO_ONE                   = 0x809F;
+    int GL_SAMPLE_COVERAGE                       = 0x80A0;
+    int GL_SCISSOR_TEST                          = 0x0C11;
+    int GL_SET                                   = 0x150F;
+    int GL_SHININESS                             = 0x1601;
+    int GL_SHORT                                 = 0x1402;
+    int GL_SMOOTH                                = 0x1D01;
+    int GL_SMOOTH_LINE_WIDTH_RANGE               = 0x0B22;
+    int GL_SMOOTH_POINT_SIZE_RANGE               = 0x0B12;
+    int GL_SPECULAR                              = 0x1202;
+    int GL_SPOT_CUTOFF                           = 0x1206;
+    int GL_SPOT_DIRECTION                        = 0x1204;
+    int GL_SPOT_EXPONENT                         = 0x1205;
+    int GL_SRC_ALPHA                             = 0x0302;
+    int GL_SRC_ALPHA_SATURATE                    = 0x0308;
+    int GL_SRC_COLOR                             = 0x0300;
+    int GL_STACK_OVERFLOW                        = 0x0503;
+    int GL_STACK_UNDERFLOW                       = 0x0504;
+    int GL_STENCIL_BITS                          = 0x0D57;
+    int GL_STENCIL_BUFFER_BIT                    = 0x0400;
+    int GL_STENCIL_TEST                          = 0x0B90;
+    int GL_SUBPIXEL_BITS                         = 0x0D50;
+    int GL_TEXTURE                               = 0x1702;
+    int GL_TEXTURE_2D                            = 0x0DE1;
+    int GL_TEXTURE_COORD_ARRAY                   = 0x8078;
+    int GL_TEXTURE_ENV                           = 0x2300;
+    int GL_TEXTURE_ENV_COLOR                     = 0x2201;
+    int GL_TEXTURE_ENV_MODE                      = 0x2200;
+    int GL_TEXTURE_MAG_FILTER                    = 0x2800;
+    int GL_TEXTURE_MIN_FILTER                    = 0x2801;
+    int GL_TEXTURE_WRAP_S                        = 0x2802;
+    int GL_TEXTURE_WRAP_T                        = 0x2803;
+    int GL_TEXTURE0                              = 0x84C0;
+    int GL_TEXTURE1                              = 0x84C1;
+    int GL_TEXTURE2                              = 0x84C2;
+    int GL_TEXTURE3                              = 0x84C3;
+    int GL_TEXTURE4                              = 0x84C4;
+    int GL_TEXTURE5                              = 0x84C5;
+    int GL_TEXTURE6                              = 0x84C6;
+    int GL_TEXTURE7                              = 0x84C7;
+    int GL_TEXTURE8                              = 0x84C8;
+    int GL_TEXTURE9                              = 0x84C9;
+    int GL_TEXTURE10                             = 0x84CA;
+    int GL_TEXTURE11                             = 0x84CB;
+    int GL_TEXTURE12                             = 0x84CC;
+    int GL_TEXTURE13                             = 0x84CD;
+    int GL_TEXTURE14                             = 0x84CE;
+    int GL_TEXTURE15                             = 0x84CF;
+    int GL_TEXTURE16                             = 0x84D0;
+    int GL_TEXTURE17                             = 0x84D1;
+    int GL_TEXTURE18                             = 0x84D2;
+    int GL_TEXTURE19                             = 0x84D3;
+    int GL_TEXTURE20                             = 0x84D4;
+    int GL_TEXTURE21                             = 0x84D5;
+    int GL_TEXTURE22                             = 0x84D6;
+    int GL_TEXTURE23                             = 0x84D7;
+    int GL_TEXTURE24                             = 0x84D8;
+    int GL_TEXTURE25                             = 0x84D9;
+    int GL_TEXTURE26                             = 0x84DA;
+    int GL_TEXTURE27                             = 0x84DB;
+    int GL_TEXTURE28                             = 0x84DC;
+    int GL_TEXTURE29                             = 0x84DD;
+    int GL_TEXTURE30                             = 0x84DE;
+    int GL_TEXTURE31                             = 0x84DF;
+    int GL_TRIANGLE_FAN                          = 0x0006;
+    int GL_TRIANGLE_STRIP                        = 0x0005;
+    int GL_TRIANGLES                             = 0x0004;
+    int GL_TRUE                                  = 1;
+    int GL_UNPACK_ALIGNMENT                      = 0x0CF5;
+    int GL_UNSIGNED_BYTE                         = 0x1401;
+    int GL_UNSIGNED_SHORT                        = 0x1403;
+    int GL_UNSIGNED_SHORT_4_4_4_4                = 0x8033;
+    int GL_UNSIGNED_SHORT_5_5_5_1                = 0x8034;
+    int GL_UNSIGNED_SHORT_5_6_5                  = 0x8363;
+    int GL_VENDOR                                = 0x1F00;
+    int GL_VERSION                               = 0x1F02;
+    int GL_VERTEX_ARRAY                          = 0x8074;
+    int GL_XOR                                   = 0x1506;
+    int GL_ZERO                                  = 0;
+
diff --git a/opengl/tools/glgen/stubs/GL11ExtHeader.java-if b/opengl/tools/glgen/stubs/GL11ExtHeader.java-if
new file mode 100644
index 0000000..7be2164
--- /dev/null
+++ b/opengl/tools/glgen/stubs/GL11ExtHeader.java-if
@@ -0,0 +1,40 @@
+**
+** Copyright 2007, 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.
+*/
+
+// This source file is automatically generated
+
+package javax.microedition.khronos.opengles;
+
+public interface GL11Ext extends GL {
+    int GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES = 0x8B9E;
+    int GL_MATRIX_INDEX_ARRAY_OES                = 0x8844;
+    int GL_MATRIX_INDEX_ARRAY_POINTER_OES        = 0x8849;
+    int GL_MATRIX_INDEX_ARRAY_SIZE_OES           = 0x8846;
+    int GL_MATRIX_INDEX_ARRAY_STRIDE_OES         = 0x8848;
+    int GL_MATRIX_INDEX_ARRAY_TYPE_OES           = 0x8847;
+    int GL_MATRIX_PALETTE_OES                    = 0x8840;
+    int GL_MAX_PALETTE_MATRICES_OES              = 0x8842;
+    int GL_MAX_VERTEX_UNITS_OES                  = 0x86A4;
+    int GL_TEXTURE_CROP_RECT_OES                 = 0x8B9D;
+    int GL_WEIGHT_ARRAY_BUFFER_BINDING_OES       = 0x889E;
+    int GL_WEIGHT_ARRAY_OES                      = 0x86AD;
+    int GL_WEIGHT_ARRAY_POINTER_OES              = 0x86AC;
+    int GL_WEIGHT_ARRAY_SIZE_OES                 = 0x86AB;
+    int GL_WEIGHT_ARRAY_STRIDE_OES               = 0x86AA;
+    int GL_WEIGHT_ARRAY_TYPE_OES                 = 0x86A9;
+
+    void glTexParameterfv(int target, int pname, float[] param, int offset);
+
diff --git a/opengl/tools/glgen/stubs/GL11ExtensionPackHeader.java-if b/opengl/tools/glgen/stubs/GL11ExtensionPackHeader.java-if
new file mode 100644
index 0000000..a800191
--- /dev/null
+++ b/opengl/tools/glgen/stubs/GL11ExtensionPackHeader.java-if
@@ -0,0 +1,108 @@
+**
+** Copyright 2007, 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.
+*/
+
+// This source file is automatically generated
+
+package javax.microedition.khronos.opengles;
+
+public interface GL11ExtensionPack extends GL {
+    int GL_BLEND_DST_ALPHA                                  = 0x80CA;
+    int GL_BLEND_DST_RGB                                    = 0x80C8;
+    int GL_BLEND_EQUATION                                   = 0x8009;
+    int GL_BLEND_EQUATION_ALPHA                             = 0x883D;
+    int GL_BLEND_EQUATION_RGB                               = 0x8009;
+    int GL_BLEND_SRC_ALPHA                                  = 0x80CB;
+    int GL_BLEND_SRC_RGB                                    = 0x80C9;
+    int GL_COLOR_ATTACHMENT0_OES                            = 0x8CE0;
+    int GL_COLOR_ATTACHMENT1_OES                            = 0x8CE1;
+    int GL_COLOR_ATTACHMENT2_OES                            = 0x8CE2;
+    int GL_COLOR_ATTACHMENT3_OES                            = 0x8CE3;
+    int GL_COLOR_ATTACHMENT4_OES                            = 0x8CE4;
+    int GL_COLOR_ATTACHMENT5_OES                            = 0x8CE5;
+    int GL_COLOR_ATTACHMENT6_OES                            = 0x8CE6;
+    int GL_COLOR_ATTACHMENT7_OES                            = 0x8CE7;
+    int GL_COLOR_ATTACHMENT8_OES                            = 0x8CE8;
+    int GL_COLOR_ATTACHMENT9_OES                            = 0x8CE9;
+    int GL_COLOR_ATTACHMENT10_OES                           = 0x8CEA;
+    int GL_COLOR_ATTACHMENT11_OES                           = 0x8CEB;
+    int GL_COLOR_ATTACHMENT12_OES                           = 0x8CEC;
+    int GL_COLOR_ATTACHMENT13_OES                           = 0x8CED;
+    int GL_COLOR_ATTACHMENT14_OES                           = 0x8CEE;
+    int GL_COLOR_ATTACHMENT15_OES                           = 0x8CEF;
+    int GL_DECR_WRAP                                        = 0x8508;
+    int GL_DEPTH_ATTACHMENT_OES                             = 0x8D00;
+    int GL_DEPTH_COMPONENT                                  = 0x1902;
+    int GL_DEPTH_COMPONENT16                                = 0x81A5;
+    int GL_DEPTH_COMPONENT24                                = 0x81A6;
+    int GL_DEPTH_COMPONENT32                                = 0x81A7;
+    int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES           = 0x8CD1;
+    int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES           = 0x8CD0;
+    int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES = 0x8CD3;
+    int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES         = 0x8CD2;
+    int GL_FRAMEBUFFER_BINDING_OES                          = 0x8CA6;
+    int GL_FRAMEBUFFER_COMPLETE_OES                         = 0x8CD5;
+    int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES            = 0x8CD6;
+    int GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES            = 0x8CD9;
+    int GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES           = 0x8CDB;
+    int GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES               = 0x8CDA;
+    int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES    = 0x8CD7;
+    int GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES           = 0x8CDC;
+    int GL_FRAMEBUFFER_OES                                  = 0x8D40;
+    int GL_FRAMEBUFFER_UNSUPPORTED_OES                      = 0x8CDD;
+    int GL_FUNC_ADD                                         = 0x8006;
+    int GL_FUNC_REVERSE_SUBTRACT                            = 0x800B;
+    int GL_FUNC_SUBTRACT                                    = 0x800A;
+    int GL_INCR_WRAP                                        = 0x8507;
+    int GL_INVALID_FRAMEBUFFER_OPERATION_OES                = 0x0506;
+    int GL_MAX_COLOR_ATTACHMENTS_OES                        = 0x8CDF;
+    int GL_MAX_CUBE_MAP_TEXTURE_SIZE                        = 0x851C;
+    int GL_MAX_RENDERBUFFER_SIZE_OES                        = 0x84E8;
+    int GL_MIRRORED_REPEAT                                  = 0x8370;
+    int GL_NORMAL_MAP                                       = 0x8511;
+    int GL_REFLECTION_MAP                                   = 0x8512;
+    int GL_RENDERBUFFER_ALPHA_SIZE_OES                      = 0x8D53;
+    int GL_RENDERBUFFER_BINDING_OES                         = 0x8CA7;
+    int GL_RENDERBUFFER_BLUE_SIZE_OES                       = 0x8D52;
+    int GL_RENDERBUFFER_DEPTH_SIZE_OES                      = 0x8D54;
+    int GL_RENDERBUFFER_GREEN_SIZE_OES                      = 0x8D51;
+    int GL_RENDERBUFFER_HEIGHT_OES                          = 0x8D43;
+    int GL_RENDERBUFFER_INTERNAL_FORMAT_OES                 = 0x8D44;
+    int GL_RENDERBUFFER_OES                                 = 0x8D41;
+    int GL_RENDERBUFFER_RED_SIZE_OES                        = 0x8D50;
+    int GL_RENDERBUFFER_STENCIL_SIZE_OES                    = 0x8D55;
+    int GL_RENDERBUFFER_WIDTH_OES                           = 0x8D42;
+    int GL_RGB5_A1                                          = 0x8057;
+    int GL_RGB565_OES                                       = 0x8D62;
+    int GL_RGB8                                             = 0x8051;
+    int GL_RGBA4                                            = 0x8056;
+    int GL_RGBA8                                            = 0x8058;
+    int GL_STENCIL_ATTACHMENT_OES                           = 0x8D20;
+    int GL_STENCIL_INDEX                                    = 0x1901;
+    int GL_STENCIL_INDEX1_OES                               = 0x8D46;
+    int GL_STENCIL_INDEX4_OES                               = 0x8D47;
+    int GL_STENCIL_INDEX8_OES                               = 0x8D48;
+    int GL_STR                                              = -1;
+    int GL_TEXTURE_BINDING_CUBE_MAP                         = 0x8514;
+    int GL_TEXTURE_CUBE_MAP                                 = 0x8513;
+    int GL_TEXTURE_CUBE_MAP_NEGATIVE_X                      = 0x8516;
+    int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y                      = 0x8518;
+    int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z                      = 0x851A;
+    int GL_TEXTURE_CUBE_MAP_POSITIVE_X                      = 0x8515;
+    int GL_TEXTURE_CUBE_MAP_POSITIVE_Y                      = 0x8517;
+    int GL_TEXTURE_CUBE_MAP_POSITIVE_Z                      = 0x8519;
+    int GL_TEXTURE_GEN_MODE                                 = 0x2500;
+    int GL_TEXTURE_GEN_STR                                  = 0x8D60;
+
diff --git a/opengl/tools/glgen/stubs/GL11Header.java-if b/opengl/tools/glgen/stubs/GL11Header.java-if
new file mode 100644
index 0000000..b0e5a6b
--- /dev/null
+++ b/opengl/tools/glgen/stubs/GL11Header.java-if
@@ -0,0 +1,145 @@
+**
+** Copyright 2006, 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.
+*/
+
+// This source file is automatically generated
+
+package javax.microedition.khronos.opengles;
+
+public interface GL11 extends GL10 {
+    int GL_ACTIVE_TEXTURE                          = 0x84E0;
+    int GL_ADD_SIGNED                              = 0x8574;
+    int GL_ALPHA_SCALE                             = 0x0D1C;
+    int GL_ALPHA_TEST_FUNC                         = 0x0BC1;
+    int GL_ALPHA_TEST_REF                          = 0x0BC2;
+    int GL_ARRAY_BUFFER                            = 0x8892;
+    int GL_ARRAY_BUFFER_BINDING                    = 0x8894;
+    int GL_BLEND_DST                               = 0x0BE0;
+    int GL_BLEND_SRC                               = 0x0BE1;
+    int GL_BUFFER_ACCESS                           = 0x88BB;
+    int GL_BUFFER_SIZE                             = 0x8764;
+    int GL_BUFFER_USAGE                            = 0x8765;
+    int GL_CLIENT_ACTIVE_TEXTURE                   = 0x84E1;
+    int GL_CLIP_PLANE0                             = 0x3000;
+    int GL_CLIP_PLANE1                             = 0x3001;
+    int GL_CLIP_PLANE2                             = 0x3002;
+    int GL_CLIP_PLANE3                             = 0x3003;
+    int GL_CLIP_PLANE4                             = 0x3004;
+    int GL_CLIP_PLANE5                             = 0x3005;
+    int GL_COLOR_ARRAY_BUFFER_BINDING              = 0x8898;
+    int GL_COLOR_ARRAY_POINTER                     = 0x8090;
+    int GL_COLOR_ARRAY_SIZE                        = 0x8081;
+    int GL_COLOR_ARRAY_STRIDE                      = 0x8083;
+    int GL_COLOR_ARRAY_TYPE                        = 0x8082;
+    int GL_COLOR_CLEAR_VALUE                       = 0x0C22;
+    int GL_COLOR_WRITEMASK                         = 0x0C23;
+    int GL_COMBINE                                 = 0x8570;
+    int GL_COMBINE_ALPHA                           = 0x8572;
+    int GL_COMBINE_RGB                             = 0x8571;
+    int GL_CONSTANT                                = 0x8576;
+    int GL_COORD_REPLACE_OES                       = 0x8862;
+    int GL_CULL_FACE_MODE                          = 0x0B45;
+    int GL_CURRENT_COLOR                           = 0x0B00;
+    int GL_CURRENT_NORMAL                          = 0x0B02;
+    int GL_CURRENT_TEXTURE_COORDS                  = 0x0B03;
+    int GL_DEPTH_CLEAR_VALUE                       = 0x0B73;
+    int GL_DEPTH_FUNC                              = 0x0B74;
+    int GL_DEPTH_RANGE                             = 0x0B70;
+    int GL_DEPTH_WRITEMASK                         = 0x0B72;
+    int GL_DOT3_RGB                                = 0x86AE;
+    int GL_DOT3_RGBA                               = 0x86AF;
+    int GL_DYNAMIC_DRAW                            = 0x88E8;
+    int GL_ELEMENT_ARRAY_BUFFER                    = 0x8893;
+    int GL_ELEMENT_ARRAY_BUFFER_BINDING            = 0x8895;
+    int GL_FRONT_FACE                              = 0x0B46;
+    int GL_GENERATE_MIPMAP                         = 0x8191;
+    int GL_GENERATE_MIPMAP_HINT                    = 0x8192;
+    int GL_INTERPOLATE                             = 0x8575;
+    int GL_LINE_WIDTH                              = 0x0B21;
+    int GL_LOGIC_OP_MODE                           = 0x0BF0;
+    int GL_MATRIX_MODE                             = 0x0BA0;
+    int GL_MAX_CLIP_PLANES                         = 0x0D32;
+    int GL_MODELVIEW_MATRIX                        = 0x0BA6;
+    int GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES  = 0x898D;
+    int GL_MODELVIEW_STACK_DEPTH                   = 0x0BA3;
+    int GL_NORMAL_ARRAY_BUFFER_BINDING             = 0x8897;
+    int GL_NORMAL_ARRAY_POINTER                    = 0x808F;
+    int GL_NORMAL_ARRAY_STRIDE                     = 0x807F;
+    int GL_NORMAL_ARRAY_TYPE                       = 0x807E;
+    int GL_OPERAND0_ALPHA                          = 0x8598;
+    int GL_OPERAND0_RGB                            = 0x8590;
+    int GL_OPERAND1_ALPHA                          = 0x8599;
+    int GL_OPERAND1_RGB                            = 0x8591;
+    int GL_OPERAND2_ALPHA                          = 0x859A;
+    int GL_OPERAND2_RGB                            = 0x8592;
+    int GL_POINT_DISTANCE_ATTENUATION              = 0x8129;
+    int GL_POINT_FADE_THRESHOLD_SIZE               = 0x8128;
+    int GL_POINT_SIZE                              = 0x0B11;
+    int GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES     = 0x8B9F;
+    int GL_POINT_SIZE_ARRAY_OES                    = 0x8B9C;
+    int GL_POINT_SIZE_ARRAY_POINTER_OES            = 0x898C;
+    int GL_POINT_SIZE_ARRAY_STRIDE_OES             = 0x898B;
+    int GL_POINT_SIZE_ARRAY_TYPE_OES               = 0x898A;
+    int GL_POINT_SIZE_MAX                          = 0x8127;
+    int GL_POINT_SIZE_MIN                          = 0x8126;
+    int GL_POINT_SPRITE_OES                        = 0x8861;
+    int GL_POLYGON_OFFSET_FACTOR                   = 0x8038;
+    int GL_POLYGON_OFFSET_UNITS                    = 0x2A00;
+    int GL_PREVIOUS                                = 0x8578;
+    int GL_PRIMARY_COLOR                           = 0x8577;
+    int GL_PROJECTION_MATRIX                       = 0x0BA7;
+    int GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES = 0x898E;
+    int GL_PROJECTION_STACK_DEPTH                  = 0x0BA4;
+    int GL_RGB_SCALE                               = 0x8573;
+    int GL_SAMPLE_BUFFERS                          = 0x80A8;
+    int GL_SAMPLE_COVERAGE_INVERT                  = 0x80AB;
+    int GL_SAMPLE_COVERAGE_VALUE                   = 0x80AA;
+    int GL_SAMPLES                                 = 0x80A9;
+    int GL_SCISSOR_BOX                             = 0x0C10;
+    int GL_SHADE_MODEL                             = 0x0B54;
+    int GL_SRC0_ALPHA                              = 0x8588;
+    int GL_SRC0_RGB                                = 0x8580;
+    int GL_SRC1_ALPHA                              = 0x8589;
+    int GL_SRC1_RGB                                = 0x8581;
+    int GL_SRC2_ALPHA                              = 0x858A;
+    int GL_SRC2_RGB                                = 0x8582;
+    int GL_STATIC_DRAW                             = 0x88E4;
+    int GL_STENCIL_CLEAR_VALUE                     = 0x0B91;
+    int GL_STENCIL_FAIL                            = 0x0B94;
+    int GL_STENCIL_FUNC                            = 0x0B92;
+    int GL_STENCIL_PASS_DEPTH_FAIL                 = 0x0B95;
+    int GL_STENCIL_PASS_DEPTH_PASS                 = 0x0B96;
+    int GL_STENCIL_REF                             = 0x0B97;
+    int GL_STENCIL_VALUE_MASK                      = 0x0B93;
+    int GL_STENCIL_WRITEMASK                       = 0x0B98;
+    int GL_SUBTRACT                                = 0x84E7;
+    int GL_TEXTURE_BINDING_2D                      = 0x8069;
+    int GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING      = 0x889A;
+    int GL_TEXTURE_COORD_ARRAY_POINTER             = 0x8092;
+    int GL_TEXTURE_COORD_ARRAY_SIZE                = 0x8088;
+    int GL_TEXTURE_COORD_ARRAY_STRIDE              = 0x808A;
+    int GL_TEXTURE_COORD_ARRAY_TYPE                = 0x8089;
+    int GL_TEXTURE_MATRIX                          = 0x0BA8;
+    int GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES    = 0x898F;
+    int GL_TEXTURE_STACK_DEPTH                     = 0x0BA5;
+    int GL_VERTEX_ARRAY_BUFFER_BINDING             = 0x8896;
+    int GL_VERTEX_ARRAY_POINTER                    = 0x808E;
+    int GL_VERTEX_ARRAY_SIZE                       = 0x807A;
+    int GL_VERTEX_ARRAY_STRIDE                     = 0x807C;
+    int GL_VERTEX_ARRAY_TYPE                       = 0x807B;
+    int GL_VIEWPORT                                = 0x0BA2;
+    int GL_WRITE_ONLY                              = 0x88B9;
+
+    void glGetPointerv(int pname, java.nio.Buffer[] params);
diff --git a/opengl/tools/glgen/stubs/GL11ImplHeader.java-impl b/opengl/tools/glgen/stubs/GL11ImplHeader.java-impl
new file mode 100644
index 0000000..501be65
--- /dev/null
+++ b/opengl/tools/glgen/stubs/GL11ImplHeader.java-impl
@@ -0,0 +1,30 @@
+// Copyright 2006 The Android Open Source Project
+
+// All Rights Reserved.
+
+// This source file is automatically generated
+
+package com.google.android.gles_jni;
+
+import java.nio.Buffer;
+import javax.microedition.khronos.opengles.GL11;
+import android.graphics.Canvas;
+
+public class GL11Impl implements GL11 {
+
+    // Private accessors for native code
+
+    native private static void _nativeClassInit();
+    static {
+	_nativeClassInit();
+    }
+
+    Buffer _colorPointer = null;
+    Buffer _normalPointer = null;
+    Buffer _texCoordPointer = null;
+    Buffer _vertexPointer = null;
+
+    public GL11Impl() {
+    }
+
+
diff --git a/opengl/tools/glgen/stubs/GLCHeader.cpp b/opengl/tools/glgen/stubs/GLCHeader.cpp
new file mode 100644
index 0000000..6495686
--- /dev/null
+++ b/opengl/tools/glgen/stubs/GLCHeader.cpp
@@ -0,0 +1,129 @@
+**
+** Copyright 2006, 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.
+*/
+
+// This source file is automatically generated
+
+#include <android_runtime/AndroidRuntime.h>
+#include <utils/misc.h>
+
+#include <assert.h>
+#include <GLES/gl.h>
+
+#include <private/opengles/gl_context.h>
+
+#define _NUM_COMPRESSED_TEXTURE_FORMATS \
+        (::android::OGLES_NUM_COMPRESSED_TEXTURE_FORMATS)
+
+static int initialized = 0;
+
+static jclass nioAccessClass;
+static jclass bufferClass;
+static jclass OOMEClass;
+static jclass UOEClass;
+static jclass IAEClass;
+static jclass AIOOBEClass;
+static jmethodID getBasePointerID;
+static jmethodID getBaseArrayID;
+static jmethodID getBaseArrayOffsetID;
+static jfieldID positionID;
+static jfieldID limitID;
+static jfieldID elementSizeShiftID;
+
+/* Cache method IDs each time the class is loaded. */
+
+void
+nativeClassInitBuffer(JNIEnv *_env)
+{
+    jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess");
+    nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal);
+
+    jclass bufferClassLocal = _env->FindClass("java/nio/Buffer");
+    bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal);
+
+    getBasePointerID = _env->GetStaticMethodID(nioAccessClass,
+            "getBasePointer", "(Ljava/nio/Buffer;)J");
+    getBaseArrayID = _env->GetStaticMethodID(nioAccessClass,
+            "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;");
+    getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass,
+            "getBaseArrayOffset", "(Ljava/nio/Buffer;)I");
+
+    positionID = _env->GetFieldID(bufferClass, "position", "I");
+    limitID = _env->GetFieldID(bufferClass, "limit", "I");
+    elementSizeShiftID =
+        _env->GetFieldID(bufferClass, "_elementSizeShift", "I");
+}
+
+
+static void
+nativeClassInit(JNIEnv *_env, jclass glImplClass)
+{
+    nativeClassInitBuffer(_env);
+
+    jclass IAEClassLocal =
+        _env->FindClass("java/lang/IllegalArgumentException");
+    jclass OOMEClassLocal =
+         _env->FindClass("java/lang/OutOfMemoryError");
+    jclass UOEClassLocal =
+         _env->FindClass("java/lang/UnsupportedOperationException");
+    jclass AIOOBEClassLocal =
+         _env->FindClass("java/lang/ArrayIndexOutOfBoundsException");
+
+    IAEClass = (jclass) _env->NewGlobalRef(IAEClassLocal);
+    OOMEClass = (jclass) _env->NewGlobalRef(OOMEClassLocal);
+    UOEClass = (jclass) _env->NewGlobalRef(UOEClassLocal);
+    AIOOBEClass = (jclass) _env->NewGlobalRef(AIOOBEClassLocal);
+}
+
+static void *
+getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining)
+{
+    jint position;
+    jint limit;
+    jint elementSizeShift;
+    jlong pointer;
+    jint offset;
+    void *data;
+
+    position = _env->GetIntField(buffer, positionID);
+    limit = _env->GetIntField(buffer, limitID);
+    elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
+    *remaining = (limit - position) << elementSizeShift;
+    pointer = _env->CallStaticLongMethod(nioAccessClass,
+            getBasePointerID, buffer);
+    if (pointer != 0L) {
+        *array = NULL;
+        return (void *) (jint) pointer;
+    }
+    
+    *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass,
+            getBaseArrayID, buffer);
+    offset = _env->CallStaticIntMethod(nioAccessClass,
+            getBaseArrayOffsetID, buffer);
+    data = _env->GetPrimitiveArrayCritical(*array, (jboolean *) 0);
+    
+    return (void *) ((char *) data + offset);
+}
+
+
+static void
+releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
+{
+    _env->ReleasePrimitiveArrayCritical(array, data,
+					   commit ? 0 : JNI_ABORT);
+}
+
+// --------------------------------------------------------------------------
+
diff --git a/opengl/tools/glgen/stubs/GLHeader.java-if b/opengl/tools/glgen/stubs/GLHeader.java-if
new file mode 100644
index 0000000..3b78f3d
--- /dev/null
+++ b/opengl/tools/glgen/stubs/GLHeader.java-if
@@ -0,0 +1,22 @@
+/* //device/java/android/javax/microedition/khronos/opengles/GL.java
+**
+** Copyright 2006, 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 javax.microedition.khronos.opengles;
+
+public interface GL {
+}
+
diff --git a/opengl/tools/glgen/stubs/GLImplHeader.java-impl b/opengl/tools/glgen/stubs/GLImplHeader.java-impl
new file mode 100644
index 0000000..db3a41c
--- /dev/null
+++ b/opengl/tools/glgen/stubs/GLImplHeader.java-impl
@@ -0,0 +1,48 @@
+**
+** Copyright 2006, 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.
+*/
+
+// This source file is automatically generated
+
+package com.google.android.gles_jni;
+
+import java.nio.Buffer;
+import javax.microedition.khronos.opengles.GL10;
+import javax.microedition.khronos.opengles.GL10Ext;
+import javax.microedition.khronos.opengles.GL11;
+import javax.microedition.khronos.opengles.GL11Ext;
+import javax.microedition.khronos.opengles.GL11ExtensionPack;
+
+public class GLImpl implements GL10, GL10Ext, GL11, GL11Ext, GL11ExtensionPack {
+
+    // Private accessors for native code
+
+    native private static void _nativeClassInit();
+    static {
+	_nativeClassInit();
+    }
+
+    Buffer _colorPointer = null;
+    Buffer _normalPointer = null;
+    Buffer _texCoordPointer = null;
+    Buffer _vertexPointer = null;
+
+    public GLImpl() {
+    }
+
+     public void glGetPointerv(int pname, java.nio.Buffer[] params) {
+         throw new UnsupportedOperationException("glGetPointerv");
+     }
+
diff --git a/opengl/tools/glgen/stubs/glGetString.cpp b/opengl/tools/glgen/stubs/glGetString.cpp
new file mode 100644
index 0000000..22e1297
--- /dev/null
+++ b/opengl/tools/glgen/stubs/glGetString.cpp
@@ -0,0 +1,10 @@
+#include <string.h>

+

+/* const GLubyte * glGetString ( GLenum name ) */

+jstring

+android_glGetString

+  (JNIEnv *_env, jobject _this, jint name) {

+    const char * chars = (const char *)glGetString((GLenum)name);

+    jstring output = _env->NewStringUTF(chars);

+    return output;

+}

diff --git a/opengl/tools/glgen/stubs/glGetString.java-10-if b/opengl/tools/glgen/stubs/glGetString.java-10-if
new file mode 100644
index 0000000..898fabc
--- /dev/null
+++ b/opengl/tools/glgen/stubs/glGetString.java-10-if
@@ -0,0 +1,4 @@
+    public String glGetString(

+        int name

+    );

+

diff --git a/opengl/tools/glgen/stubs/glGetString.java-if b/opengl/tools/glgen/stubs/glGetString.java-if
new file mode 100644
index 0000000..898fabc
--- /dev/null
+++ b/opengl/tools/glgen/stubs/glGetString.java-if
@@ -0,0 +1,4 @@
+    public String glGetString(

+        int name

+    );

+

diff --git a/opengl/tools/glgen/stubs/glGetString.java-impl b/opengl/tools/glgen/stubs/glGetString.java-impl
new file mode 100644
index 0000000..8c7881c
--- /dev/null
+++ b/opengl/tools/glgen/stubs/glGetString.java-impl
@@ -0,0 +1,16 @@
+    // C function const GLubyte * glGetString ( GLenum name )

+

+    public native String _glGetString(

+        int name

+    );

+

+    public String glGetString(

+        int name

+    ) {

+        String returnValue;

+        returnValue = _glGetString(

+            name

+        );

+        return returnValue;

+    }

+

diff --git a/opengl/tools/glgen/stubs/glGetString.nativeReg b/opengl/tools/glgen/stubs/glGetString.nativeReg
new file mode 100644
index 0000000..e64187c
--- /dev/null
+++ b/opengl/tools/glgen/stubs/glGetString.nativeReg
@@ -0,0 +1 @@
+{"_glGetString", "(I)Ljava/lang/String;", (void *) android_glGetString },