### Question:
LookupPaintScale implements PaintScale, PublicCloneable,
        Serializable { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof LookupPaintScale)) { return false; } LookupPaintScale that = (LookupPaintScale) obj; if (this.lowerBound != that.lowerBound) { return false; } if (this.upperBound != that.upperBound) { return false; } if (!PaintUtilities.equal(this.defaultPaint, that.defaultPaint)) { return false; } if (!this.lookupTable.equals(that.lookupTable)) { return false; } return true; } LookupPaintScale();  LookupPaintScale(double lowerBound, double upperBound,
            Paint defaultPaint); Paint getDefaultPaint(); @Override double getLowerBound(); @Override double getUpperBound(); void add(double value, Paint paint); @Override Paint getPaint(double value); @Override boolean equals(Object obj); @Override int hashCode(); @Override Object clone();  }### Answer:
@Test public void testEquals() { LookupPaintScale g1 = new LookupPaintScale(); LookupPaintScale g2 = new LookupPaintScale(); assertEquals(g1, g2); assertEquals(g2, g1); g1 = new LookupPaintScale(1.0, 2.0, Color.RED); assertFalse(g1.equals(g2)); g2 = new LookupPaintScale(1.0, 2.0, Color.RED); assertEquals(g1, g2); g1.add(1.5, new GradientPaint(1.0f, 2.0f, Color.RED, 3.0f, 4.0f, Color.BLUE)); assertFalse(g1.equals(g2)); g2.add(1.5, new GradientPaint(1.0f, 2.0f, Color.RED, 3.0f, 4.0f, Color.BLUE)); assertEquals(g1, g2); }