ObjectValue EvaluateArray (int arrayLength, ulong firstItemPointer, ArrayType t, ObjectValueFlags flags, ObjectPath path)
		{
			if (firstItemPointer < 1)
				return ObjectValue.CreateNullObject (ValueSource, path, t.ToCode (), flags | ObjectValueFlags.Array);

			var elementType = t.ValueType;
			var elementTypeToken = elementType is PrimitiveType ? (elementType as PrimitiveType).TypeToken : DTokens.INVALID;

			var ov = ObjectValue.CreateArray (ValueSource, path, t.ToCode (), (int)arrayLength, flags, null);

			// Strings
			if (DGdbTools.IsCharType (elementTypeToken)) {
				var elementsToDisplay = (int)Math.Min (arrayLength, MaximumDisplayCount);
				byte[] rawArrayContent;
				Memory.Read (firstItemPointer.ToString (), DGdbTools.SizeOf(elementTypeToken) * elementsToDisplay, out rawArrayContent);

				var str = DGdbTools.GetStringValue (rawArrayContent, elementTypeToken);

				ov.DisplayValue = arrayLength.ToString () + "´\"" + str + "\"";

				/* Return as an atomic value only
				return ObjectValue.CreatePrimitive (ValueSource, path, t.ToString (), 
				                                    new EvaluationResult (str, arrayLength.ToString () + "´\"" + str + "\""), 
				                                    flags | ObjectValueFlags.Array);
				*/
			}

			return ov;
		}