### Question:
MutableString { @Override public boolean equals(Object o) { if (o == null || !(o instanceof MutableString)) { return false; } return is(((MutableString) o).toString()); } MutableString();  MutableString(String s);  MutableString(MutableString s); void clear(); int indexOf(String s); int indexOf(String s, int fromIndex); void trim(); int length(); MutableString[] split(String regex); MutableString truncateSubstring(int begin, int end); MutableString truncateSubstring(int begin); MutableString substring(int start, int end); MutableString substring(int start); boolean startsWith(String s); boolean startsWithIgnoreCase(String s); boolean endsWith(String s); boolean endsWithIgnoreCase(String s); boolean is(String s); @Override boolean equals(Object o); @Override int hashCode(); boolean isEmpty(); void replaceAll(String regex, String replacement); @Override String toString();  }### Answer:
@Test public void testCopy() { MutableString ms1 = new MutableString("abc"); MutableString ms2 = new MutableString(ms1); assertTrue(ms1.equals(ms2)); }
@Test public void testEqualsNull() { MutableString ms1 = new MutableString("abc"); assertFalse(ms1.equals(null)); }
@Test public void testEqualsNonString() { MutableString ms1 = new MutableString("abc"); assertFalse(ms1.equals("abc")); }