synchronized public ArrayList RetrieveAnalogPlotData(String name) {
	if (!isAnalogSimulation())
	    return RetrieveDigitalPlotData(name);

	ArrayList result = new ArrayList();
	if (history == null) return result;
	ArrayList names = UI.ExpandNodeName(name);
	int nbits = names.size();

	for (int bit = 0; bit < nbits; bit += 1) {
	    String node = (String)names.get(bit);
	    Node n = (Node)FindNode(node,false);
	    if (n == null) {
		problem = node;
		return null;
	    }
	    String units = name.startsWith("i(") ? "A" : "V";
	    PlotData d = null;

	    // retrieve info from the history
	    int index = n.hIndex;
	    int remaining = 0;
	    while (index != -1) {
		if (remaining == 0) {
		    d = new PlotData(name,mode == TRANSIENT_ANALYSIS ? "s" : "V",units,1);
		    result.add(d);
		    int i = result.size() - 1;
		    if (i < dcLabels.size()) 
			d.name += (String)dcLabels.get(i);
		    remaining = nsamples;
		}

		int offset = EnsureHistory(index);
		double time = Double.longBitsToDouble(ReadLong(offset+4));
		float v = Float.intBitsToFloat(ReadInt(offset+12));
		d.AddPoint(new AnalogPlotCoordinate(time,(double)v));
		index = ReadInt(offset);
		remaining -= 1;
	    }
	}

	return result;
    }