static string MakeMessageInternals(HereOptions options, int index)
    {
        StackFrame first     = null;
        var        _FileName = new StringBuilder();
        var        _FileLine = new StringBuilder();
        var        _Member   = new StringBuilder();
        var        _Type     = new StringBuilder();

        if ((options & HereOptions.FileName) == HereOptions.FileName)
        {
            first = GetCaller(index);
            if (first != null)
            {
                var fn = first.GetFileName();
                if (!string.IsNullOrEmpty(fn))
                {
                    _FileName.Append(" " + Path.GetFileName(fn));
                }
            }
        }

        if ((options & HereOptions.FileLine) == HereOptions.FileLine)
        {
            if (first == null)
            {
                first = GetCaller(index);
            }
            if (first != null)
            {
                var ln = first.GetFileLineNumber();
                _FileLine.Append(" #" + ln);
            }
        }

        if ((options & HereOptions.Member) == HereOptions.Member)
        {
            if (first == null)
            {
                first = GetCaller(index);
            }
            if (first != null)
            {
                var mn = first.GetMethod().Name;
                _Member.Append(" " + mn);
            }
        }

        if ((options & HereOptions.Type) == HereOptions.Type)
        {
            if (first == null)
            {
                first = GetCaller(index);
            }
            if (first != null)
            {
                var dt = first.GetMethod().DeclaringType;
                _Type.Append(string.Format(" ({0})", dt));
            }
        }

        var messageInternal = string.Format("{0}{1}{2}{3}",
                                            _FileName,
                                            _FileLine,
                                            _Member,
                                            _Type).Trim();

        return(messageInternal);
    }
 public static string Spot(HereOptions options)
 {
     return(MakeMessageInternals(options, 3));
 }