public void onAttribute( AttributeExp exp ) {
// found an attribute
if(!(exp.nameClass instanceof SimpleNameClass))
throw new Error(); // attribute uses must have a simple name.
SimpleNameClass snc = (SimpleNameClass)exp.nameClass;
// see if the dervied type has a definition that
// overrides this attribute.
if( !explicitAtts.contains(snc.toStringPair()) ) {
// this attribute is not defined. copy it.
cexp.body.exp = reader.pool.createSequence(
cexp.body.exp,
isOptional?reader.pool.createOptional(exp):exp );
}