private bool ResolveTupleTypeRenames(ITupleType tupleType, IConstraint node, out ITypeName destinationTypeName, out ICompiledType destinationType)
        {
            bool Success = false;

            destinationType     = null;
            destinationTypeName = null;

            IClass EmbeddingClass = node.EmbeddingClass;
            ISealableDictionary <string, string> SourceIdentifierTable             = new SealableDictionary <string, string>(); // string (source) -> string (destination)
            ISealableDictionary <string, string> DestinationIdentifierTable        = new SealableDictionary <string, string>(); // string (destination) -> string (source)
            ISealableDictionary <IFeatureName, IFeatureInstance> RenamedFieldTable = tupleType.FeatureTable.CloneUnsealed();

            bool AllRenameValid = true;

            foreach (KeyValuePair <IIdentifier, IIdentifier> Entry in node.RenameTable)
            {
                if (!CheckRename(Entry, new ISealableDictionary <IFeatureName, IFeatureInstance>[] { RenamedFieldTable }, SourceIdentifierTable, DestinationIdentifierTable, (IFeatureName item) => item.Name, (string name) => new FeatureName(name)))
                {
                    AllRenameValid = false;
                }
            }

            if (AllRenameValid)
            {
                destinationType     = tupleType.CloneWithRenames(RenamedFieldTable);
                destinationTypeName = new TypeName(destinationType.TypeFriendlyName);
                Success             = true;
            }

            return(Success);
        }