hunk.code_window: import { Implement as GuardInterface, Schema as GuardOptions } from './schema';
   export default function (options: GuardOptions): Rule {
     if (options.implements && options.implements.length > 0 && options.guardType) {
       throw new SchematicsException('Options "implements" and "guardType" cannot be used together.');
     }
  
hunk.labels: keep keep keep replace replace keep keep
hunk.after_edit:   if (!options.implements) {
       throw new SchematicsException('Option "implements" is required.');
     }
     if (options.implements.length > 1 && options.functional) {
       throw new SchematicsException(
         'Can only specify one value for implements when generating a functional guard.',
       );
  
hunk.file_path: packages/schematics/angular/guard/index.ts
hunk.type: replace
file: {
    "$schema": "http://json-schema.org/draft-07/schema",
    "$id": "SchematicsAngularGuard",
    "title": "Angular Guard Options Schema",
    "type": "object",
    "description": "Generates a new, generic route guard definition in the given or default project.",
    "additionalProperties": false,
    "properties": {
      "name": {
        "type": "string",
        "description": "The name of the new route guard.",
        "$default": {
          "$source": "argv",
          "index": 0
        },
        "x-prompt": "What name would you like to use for the guard?"
      },
      "skipTests": {
        "type": "boolean",
        "description": "Do not create \"spec.ts\" test files for the new guard.",
        "default": false
      },
      "flat": {
        "type": "boolean",
        "description": "When true (the default), creates the new files at the top level of the current project.",
        "default": true
      },
      "path": {
        "type": "string",
        "format": "path",
        "$default": {
          "$source": "workingDirectory"
        },
        "description": "The path at which to create the interface that defines the guard, relative to the current workspace.",
        "visible": false
      },
      "project": {
        "type": "string",
        "description": "The name of the project.",
        "$default": {
          "$source": "projectName"
        }
      },
      "implements": {
        "type": "array",
        "description": "Specifies which interfaces to implement.",
        "uniqueItems": true,
        "minItems": 1,
        "items": {
          "enum": ["CanActivate", "CanActivateChild", "CanDeactivate", "CanLoad", "CanMatch"],
          "type": "string"
        }
      },
      "guardType": {
        "type": "string",
        "description": "Specifies type of guard to generate.",
        "enum": ["canActivate", "canActivateChild", "canDeactivate", "canLoad", "canMatch"]
      }
    },
    "required": ["name", "project"]
  }
  