private static String getArrayExtractor(LinkedList<String> parts) {
		String counter = getStreamExtractor(parts);
		int extra = 0;
		if (counter == null) {
			extra = Integer.parseInt(next(parts));
			counter = getStreamExtractor(parts);
		}
		List<String> streams = new ArrayList<String>();
		List<String> fields = new ArrayList<String>();
		boolean nonNull = false;
		String stream;
		while ((stream = getStreamExtractor(parts)) != null) {
			streams.add(stream);
			String name = next(parts);
			if (name == null)
				fields.add(null);
			else {
				nonNull = true;
				fields.add("\"" + name + "\"XX" + System.currentTimeMillis() + "XX");
			}
		}
		String fieldNames = nonNull ? "new String[]{" + stringifyCollection(fields) + "}" : "null";
		return String.format("new ArrayExtractor(%s,%d,new StreamExtractor[]{%s}, %s)", counter, extra,
				stringifyCollection(streams), fieldNames);
	}