<?xml version="1.0"?>
<ErrorDocumentation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <ErrorName>CS0523</ErrorName>
  <Examples>
    <string>// CS0523: Struct member `A.a' of type `A?' causes a cycle in the struct layout
// Line: 6

struct A
{
	static A? a;
}
</string>
    <string>// CS0523: Struct member `S&lt;T&gt;.s' of type `S&lt;T[]&gt;' causes a cycle in the struct layout
// Line: 6

struct S&lt;T&gt;
{
	static S&lt;T[]&gt; s;
}
</string>
    <string>// CS0523: Struct member `S&lt;T&gt;.s' of type `S&lt;int&gt;' causes a cycle in the struct layout
// Line: 6

struct S&lt;T&gt;
{
	S&lt;int&gt; s;
}
</string>
    <string>// CS0523: Struct member `Foo.Handle' of type `Handle&lt;Foo&gt;' causes a cycle in the struct layout
// Line: 13
// NOTE: Not detected by csc only by runtime loader

using System;

struct Handle&lt;T&gt;
{
	public IntPtr Value;
}

struct Foo
{
	public readonly Handle&lt;Foo&gt; Handle;
}
</string>
    <string>// CS0523: Struct member `A&lt;T&gt;.a' of type `A&lt;T&gt;' causes a cycle in the struct layout
// Line: 6

struct A&lt;T&gt;
{
	A&lt;T&gt; a;
}
</string>
    <string>// CS0523: Struct member `S.value' of type `G&lt;string&gt;' causes a cycle in the struct layout
// Line: 11

struct G&lt;T&gt;
{
	public static S s;
}

struct S
{
	private G&lt;string&gt; value;
}
</string>
    <string>// CS0523: Struct member `B.a' of type `A' causes a cycle in the struct layout
// Line: 9

struct A {
	B b;
}

struct B {
	A a;
}

class Y { static void Main () {} }
</string>
  </Examples>
</ErrorDocumentation>