/// <summary>
        /// : classStatement.ExtendedClassNames
        /// </summary>
        /// <param name="classStatement"></param>
        /// <returns></returns>
        private static string BuildExtendedClassesSection(
            ClassStatement classStatement
            )
        {
            // Check if extendedClassName is interface
            // If all are interfaces, add ClientEntity
            var interfaceTypes = classStatement.ImplementedInterfaces;

            if (classStatement.IsInterface)
            {
                // The classStatament if for an interface, so the class will postfixed with an identifier.
                // And will need to be inherited from its created interface.
                interfaceTypes.Add(
                    new TypeStatement
                {
                    Name         = classStatement.Name,
                    GenericTypes = classStatement.GenericTypes,
                }
                    );
            }

            if (classStatement.ExtendedType == null &&
                !interfaceTypes.Any())
            {
                return(" : CachedEntityObject");
            }
            if (classStatement.ExtendedType == null)
            {
                classStatement.ExtendedType = new TypeStatement
                {
                    Name = "CachedEntityObject",
                };
            }

            return(" : " + string.Join(
                       ", ",
                       new List <string>
            {
                TypeStatementWriter.Write(
                    classStatement.ExtendedType,
                    true
                    )
            }.Concat(
                           interfaceTypes.Select(
                               interfaceType => TypeStatementWriter.Write(
                                   interfaceType,
                                   true,
                                   true
                                   )
                               )
                           ).Distinct()
                       ));
        }
        private static string BuildClassGenerics(
            ClassStatement classStatement
            )
        {
            var template = "<[[TYPE]]>";

            if (!classStatement.GenericTypes.Any())
            {
                return(string.Empty);
            }

            return(template.Replace(
                       "[[TYPE]]",
                       string.Join(
                           ", ",
                           classStatement.GenericTypes.Select(
                               genericType => TypeStatementWriter.Write(
                                   genericType
                                   )
                               )
                           )
                       ));
        }