public <T extends StructGeneralAttribute> T getAttribute(StructGeneralAttribute.Key<T> attribute) {
    @SuppressWarnings("unchecked") T t = (T)attributes.get(attribute.name);
    return t;
  }
public <T extends StructGeneralAttribute> T getAttribute(StructGeneralAttribute.Key<T> attribute)