public void CustomEnum()
        {
            var schema = MSBuildSchema.Load(new StringReader(
                                                @"{
	""properties"": {
		""MyProp"": {
			""kind"": ""enum-mycustom""
		}
	},
	""enumKinds"": {
		""mycustom"": {
			""One"": ""x"",
			""Two"": ""y""
		}
	}
}"
                                                ), out var loadErrors);

            Assert.Zero(loadErrors.Count);

            var item = new[] { schema }.GetProperty("MyProp");

            Assert.NotNull(item);
            Assert.AreEqual(MSBuildValueKind.CustomEnum, item.ValueKind);
            Assert.NotNull(item.Values);
            Assert.AreEqual(2, item.Values.Count);
            Assert.AreEqual("One", item.Values[0].Name);
            Assert.AreEqual("Two", item.Values[1].Name);
            Assert.AreEqual("x", item.Values[0].Description.Text);
            Assert.AreEqual("y", item.Values[1].Description.Text);
        }
        public void CustomTypes()
        {
            var schema = MSBuildSchema.Load(new StringReader(
                                                @"{
	""properties"": {
		""MyProp"": {
			""type"": ""@mycustom""
		}
	},
	""customTypes"": {
		""mycustom"": {
			""$"": ""this is a comment"",
			""$name"": ""type-name"",
			""One"": ""x"",
			""Two"": ""y""
		}
	}
}"
                                                ), out var loadErrors);

            Assert.Zero(loadErrors.Count);

            var item = new[] { schema }.GetProperty("MyProp", true);

            Assert.NotNull(item);
            Assert.AreEqual(MSBuildValueKind.CustomType, item.ValueKind);
            Assert.NotNull(item.CustomType);
            Assert.AreEqual(2, item.CustomType.Values.Count);
            Assert.AreEqual("type-name", item.CustomType.Name);
            Assert.AreEqual("One", item.CustomType.Values[0].Name);
            Assert.AreEqual("Two", item.CustomType.Values[1].Name);
            Assert.AreEqual("x", item.CustomType.Values[0].Description.Text);
            Assert.AreEqual("y", item.CustomType.Values[1].Description.Text);
        }