protected static string RepositoryFunctionsSnippet(QueryableExtensionInfo info)
        {
            return string.Format(
        @"public readonly Func<IQueryable<Common.Queryable.{2}_{3}>, Common.DomRepository{4}, IQueryable<Common.Queryable.{0}_{1}>> Compute =
            {5};

        ",
                info.Module.Name, info.Name, info.Base.Module.Name, info.Base.Name, DataStructureUtility.ComputationAdditionalParametersTypeTag.Evaluate(info), info.Expression);
        }
        protected static string CodeSnippet(QueryableExtensionInfo info)
        {
            return
@"public override int GetHashCode()
        {
            " + GetHashCodeTag.Evaluate(info) + @"
            return ID.GetHashCode();
        }

        public override bool Equals(object o)
        {
            " + EqualsBaseTag.Evaluate(info) + @"
            var other = o as " + info.Name + @";
            return other != null && other.ID == ID;
        }

        bool System.IEquatable<" + info.Name + @">.Equals(" + info.Name + @" other)
        {
            " + EqualsInterfaceTag.Evaluate(info) + @"
            return other != null && other.ID == ID;
        }

        ";
        }
 protected static string QuerySnippet(QueryableExtensionInfo info)
 {
     return string.Format(
         @"return Compute(_domRepository.{0}.{1}.Query(), _domRepository{2});",
         info.Base.Module.Name, info.Base.Name, DataStructureUtility.ComputationAdditionalParametersArgumentTag.Evaluate(info));
 }