public void update() throws MaltChainedException {
		// Retrieve the address value 
		final AddressValue arg1 = addressFunction.getAddressValue();
		// if arg1 or arg2 is null, then set a NO_NODE null value as feature value
		if (arg1.getAddress() == null ) { 
			featureValue.setIndexCode(table.getNullValueCode(NullValueId.NO_NODE));
			featureValue.setSymbol(table.getNullValueSymbol(NullValueId.NO_NODE));
			featureValue.setNullValue(true);			
		} else {
			// Unfortunately this method takes a lot of time  arg1.getAddressClass().asSubclass(org.maltparser.core.syntaxgraph.node.DependencyNode.class);
			// Cast the address arguments to dependency nodes
			final DependencyNode node = (DependencyNode)arg1.getAddress();
			int numof = 0;
			if (numOfRelation == NumOfRelation.DEPS) {
				numof = node.getLeftDependentCount() +  node.getRightDependentCount();
			} else if (numOfRelation == NumOfRelation.LDEPS) {
				numof = node.getLeftDependentCount();
			} else if (numOfRelation == NumOfRelation.RDEPS) {
				numof = node.getRightDependentCount();
			} 
			int lower = -1;
			boolean f = false;
			for (Integer upper : normalization.keySet()) {
				if (numof >= lower && numof < upper) {
					featureValue.setIndexCode(table.getSymbolStringToCode(normalization.get(lower)));
					featureValue.setSymbol(normalization.get(lower));
					f = true;
					break;
				}
				lower = upper;
			}
			if (f == false) {
				featureValue.setIndexCode(table.getSymbolStringToCode(normalization.get(lower)));
				featureValue.setSymbol(normalization.get(lower));
			}
			// Tells the feature value that the feature is known and is not a null value
			featureValue.setNullValue(false);
		}
		featureValue.setValue(1);
//		featureValue.setKnown(true);
	}