> In java/c# this is not an issue because you can't define functions/vars > outside classes, to use them outside their parent classes you need to use the > full name: Optional.empty()
This is not true of instance methods, nor is it true of C# extension methods. e.g., given foo.Foo(), Foo could be defined in foo's class, or in any static class for which there is a _using_ statement. The key to readable code is not prefixes, but rather good names that express the semantics of the thing named.
