/**
         * Parses an array of table definitions.
         *
         * @param tableDefinitionsText
         * @return
         */
        public static SimpleTableDef[] parseTableDefs(String tableDefinitionsText)
        {
            if (tableDefinitionsText == null)
            {
                return(null);
            }

            tableDefinitionsText = tableDefinitionsText.Replace("\n", "").Replace("\t", "").Replace("\r", "")
                                   .Replace("  ", " ");

            List <SimpleTableDef> tableDefs = new List <SimpleTableDef>();

            String[] tableDefinitionTexts = tableDefinitionsText.Split(';');
            foreach (String tableDefinitionText in tableDefinitionTexts)
            {
                SimpleTableDef tableDef = parseTableDef(tableDefinitionText);
                if (tableDef != null)
                {
                    tableDefs.Add(tableDef);
                }
            }

            if (tableDefs.IsEmpty())
            {
                return(null);
            }

            return(tableDefs.ToArray()); // (new SimpleTableDef[tableDefs.size()]);
        }
        } // hashCode()

        // @Override
        public bool equals(Object obj)
        {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (GetType() != obj.GetType())
                return false;
            SimpleTableDef other = (SimpleTableDef)obj;
            if (_name == null)
            {
                if (other._name != null)
                    return false;
            }
            else if (!_name.Equals(other._name))
                return false;
            if (!_columnTypes.Equals(other._columnTypes))
                return false;
            if (!_columnNames.Equals(other._columnNames))
                return false;
            return true;
        }