/// <summary>
            /// Starts the state class extraction from the given role class.
            /// </summary>
            /// <param name="sourceType">The role class to extract the state class from.</param>
            public override void Visit(TypeDefinition sourceType)
            {
                Tracer.TraceVerbose("Extract state class: {0} => {1}", sourceType.ToString(), TargetTypeName);

                TargetType = new TypeDefinition(
                  string.Empty,
                  TargetTypeName,
                  TypeAttributes.NestedPublic |
                  TypeAttributes.Sealed |
                  TypeAttributes.AnsiClass | TypeAttributes.BeforeFieldInit,
                  sourceType.Module.Import(typeof(object))
                );
                TargetType.CopyGenericParametersFrom(sourceType);
                AddStateProperty();
                CreateDefaultConstructor();
            }