anchor.diff:        if (userInfoRequest.statusCode != 200) return null;
         try {
           final userInfo = json.decode(userInfoRequest.body);
  -        return _UserInfo(userInfo['name'], userInfo['email']);
  -      } on FormatException {
  +        final name = userInfo['name'];
  +        final email = userInfo['email'];
  +        if (name is String && email is String) {
  +          return _UserInfo(name, email);
  +        } else {
  +          log.fine(
  +              'Bad response from $userInfoEndpoint: ${userInfoRequest.body}');
  +          return null;
  +        }
  +      } on FormatException catch (e) {
  +        log.fine(
  +            'Bad response from $userInfoEndpoint ($e): ${userInfoRequest.body}');
           return null;
         }
       });
  
positive.code:     final credentials = oauth2.loadCredentials(cache);
      if (credentials == null) {
        final userInfo = await _retrieveUserInfo();
        log.message('You are now logged in as $userInfo');
      } else {
        final userInfo = await _retrieveUserInfo();
        if (userInfo == null) {
          log.warning('Your credentials seems broken.\n'
              'Run `pub logout` to delete your credentials  and try again.');
        }
        log.warning('You are already logged in as $userInfo\n'
            'Run `pub logout` to log out and try again.');
  
negative.code: import 'dart:convert';
  
  import '../command.dart';
  import '../command_runner.dart';
  import '../http.dart';
  import '../log.dart' as log;
  import '../oauth2.dart' as oauth2;
  