JSProcessCitationResult CreateJSProcessCitationResult(object jsResult)
        {
            if (jsResult == null)
            {
                return(null);
            }

            var jsResultArray = ExtractJSArray(jsResult);

            var items = new JSProcessCitationIndexStringPair[jsResultArray.Count];

            for (var i = 0; i < items.Length; i++)
            {
                var jsItem = ExtractJSArray(jsResultArray[i]);

                items[i] = new JSProcessCitationIndexStringPair
                {
                    Index     = i,
                    ID        = (string)jsItem[0],
                    NoteIndex = (int)jsItem[1],
                    String    = (string)jsItem[2]
                };
            }

            return(new JSProcessCitationResult(items));
        }
		JSProcessCitationResult CreateJSProcessCitationResult(object jsResult)
		{
			if (jsResult == null) return null;

			var jsResultArray = ExtractJSArray(jsResult);

			var items = new JSProcessCitationIndexStringPair[jsResultArray.Count];

			for(var i = 0; i < items.Length; i++)
			{
				var jsItem = ExtractJSArray(jsResultArray[i]);

				items[i] = new JSProcessCitationIndexStringPair
				           	{
								Index = i,
								ID = (string) jsItem[0],
				           		NoteIndex = (int) jsItem[1],
				           		String = (string) jsItem[2]
				           	};
			}

			return new JSProcessCitationResult(items);
		}
		public JSProcessCitationResult(JSProcessCitationIndexStringPair[] items)
		{
			this.items = items ?? new JSProcessCitationIndexStringPair[0];
		}