${programmers} With ${selfParse}, a ${valueObject} class is responsible for some of the responsibilities of a ${parser}. In Java, it: * Has a ''parse()'' method: {{{ public static Object parse(String s);}}} * Has an ''equals()'' method to compare one object of the class with another when matching an ''expected'' and ''actual'' value: {{{ public boolean equals(Object object);}}} * Has a ''toString()'' method to show itself as a String, for use in error messages: {{{ public String toString();}}}