@Override
 protected V validate(Attribute data) {
   EFeatureStatus s;
   if (!(s = getStructure().validate(data)).isSuccess()) {
     throw new IllegalArgumentException(s.getMessage());
   }
   return eValueType.cast(data.getValue());
 }
  @Override
  protected V validate(Object value) {
    EFeatureStatus s;
    if (!(s = getStructure().validate(value)).isSuccess()) {
      throw new IllegalArgumentException(s.getMessage(), s.getCause());
    }

    // Is valid, cast to value type
    //
    return eValueType.cast(eData.getValue());
  }