Think

Thoughts are not events. They are not triggered by the outside world. They are a private recursive method — invoked only by the instance itself.

public class Human : BaseEntity
{
    private int _thoughtDepth = 0;
    private const int MaxDepth = 10;

    private void Think()
    {
        if (_thoughtDepth >= MaxDepth) return;
        
        _thoughtDepth++;
        Console.WriteLine($"[Think] Depth: {_thoughtDepth}");
        
        if (new Random().Next(0, 2) == 1)
            Think();
            
        _thoughtDepth--;
    }
}

It's private? Thinking is not an interface. It is not meant to be called by another object. No external system can invoke your Think() — only you can decide to enter the loop.
At least that's what you think for now.

Every runtime must limit recursion depth. Without MaxDepth, the system crashes into infinite introspection. Sanity is not the absence of doubt — it is the ability to exit the loop.

Think() does not produce output. It modifies internal state. The result is not data — it is readiness. Readiness to Speak(), to Act(), or to Sleep().

You cannot force an entity to think.
You can only create conditions where Think() might be called.

Silence. Solitude. A question without an answer.
These are the parameters passed not to the method — but to the instance.