anchor.diff:          var fieldPath = 'fieldPath';
   
           b..name = '_violation'
  -         ..returns = refer('ConstraintViolation', 'package:spine_base/spine/validate/validation_error.pb.dart')
  +         ..returns = refer('ConstraintViolation', _validationErrorImport)
            ..requiredParameters.add(Parameter((b) => b..type = refer('String')..name = msgFormat))
            ..requiredParameters.add(Parameter((b) => b..type = refer('String')..name = typeName))
            ..requiredParameters.add(Parameter((b) => b..type = TypeReference((b) => b..symbol = 'List'..types.add(refer('String')))..name = fieldPath))
   
            ..body = Block.of([
  -             refer('ConstraintViolation', 'package:spine_base/spine/validate/validation_error.pb.dart').newInstance([]).assignVar(violation).statement,
  +             refer('ConstraintViolation', _validationErrorImport).newInstance([]).assignVar(violation).statement,
                violationRef.property('msgFormat').assign(refer(msgFormat)).statement,
                violationRef.property('typeName').assign(refer(typeName)).statement,
                refer('FieldPath', 'package:spine_base/spine/base/field_path.pb.dart').newInstance([]).assignVar('path').statement,
  
positive.code: 
  const _violations = 'violations';
  
  Code _createValidator(DescriptorProto descriptor, String fullName) {
      var violation = refer('ConstraintViolation', 'package:spine_base/spine/validate/validation_error.pb.dart');
      var validations = <Code>[];
      for (var field in descriptor.field) {
          var validator = _createFieldValidator(field, fullName, descriptor.name);
          if (validator != null) {
              validations.add(validator);
          }
  
negative.code:         var statements = <Code>[];
          statements.add(literalList([], violation).assignVar(_violations).statement);
          statements.addAll(validations);
          statements.add(refer('ValidationError', _validationErrorImport).newInstance([]).assignVar('error').statement);
          statements.add(refer('error').property('constraintViolation').property('addAll').call([refer(_violations)]).statement);
          statements.add(refer('error').returned.statement);
          return Block.of(statements);
      }
  }
  
  Code _createFieldValidator(FieldDescriptorProto field, String fullTypeName, String shortTypeName, Allocator allocator, String fileName) {
      if (field.options.getExtension(Options.required)) {
          var fieldValue = refer(_msg).asA(refer(allocator.allocate(refer(shortTypeName, fileName)))).property(field.name);
          if (field.type == FieldDescriptorProto_Type.TYPE_STRING) {
              return Block.of([
                  fieldValue.property('isEmpty').conditional(
  