code: def unwrap(data_type):
      
      unwrapped_nullable = False
      unwrapped_alias = False
      while is_alias(data_type) or is_nullable_type(data_type):
          if is_nullable_type(data_type):
              unwrapped_nullable = True
          if is_alias(data_type):
              unwrapped_alias = True
          data_type = data_type.data_type
      return data_type, unwrapped_nullable, unwrapped_alias
docs: Convenience method to unwrap all Aliases and Nullables from around a
      DataType. This checks for nullable wrapping aliases, as well as aliases
      wrapping nullables.
  
      Args:
          data_type (DataType): The target to unwrap.
  
      Return:
          Tuple[DataType, bool, bool]: The underlying data type; a bool that is
              set if a nullable was present; a bool that is set if an alias was
              present.