public IEnumerable<ItemType> ProcessOperation(textfilecontent54_object fileContentObject)
        {
            IEnumerable<string> fileNames = null;
            IEnumerable<string> paths = null;

            var fileEntities = FileContentOvalHelper.GetFileContentEntitiesFromObjectType(fileContentObject);            
            var pattern = ((EntityObjectStringType)fileContentObject.GetItemValue(textfilecontent54_ItemsChoices.pattern)).Value;
            
            if (fileContentObject.IsFilePathDefined())
            {
                var filePath = this.GetDictionaryWithElement(textfilecontent54_ItemsChoices.filepath,fileEntities);
                var filePathOperationResult = this.PathOperatorEvaluator.ProcessOperationFilePath(filePath);
                fileNames = filePathOperationResult.FileNames;
                paths = filePathOperationResult.Paths;
            }
            else
            {
                paths = this.ProcessOperationsPaths(fileEntities);    
                fileNames = this.ProcessOperationsFileNames(fileEntities, paths);                                          
            }
            
            var itemTypes = this.ProcessOperationsPatterns(fileContentObject, fileNames);
            
            return this.ProcessOperationsInstance(itemTypes,fileContentObject);
        }
        public static Dictionary<string, EntitySimpleBaseType> GetFileContentEntitiesFromObjectType(textfilecontent54_object textFileContentObject)
        {
            string fileName = textfilecontent54_ItemsChoices.filename.ToString();
            string filePath = textfilecontent54_ItemsChoices.filepath.ToString();
            string path = textfilecontent54_ItemsChoices.path.ToString();
            string pattern = textfilecontent54_ItemsChoices.pattern.ToString();
            string instance = textfilecontent54_ItemsChoices.instance.ToString();

            object[] allEntities = textFileContentObject.Items.ToArray();
            string[] allEntityNames = textFileContentObject.Textfilecontent54ItemsElementName.Select(i => i.ToString()).ToArray<String>();

            Dictionary<String, EntitySimpleBaseType> fileContentEntities = new Dictionary<string, EntitySimpleBaseType>();
            if (textFileContentObject.IsFilePathDefined())
            {
                fileContentEntities.Add(filePath, OvalHelper.GetEntityObjectByName(filePath, allEntities, allEntityNames));
            }
            else
            {
                fileContentEntities.Add(fileName, OvalHelper.GetEntityObjectByName(fileName, allEntities, allEntityNames));
                fileContentEntities.Add(path, OvalHelper.GetEntityObjectByName(path, allEntities, allEntityNames));
            }

            fileContentEntities.Add(pattern, OvalHelper.GetEntityObjectByName(pattern, allEntities, allEntityNames));
            fileContentEntities.Add(instance, OvalHelper.GetEntityObjectIntTypeByName(instance, allEntities, allEntityNames));
            return fileContentEntities;

        }
        public IEnumerable<ObjectType> CreateFileObjects(
            textfilecontent54_object fileContentObject,
            IEnumerable<string> filePaths,
            IEnumerable<string> fileNames,
            IEnumerable<string> paths,
            IEnumerable<string> patterns,
            IEnumerable<string> instances)
        {
            var fileContentObjects = new List<ObjectType>();

            if (fileContentObject.IsFilePathDefined())
                this.CreateFileObjectsWithFilePath(fileContentObject, filePaths, patterns, instances, fileContentObjects);
            else
                this.CreateFileObjectsWithoutFilePath(fileContentObject, fileNames, paths, patterns, instances, fileContentObjects);

            return fileContentObjects;
        }
        private void AssertEntityNamesOrder(textfilecontent54_object textFileContentObject)
        {
            if (textFileContentObject.IsFilePathDefined())
            {
                var firstElement = textFileContentObject.Textfilecontent54ItemsElementName.ElementAt(0);
                var secondElement = textFileContentObject.Textfilecontent54ItemsElementName.ElementAt(1);
                var thirdElement = textFileContentObject.Textfilecontent54ItemsElementName.ElementAt(2);
                var fourthElement = textFileContentObject.Textfilecontent54ItemsElementName.ElementAt(3);

                Assert.AreEqual(textfilecontent54_ItemsChoices.behaviors, firstElement, UNEXPECTED_ENTITY_ORDER);
                Assert.AreEqual(textfilecontent54_ItemsChoices.filepath, secondElement, UNEXPECTED_ENTITY_ORDER);
                Assert.AreEqual(textfilecontent54_ItemsChoices.pattern, thirdElement, UNEXPECTED_ENTITY_ORDER);
                Assert.AreEqual(textfilecontent54_ItemsChoices.instance, fourthElement, UNEXPECTED_ENTITY_ORDER);
            }
            else
            {
                var firstElement = textFileContentObject.Textfilecontent54ItemsElementName.ElementAt(0);
                var secondElement = textFileContentObject.Textfilecontent54ItemsElementName.ElementAt(1);
                var thirdElement = textFileContentObject.Textfilecontent54ItemsElementName.ElementAt(2);
                var fourthElement = textFileContentObject.Textfilecontent54ItemsElementName.ElementAt(3);
                var fifthElement = textFileContentObject.Textfilecontent54ItemsElementName.ElementAt(4);

                Assert.AreEqual(textfilecontent54_ItemsChoices.behaviors, firstElement, UNEXPECTED_ENTITY_ORDER);
                Assert.AreEqual(textfilecontent54_ItemsChoices.path, secondElement, UNEXPECTED_ENTITY_ORDER);
                Assert.AreEqual(textfilecontent54_ItemsChoices.filename, thirdElement, UNEXPECTED_ENTITY_ORDER);
                Assert.AreEqual(textfilecontent54_ItemsChoices.pattern, fourthElement, UNEXPECTED_ENTITY_ORDER);
                Assert.AreEqual(textfilecontent54_ItemsChoices.instance, fifthElement, UNEXPECTED_ENTITY_ORDER);
            }
        }
        private ObjectType CreateObjectTypeFrom(textfilecontent54_object fileContentObject, string filePath, string fileName, string path, string pattern, string instance)
        {
            EntityObjectStringType filePathFrom = null;
            EntityObjectStringType pathFrom = null;
            EntityObjectStringType fileNameFrom = null;
            EntityObjectStringType newFilePath = null;
            EntityObjectStringType newPath = null;
            EntityObjectStringType newFileName = null;

            var patternFrom = (EntityObjectStringType)fileContentObject.GetItemValue(textfilecontent54_ItemsChoices.pattern);
            var instanceFrom = (EntityObjectIntType)fileContentObject.GetItemValue(textfilecontent54_ItemsChoices.instance);

            var newPattern = this.CopyEntityObjectStringType(patternFrom);
            newPattern.Value = !string.IsNullOrEmpty(pattern) ? pattern : newPattern.Value;

            var newInstance = this.CopyEntityObjectIntType(instanceFrom);
            newInstance.Value = !string.IsNullOrEmpty(instance) ? instance : newInstance.Value;

            var behaviors = fileContentObject.Items.OfType<Textfilecontent54Behaviors>().ToArray();
            if (fileContentObject.IsFilePathDefined())
            {
                filePathFrom = (EntityObjectStringType)fileContentObject.GetItemValue(textfilecontent54_ItemsChoices.filepath);
                newFilePath = this.CopyEntityObjectStringType(filePathFrom);
                newFilePath.Value = !string.IsNullOrEmpty(filePath) ? filePath : newFilePath.Value;

                return this.CreateTextFileContentObject(newFilePath, null, null, newPattern, newInstance, behaviors);
            }
            else
            {
                pathFrom = (EntityObjectStringType)fileContentObject.GetItemValue(textfilecontent54_ItemsChoices.path);
                fileNameFrom = (EntityObjectStringType)fileContentObject.GetItemValue(textfilecontent54_ItemsChoices.filename);

                newPath = this.CopyEntityObjectStringType(pathFrom);
                newPath.Value = !string.IsNullOrEmpty(path) ? path : newPath.Value;

                newFileName = this.CopyEntityObjectStringType(fileNameFrom);
                newFileName.Value = !string.IsNullOrEmpty(fileName) ? fileName : newFileName.Value;

                return this.CreateTextFileContentObject(null, newFileName, newPath, newPattern, newInstance, behaviors);
            }
        }