}
@Override
public <E> void setValue(Attribute<E> attr, E value) {
if (attr == StdAttr.FACING) {
Direction val = (Direction) value;
facing = val;
fireAttributeValueChanged(StdAttr.FACING, val);
if (subcircInstance != null) subcircInstance.recomputeBounds();
} else if (attr == StdAttr.LABEL) {
String val = (String) value;
label = val;
fireAttributeValueChanged(StdAttr.LABEL, val);
} else if (attr == StdAttr.LABEL_FONT) {
Font val = (Font) value;
labelFont = val;
fireAttributeValueChanged(StdAttr.LABEL_FONT, val);
} else if (attr == LABEL_LOCATION_ATTR) {
Direction val = (Direction) value;
labelLocation = val;
fireAttributeValueChanged(LABEL_LOCATION_ATTR, val);
} else {
source.getStaticAttributes().setValue(attr, value);
if (attr == NAME_ATTR) {