public static JElement ShouldBeAJsonValue(this JElement element, ElementType type, object value = null)
        {
            element.ShouldBeAJsonValue();

            if (type == ElementType.Null)
            {
                type.ShouldEqual(ElementType.Null);
                element.Value.ShouldBeNull();
            }
            else type.ShouldNotEqual(ElementType.Null);

            if (type == ElementType.String)
            {
                type.ShouldEqual(ElementType.String);
                element.Value.ShouldEqual(value);
            }
            else type.ShouldNotEqual(ElementType.String);

            if (type == ElementType.Number)
            {
                type.ShouldEqual(ElementType.Number);
                Convert.ToDecimal(element.Value).ShouldEqual(Convert.ToDecimal(value));
            }
            else type.ShouldNotEqual(ElementType.Number);

            if (type == ElementType.Boolean)
            {
                type.ShouldEqual(ElementType.Boolean);
                element.Value.ShouldEqual(value);
            }
            else type.ShouldNotEqual(ElementType.Boolean);

            return element;
        }