def resolve_annotation(annotation: Any, globalns: Dict[(str, Any)], localns: Optional[Dict[(str, Any)]], cache: Optional[Dict[(str, Any)]]) -> Any:
    if (annotation is None):
        return type(None)
    if isinstance(annotation, str):
        annotation = ForwardRef(annotation)
    locals = (globalns if (localns is None) else localns)
    if (cache is None):
        cache = {}
    return evaluate_annotation(annotation, globalns, locals, cache)
def resolve_annotation(annotation: Any, globalns: Dict[(str, Any)], localns: Optional[Dict[(str, Any)]], cache: Optional[Dict[(str, Any)]]) -> Any:
    if (annotation is None):
        return type(None)
    if isinstance(annotation, str):
        annotation = ForwardRef(annotation)
    locals = (globalns if (localns is None) else localns)
    if (cache is None):
        cache = {}
    return evaluate_annotation(annotation, globalns, locals, cache)