/// <summary>
        /// Constructs FillMessageObject
        /// </summary>
        /// <returns>CodeMemberMethod</returns>
        private CodeMemberMethod FillMessageObject()
        {
            CodeMemberMethod FillMessageObject = null;

            try
            {
                FillMessageObject = new CodeMemberMethod
                {
                    Name       = "FillMessageObject",
                    Attributes = MemberAttributes.Private
                };

                //method parameters
                FillMessageObject.Parameters.Add(new CodeParameterDeclarationExpression(typeof(string), "sMethod"));
                FillMessageObject.Parameters.Add(new CodeParameterDeclarationExpression(typeof(string), "sErrNumber"));
                FillMessageObject.Parameters.Add(new CodeParameterDeclarationExpression(typeof(string), "sErrMessage"));

                //method summary
                AddMethodSummary(FillMessageObject, "Fills the Message object when an error occurs");

                CodeTryCatchFinallyStatement TryBlock = AddTryBlock(FillMessageObject);

                TryBlock.TryStatements.Add(AddTrace(FillMessageObject, TraceSeverity.Info));
                TryBlock.TryStatements.Add(DeclareVariableAndAssign("ISessionManager", "ISManager", true, SnippetExpression("(ISessionManager)System.Web.HttpContext.Current.Session[\"SessionManager\"]")));
                TryBlock.TryStatements.Add(DeclareVariableAndAssign("IMessage", "Imsg", true, SnippetExpression("ISManager.GetMessageObject()")));

                CodeMethodInvokeExpression AddMessage = MethodInvocationExp(TypeReferenceExp("Imsg"), "AddMessage");
                AddParameters(AddMessage, new object[] { ArgumentReferenceExp("sErrNumber"), ArgumentReferenceExp("sErrMessage"), ArgumentReferenceExp("sMethod"), GetProperty(TypeReferenceExp(typeof(string)), "Empty"), PrimitiveExpression("5") });
                TryBlock.TryStatements.Add(AddMessage);

                CodeCatchClause catchBlock = CodeDomHelper.AddCatchBlock(TryBlock);
                catchBlock.Statements.Add(AddTrace(FillMessageObject, TraceSeverity.Error));
                CodeDomHelper.ThrowException(catchBlock);
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("FillMessageObject->{0}", !object.Equals(ex.InnerException, null) ? ex.InnerException.Message : ex.Message));
            }
            return(FillMessageObject);
        }
        /// <summary>
        /// Construct GetILBOEx method
        /// </summary>
        /// <returns>CodeMemberMethod</returns>
        private CodeMemberMethod GetILBOEx()
        {
            CodeMemberMethod           GetILBOEx        = null;
            CodeMethodInvokeExpression MethodInvokation = null;

            try
            {
                GetILBOEx = new CodeMemberMethod
                {
                    Name       = "GetILBOEx",
                    Attributes = MemberAttributes.Public | MemberAttributes.Override,
                    ReturnType = new CodeTypeReference("IILBO")
                };

                //method Parameters
                GetILBOEx.Parameters.Add(new CodeParameterDeclarationExpression(typeof(string), "sILBOCode"));
                GetILBOEx.Parameters.Add(new CodeParameterDeclarationExpression(typeof(long), "lILBOIndex"));

                //method summary
                AddMethodSummary(GetILBOEx, "Creates/Gets the Object Handle of the ILBO");

                CodeTryCatchFinallyStatement TryBlock = AddTryBlock(GetILBOEx);
                TryBlock.TryStatements.Add(AddTrace(GetILBOEx, TraceSeverity.Info));

                TryBlock.TryStatements.Add(SnippetStatement("switch(sILBOCode)"));
                TryBlock.TryStatements.Add(SnippetStatement("{"));

                //GlobalVar.codeGeneration.activities[sName].ILBOList;
                foreach (ILBO ilbo in this._activity.ILBOs)
                {
                    string mILBOName = string.Format("m_o{0}", ilbo.Code);

                    TryBlock.TryStatements.Add(SnippetStatement(string.Format("case \"{0}\":", ilbo.Code)));

                    CodeConditionStatement ifCondition = new CodeConditionStatement();

                    //if condition
                    MethodInvokation = MethodInvocationExp(TypeReferenceExp(string.Format("{0}_Cyclic", mILBOName)), "ContainsKey");
                    AddParameters(MethodInvokation, new Object[] { new CodeBinaryOperatorExpression(VariableReferenceExp("lILBOIndex"), CodeBinaryOperatorType.Subtract, PrimitiveExpression(1)) });
                    ifCondition.Condition = new CodeBinaryOperatorExpression(MethodInvokation, CodeBinaryOperatorType.IdentityInequality, PrimitiveExpression(true));

                    //content for the if condition
                    MethodInvokation = MethodInvocationExp(TypeReferenceExp(string.Format("{0}_Cyclic", mILBOName)), "Add");
                    AddParameters(MethodInvokation, new Object[] { new CodeBinaryOperatorExpression(VariableReferenceExp("lILBOIndex"), CodeBinaryOperatorType.Subtract, PrimitiveExpression(1)), new CodeObjectCreateExpression(string.Format("{0}", ilbo.Code)) });
                    ifCondition.TrueStatements.Add(MethodInvokation);

                    //adding if condition to tryblock
                    TryBlock.TryStatements.Add(ifCondition);

                    //return statement for this case
                    TryBlock.TryStatements.Add(ReturnExpression(new CodeArrayIndexerExpression(VariableReferenceExp(string.Format("{0}_Cyclic", mILBOName)), new CodeBinaryOperatorExpression(VariableReferenceExp("lILBOIndex"), CodeBinaryOperatorType.Subtract, PrimitiveExpression(1)))));
                }

                //default case
                TryBlock.TryStatements.Add(SnippetStatement(string.Format("default:")));
                MethodInvokation = MethodInvocationExp(BaseReferenceExp(), GetILBOEx.Name);
                AddParameters(MethodInvokation, new Object[] { ArgumentReferenceExp(GetILBOEx.Parameters[0].Name), ArgumentReferenceExp(GetILBOEx.Parameters[1].Name) });
                TryBlock.TryStatements.Add(ReturnExpression(MethodInvokation));

                TryBlock.TryStatements.Add(new CodeSnippetStatement("}//ENDSWITCH")); // close braces for switch case

                CodeCatchClause catchBlock = CodeDomHelper.AddCatchBlock(TryBlock);
                catchBlock.Statements.Add(AddTrace(GetILBOEx, TraceSeverity.Error));
                CodeDomHelper.ThrowException(catchBlock);
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("GetILBOEx->{0}", !object.Equals(ex.InnerException, null) ? ex.InnerException.Message : ex.Message));
            }
            return(GetILBOEx);
        }
        /// <summary>
        /// Constructs DisposeILBOEx
        /// </summary>
        /// <returns>CodeMemberMethod</returns>
        private CodeMemberMethod DisposeILBOEx()
        {
            CodeMemberMethod           DisposeILBOEx    = null;
            CodeMethodInvokeExpression MethodInvokation = null;

            try
            {
                DisposeILBOEx = new CodeMemberMethod
                {
                    Name       = "DisposeILBOEx",
                    Attributes = MemberAttributes.Public | MemberAttributes.Override
                };

                //method parameters
                DisposeILBOEx.Parameters.Add(new CodeParameterDeclarationExpression(new CodeTypeReference(typeof(System.String)), "sILBOCode"));
                DisposeILBOEx.Parameters.Add(new CodeParameterDeclarationExpression(new CodeTypeReference(typeof(long)), "lILBOIndex"));

                //method summary
                AddMethodSummary(DisposeILBOEx, "Disposes the Object Handle of the ILBO");

                CodeTryCatchFinallyStatement TryBlock = CodeDomHelper.AddTryBlock(DisposeILBOEx);
                TryBlock.TryStatements.Add(AddTrace(DisposeILBOEx, TraceSeverity.Info));

                //switch case
                TryBlock.TryStatements.Add(SnippetStatement("switch(sILBOCode)"));
                TryBlock.TryStatements.Add(SnippetStatement("{"));

                //for each ilbo
                foreach (ILBO ilbo in this._activity.ILBOs)
                {
                    string mILBOName = string.Format("m_o{0}", ilbo.Code);

                    TryBlock.TryStatements.Add(SnippetStatement(string.Format("case \"{0}\":", ilbo.Code)));

                    CodeConditionStatement ILBOIndexCheck = new CodeConditionStatement(new CodeBinaryOperatorExpression(ArgumentReferenceExp(DisposeILBOEx.Parameters[1].Name), CodeBinaryOperatorType.GreaterThan, PrimitiveExpression(0)));

                    //ILBOIndexCheck.TrueStatements.Add( MethodInvocationExp( CastExpression(ilbo.Name.ToLowerInvariant(), ArrayIndexerExpression(string.Format("{0}_Cyclic", mILBOName), BinaryOpertorExpression(ArgumentReferenceExp("lILBOIndex"), CodeBinaryOperatorType.Subtract, PrimitiveExpression(1)))),"Clear"));
                    MethodInvokation = MethodInvocationExp(TypeReferenceExp(string.Format("{0}_Cyclic", mILBOName)), "Remove");
                    AddParameters(MethodInvokation, new Object[] { new CodeBinaryOperatorExpression(ArgumentReferenceExp(DisposeILBOEx.Parameters[1].Name), CodeBinaryOperatorType.Subtract, PrimitiveExpression(1)) });
                    ILBOIndexCheck.TrueStatements.Add(MethodInvokation);

                    MethodInvokation = MethodInvocationExp(TypeReferenceExp(string.Format("{0}_Cyclic", mILBOName)), "Clear");
                    ILBOIndexCheck.FalseStatements.Add(MethodInvokation);

                    TryBlock.TryStatements.Add(ILBOIndexCheck);
                    TryBlock.TryStatements.Add(SnippetExpression("break"));
                }

                //default case
                TryBlock.TryStatements.Add(SnippetStatement(string.Format("default:")));

                MethodInvokation = MethodInvocationExp(BaseReferenceExp(), DisposeILBOEx.Name);
                AddParameters(MethodInvokation, new Object[] { ArgumentReferenceExp(DisposeILBOEx.Parameters[0].Name), ArgumentReferenceExp(DisposeILBOEx.Parameters[1].Name) });
                TryBlock.TryStatements.Add(MethodInvokation);

                TryBlock.TryStatements.Add(SnippetExpression("break"));

                TryBlock.TryStatements.Add(SnippetStatement("}//ENDSWITCH")); //close braces for switch case

                CodeCatchClause catchBlock = CodeDomHelper.AddCatchBlock(TryBlock);
                catchBlock.Statements.Add(FillMessageObject(DisposeILBOEx, SnippetExpression("string.Format(\"activity : DisposeILBOEx(sILBOCode=\\\"{0}\\\")\",sILBOCode)")));
                ThrowException(catchBlock);
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("DiposeILBOEx->{0}", !object.Equals(ex.InnerException, null) ? ex.InnerException.Message : ex.Message));
            }
            return(DisposeILBOEx);
        }
        /// <summary>
        /// Constructs DisposeILBO method
        /// </summary>
        /// <returns>CodeMemberMethod</returns>
        private CodeMemberMethod DisposeILBO()
        {
            CodeMemberMethod           DisposeILBO      = null;
            CodeMethodInvokeExpression MethodInvokation = null;

            try
            {
                DisposeILBO = new CodeMemberMethod
                {
                    Name       = "DisposeILBO",
                    Attributes = MemberAttributes.Public | MemberAttributes.Override
                };

                //method parameters
                DisposeILBO.Parameters.Add(new CodeParameterDeclarationExpression(typeof(string), "sILBOCode"));

                //method summary
                AddMethodSummary(DisposeILBO, "Disposes the Object Handle of the ILBO");

                //try block
                CodeTryCatchFinallyStatement TryBlock = CodeDomHelper.AddTryBlock(DisposeILBO);
                TryBlock.TryStatements.Add(AddTrace(DisposeILBO, TraceSeverity.Info));

                //switch case
                TryBlock.TryStatements.Add(SnippetStatement("switch(sILBOCode)"));
                TryBlock.TryStatements.Add(SnippetStatement("{"));


                //case for each ilbo
                foreach (ILBO ilbo in this._activity.ILBOs)
                {
                    string mILBOName = string.Format("m_o{0}", ilbo.Code);

                    TryBlock.TryStatements.Add(SnippetStatement(string.Format("case \"{0}\":", ilbo.Code)));

                    CodeConditionStatement ILBONullCheck = new CodeConditionStatement(new CodeBinaryOperatorExpression(TypeReferenceExp(string.Format("{0}", mILBOName)), CodeBinaryOperatorType.IdentityInequality, SnippetExpression("null")));

                    //ILBONullCheck.TrueStatements.Add(MethodInvocationExp(TypeReferenceExp(mILBOName), "Clear"));
                    ILBONullCheck.TrueStatements.Add(AssignVariable(mILBOName, SnippetExpression("null")));

                    AddExpressionToTryBlock(TryBlock, ILBONullCheck);

                    TryBlock.TryStatements.Add(SnippetExpression("break"));
                }

                //default case
                TryBlock.TryStatements.Add(SnippetStatement(string.Format("default:")));
                MethodInvokation = MethodInvocationExp(BaseReferenceExp(), "DisposeILBO");
                AddParameters(MethodInvokation, new Object[] { VariableReferenceExp("sILBOCode") });
                TryBlock.TryStatements.Add(MethodInvokation);
                TryBlock.TryStatements.Add(SnippetExpression("break"));


                TryBlock.TryStatements.Add(SnippetStatement("}//ENDSWITCH"));//close braces for switch case

                CodeCatchClause catchBlock = CodeDomHelper.AddCatchBlock(TryBlock);
                catchBlock.Statements.Add(FillMessageObject(DisposeILBO, SnippetExpression("string.Format(\"activity : DisposeILBO(sILBOCode=\\\"{0}\\\")\",sILBOCode)")));
                CodeDomHelper.ThrowException(catchBlock);
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("DisposeILBO->{0}", !object.Equals(ex.InnerException, null) ? ex.InnerException.Message : ex.Message));
            }
            return(DisposeILBO);
        }