• Who says there's nothing on the type but those properties?

    We did.  Look at previous posts; these are the only properties and methods defined so far.

    How do you know there aren't private members that hold the geocode?

    Because they haven't been defined as of yet.  Again, see previous posts.

    How do you know that the DistanceFrom() operator can't communicate with a map server?

    As long as we're going the "how do you know ... can't ...", how do we know that the DistanceFrom operator can't make a darn good cup of coffee, toast a bagel or wash the dishes?  We know because it hasn't been defined.

    The key here is encapsulation. You don't know -- and as an end user, you shouldn't have to know -- how it works. It just works. As a DBA or developer, you know the details. But you don't need to expose them to the world.

    The key here is definition.  Whether public, private, friend or whatever you like; if it ain't defined, it don't exist.  Now you're talking about geocoding functionality.  Great!  Just like I said previously (in more than one post here), let's 1) Define the encoding interfaces and 2) Define the standard Units of Measure.  Then we can 3) Generate *useful* results.