public void update() throws MaltChainedException {
		parentFeature.update();
		FunctionValue 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 suffixStr;
				if (symbol.length()-suffixLength > 0) {
					suffixStr = symbol.substring(symbol.length()-suffixLength);
				} else {
					suffixStr = symbol;
				}
				int code = table.addSymbol(suffixStr);
				multipleFeatureValue.addFeatureValue(code, suffixStr);
				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 suffixStr;
					if (symbol.length()-suffixLength > 0) {
						suffixStr = symbol.substring(symbol.length()-suffixLength);
					} else {
						suffixStr = symbol;
					}
					int code = table.addSymbol(suffixStr);
					multipleFeatureValue.addFeatureValue(code, suffixStr);
					multipleFeatureValue.setNullValue(true);
				}
			}
		}
	}