* markup attributes from the dissection test case's input format through.
*
* @param attributes attributes of an element, with optional annotations.
*/
protected void parseElementAttributes(Attributes attributes) {
AnnotatedAttributes attrs = (AnnotatedAttributes) attributes;
// Copy the attributes since it cannot be accessed safely after this
// method finishes.
attrNames = new ArrayList();
attrValues = new ArrayList();
int length = attrs.getLength();
for (int i = 0; i < length; i++) {
String name = attrs.getLocalName(i);
String value = attrs.getValue(i);
// Check to see whether this a special attribute and if it is
// then use the returned object instead of its value.
Object opaque = attrs.getAnnotation(i);
attrNames.add(name);
if (opaque != null) {
attrValues.add(opaque);
} else {
attrValues.add(value);