public Symbol FabricWithScope(ImmutableList <Symbol> newTail)
        {
            TailHolderSymbol s = Fabric(newTail);

            s.Scope = Scope;

            return(s);
        }
        protected bool TailEquals(TailHolderSymbol other)
        {
            if (other.Tail.Count != Tail.Count)
            {
                return(false);
            }

            return(!Tail.Where((t, i) => !t.Equals(other.Tail[i])).Any());
        }