result.removeProperty("labels");
try {
Method unitsGetter = this.getClass().getMethod("getUnits1D", new Class[0]);
Method unitsSetter = this.getClass().getMethod("setUnits", new Class[]{Units.class});
result.defineProperty(new SingleValuedPropertyImpl(result, "units", Units.class, unitsGetter, unitsSetter));
Method valuesGetter = this.getClass().getMethod("getValues1D", new Class[0]);
result.defineProperty(new SingleValuedPropertyImpl(result, "values", float[].class, valuesGetter));
final Method labelGetter = this.getClass().getMethod("getLabels", new Class[0]);
Method labelSetter = this.getClass().getMethod("setLabel", new Class[]{String.class});
SingleValuedProperty labelProp = new SingleValuedPropertyImpl(result, "label", String.class, labelGetter, labelSetter) {
@Override
public Object getValue() {
Object result = null;
try {