Type Inference for Variant Object Types