private void AddGetStatements(CodeStatementCollection getStatements)
 {
     CodeExpression[] simpleTypeClassExpression;
     if (!this.IsSubstitutionHead)
     {
         CodeExpression returnExp = null;
         if (this.FixedValue == null)
         {
             getStatements.Add(this.GetValueMethodCall());
             this.CheckOccurrence(getStatements);
             CodeVariableReferenceExpression returnValueExp = new CodeVariableReferenceExpression("x");
             if ((this.IsRef ? true : !this.typeRef.IsSimpleType))
             {
                 returnExp = new CodeCastExpression(this.ReturnType, returnValueExp);
             }
             else
             {
                 CodeTypeReference parseType = this.ReturnType;
                 if ((!this.typeRef.IsValueType ? false : this.IsNullable))
                 {
                     parseType = new CodeTypeReference(this.clrTypeName);
                 }
                 if (!this.IsUnion)
                 {
                     string         parseMethodName      = null;
                     CodeExpression simpleTypeExpression = this.GetSchemaDatatypeExpression();
                     if (!this.IsSchemaList)
                     {
                         parseMethodName = "ParseValue";
                     }
                     else
                     {
                         parseMethodName = "ParseListValue";
                         parseType       = new CodeTypeReference(this.clrTypeName);
                     }
                     CodeTypeReferenceExpression codeTypeReferenceExpression = CodeDomHelper.CreateTypeReferenceExp("XTypedServices");
                     simpleTypeClassExpression = new CodeExpression[] { returnValueExp, simpleTypeExpression };
                     returnExp = CodeDomHelper.CreateGenericMethodCall(codeTypeReferenceExpression, parseMethodName, parseType, simpleTypeClassExpression);
                     if (this.DefaultValue != null)
                     {
                         ((CodeMethodInvokeExpression)returnExp).Parameters.Add(new CodeFieldReferenceExpression(null, NameGenerator.ChangeClrName(this.propertyName, NameOptions.MakeDefaultValueField)));
                     }
                 }
                 else
                 {
                     CodeTypeReferenceExpression codeTypeReferenceExpression1 = CodeDomHelper.CreateTypeReferenceExp("XTypedServices");
                     simpleTypeClassExpression = new CodeExpression[] { returnValueExp, this.GetSimpleTypeClassExpression() };
                     returnExp = CodeDomHelper.CreateMethodCall(codeTypeReferenceExpression1, "ParseUnionValue", simpleTypeClassExpression);
                 }
             }
             getStatements.Add(new CodeMethodReturnStatement(returnExp));
         }
         else
         {
             getStatements.Add(new CodeMethodReturnStatement(new CodeFieldReferenceExpression(null, NameGenerator.ChangeClrName(this.propertyName, NameOptions.MakeFixedValueField))));
         }
     }
     else
     {
         this.AddSubstGetStatements(getStatements);
     }
 }