public Object evaluate(Context c, HashMap map, DataFactory factory) {
		if (map.get(variableID) instanceof IVPVariable) {
			IVPVariable variable = (IVPVariable) map.get(variableID);
			IVPValue value = (IVPValue) ((DataObject) map.get(expressionID)).evaluate(c, map, factory);
			IVPValue copyOfValue = createCopy(value, c, map, factory);
			variable.setValueID(copyOfValue.getUniqueID());
		} else if (map.get(variableID) instanceof IVPVectorReference) {
			IVPVectorReference ref = (IVPVectorReference) map.get(variableID);
			IVPValue value = (IVPValue) ((DataObject)map.get(expressionID)).evaluate(c, map, factory);
			IVPValue copyOfValue = createCopy(value, c, map, factory);
			ref.setElementIntoVector(copyOfValue.getUniqueID(), c, map, factory);
		} else if (map.get(variableID) instanceof IVPMatrixReference) {
			IVPMatrixReference ref = (IVPMatrixReference) map.get(variableID);
			IVPValue value = (IVPValue) ((DataObject)map.get(expressionID)).evaluate(c, map, factory);
			IVPValue copyOfValue = createCopy(value, c, map, factory);
			ref.setElementIntoMatrix(copyOfValue.getUniqueID(), c, map, factory);
		}
		return null;
	}