These comments should be updated to explain that we try to return objects of the appropriate types and only use toString() as a fallback.