anchor.diff:          );
           // TODO(grouma) - This shouldn't be necessary but package:dwds does
           // not properly provide superclass information.
  -        final clazz = await controller.getObject(instance.classRef);
  +        final clazz = await classFor(instance.classRef, controller);
           result.addAll(instance.fields
               .map((field) => field.decl.name)
               .where((member) => _isAccessible(member, clazz, controller)));
  
positive.code:       controller.stackFramesWithLocation.value.first.frame;
    final currentScript = frame.location.script;
    return !member.startsWith('_') ||
        currentScript.id == clazz.location?.script?.id;
  }
  
negative.code:   DebuggerController controller,
  ) async {
    final result = <String>{};
    final clazz = await classFor(classRef, controller);
    if (clazz != null) {
      result.addAll(clazz.fields.map((field) => field.name));
      result.addAll(clazz.functions
          .where((funcRef) => _validFunction(funcRef, clazz))
          // The VM shows setters as `<member>=`.
          .map((funcRef) => funcRef.name.replaceAll('=', '')));
      result.addAll(await _autoCompleteMembersFor(clazz.superClass, controller));
      result.removeWhere((member) => !_isAccessible(member, clazz, controller));
    }
    return result;
  }
  
  /// Returns the class for the provided [ClassRef].
  ///
  /// May return null.
  Future<Class> classFor(ClassRef classRef, DebuggerController controller) async {
    try {
      return await controller.getObject(classRef);
    } catch (_) {}
    return null;
  }
  
  bool _validFunction(FuncRef funcRef, Class clazz) {
  