code: def batch_normalize_with_arguments(x, arguments):
    
    x = prettytensor.wrap(x)
    # Backwards compatibility.
    if isinstance(arguments, bool):
      if arguments:
        return x.batch_normalize()
      else:
        return x
  
    # pylint: disable=protected-access
    kwargs = arguments._asdict()
    defaults = prettytensor._defaults
    # pylint: enable=protected-access
    for arg in ('learned_moments_update_rate', 'variance_epsilon',
                'scale_after_normalization'):
      if kwargs.get(arg, None) is None:
        if arg in defaults:
          kwargs[arg] = defaults[arg]
        else:
          del kwargs[arg]
    return x.batch_normalize(**kwargs)
docs: Applies batch normalization to x as specified in arguments.
  
    Args:
      x: A Pretty Tensor.
      arguments: Either a boolean to batch_normalize or a
        BatchNormalizationArguments
  
    Returns:
      x with batch normalization applied.