public static ArrayList<DebugSignature> decodeSignatures(Decoder decoder, Function func)
			throws DecoderException {
		ArrayList<DebugSignature> res = new ArrayList<>();
		int el = decoder.openElement();
		int subel = decoder.peekElement();
		while (subel != 0) {
			DebugSignature sig;
			if (subel == ELEM_VARSIG.id()) {
				sig = new VarnodeSignature();
			}
			else if (subel == ELEM_BLOCKSIG.id()) {
				sig = new BlockSignature();
			}
			else if (subel == ELEM_COPYSIG.id()) {
				sig = new CopySignature();
			}
			else {
				throw new DecoderException("Unknown debug signature element");
			}
			sig.decode(decoder);
			res.add(sig);
			subel = decoder.peekElement();
		}
		decoder.closeElement(el);
		return res;
	}
Decode an array of features from the stream. Collectively, the features make up
a "feature vector" for a specific function.  Each feature is returned as a separate descriptive object.
@param decoder is the stream decoder
@param func is the specific function whose feature vector is being decoded
@return the array of feature objects
@throws DecoderException for problems reading from the stream
Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/signature/DebugSignature.java