public void update() throws MaltChainedException {
		// Retrieve the address value 
		final AddressValue arg1 = addressFunction1.getAddressValue();
		final AddressValue arg2 = addressFunction2.getAddressValue();
		if (arg1.getAddress() != null && arg1.getAddressClass() == org.maltparserx.core.syntaxgraph.node.DependencyNode.class &&
		    arg2.getAddress() != null && arg2.getAddressClass() == org.maltparserx.core.syntaxgraph.node.DependencyNode.class) {
		    DependencyNode node1 = (DependencyNode)arg1.getAddress();
		    DependencyNode node2 = (DependencyNode)arg2.getAddress();
		    try {
			int head1 = Integer.parseInt(node1.getLabelSymbol(column.getSymbolTable()));
			int head2 = Integer.parseInt(node2.getLabelSymbol(column.getSymbolTable()));
			if (!node1.isRoot() && head1 == node2.getIndex()) {
			    featureValue.setIndexCode(table.getSymbolStringToCode("LEFT"));
			    featureValue.setSymbol("LEFT");
			    featureValue.setNullValue(false);
			} else if (!node2.isRoot() && head2 == node1.getIndex()) {
			    featureValue.setIndexCode(table.getSymbolStringToCode("RIGHT"));
			    featureValue.setSymbol("RIGHT");
			    featureValue.setNullValue(false);			
			} else {
			    featureValue.setIndexCode(table.getNullValueCode(NullValueId.NO_NODE));
			    featureValue.setSymbol(table.getNullValueSymbol(NullValueId.NO_NODE));
			    featureValue.setNullValue(true);
			}
		    } catch (NumberFormatException e) {
		    	throw new FeatureException("The index of the feature must be an integer value. ", e);
		    }
		} else {
		    featureValue.setIndexCode(table.getNullValueCode(NullValueId.NO_NODE));
		    featureValue.setSymbol(table.getNullValueSymbol(NullValueId.NO_NODE));
		    featureValue.setNullValue(true);
		}
//		featureValue.setKnown(true);
		featureValue.setValue(1);
	}