public void update() throws MaltChainedException {
		parentFeature.update();
		FeatureValue value = parentFeature.getFeatureValue();
		if (value instanceof SingleFeatureValue) {
			String symbol = ((SingleFeatureValue)value).getSymbol();
			if (((FeatureValue)value).isNullValue()) {
				multipleFeatureValue.addFeatureValue(parentFeature.getSymbolTable().getSymbolStringToCode(symbol), symbol);
				multipleFeatureValue.setNullValue(true);
			} else {
				String prefixStr;
				if (symbol.length()-prefixLength > 0) {
					prefixStr = symbol.substring(0, prefixLength);
				} else {
					prefixStr = symbol;
				}
				int code = table.addSymbol(prefixStr);
				multipleFeatureValue.addFeatureValue(code, prefixStr);
				multipleFeatureValue.setNullValue(false);
			}
		} else if (value instanceof MultipleFeatureValue) {
			multipleFeatureValue.reset();
			if (((MultipleFeatureValue)value).isNullValue()) {
				multipleFeatureValue.addFeatureValue(parentFeature.getSymbolTable().getSymbolStringToCode(((MultipleFeatureValue)value).getFirstSymbol()), ((MultipleFeatureValue)value).getFirstSymbol());
				multipleFeatureValue.setNullValue(true);
			} else {
				for (String symbol : ((MultipleFeatureValue)value).getSymbols()) {
					String prefixStr;
					if (symbol.length()-prefixLength > 0) {
						prefixStr = symbol.substring(0, prefixLength);
					} else {
						prefixStr = symbol;
					}
					int code = table.addSymbol(prefixStr);
					multipleFeatureValue.addFeatureValue(code, prefixStr);
					multipleFeatureValue.setNullValue(true);
				}
			}
		}
	}