anchor.diff:      | (CONSTRAINT ignoredIdentifier_)? FOREIGN KEY lobItemList referencesClause constraintState*
       ;
   
  -encryptionSpec
  -    : (USING STRING_)? (IDENTIFIED BY STRING_)? STRING_? (NO? SALT)?
  +tableProperties
  +    : columnProperties? (AS unionSelect)?
  +    ;
  +
  +unionSelect
  +    : matchNone
  +    ;
  +
  +alterTableProperties
  +    : renameTableSpecification_ | REKEY encryptionSpec
  +    ;
  +
  +renameTableSpecification_
  +    : RENAME TO newTableName
  +    ;
  +
  +newTableName
  +    : IDENTIFIER_
  +    ;
  +
  +columnClauses
  +    : opColumnClause+ | renameColumnSpecification
  +    ;
  +
  +opColumnClause
  +    : addColumnSpecification | modifyColumnSpecification | dropColumnClause
  +    ;
  +
  +addColumnSpecification
  +    : ADD columnOrVirtualDefinitions columnProperties?
  +    ;
  +
  +columnOrVirtualDefinitions
  +    : LP_ columnOrVirtualDefinition (COMMA_ columnOrVirtualDefinition)* RP_ | columnOrVirtualDefinition
  +    ;
  +
  +columnOrVirtualDefinition
  +    : columnDefinition | virtualColumnDefinition
  +    ;
  +
  +modifyColumnSpecification
  +    : MODIFY (LP_? modifyColProperties (COMMA_ modifyColProperties)* RP_? | modifyColSubstitutable)
  +    ;
  +
  +modifyColProperties
  +    : columnName dataType? (DEFAULT expr)? (ENCRYPT encryptionSpec | DECRYPT)? inlineConstraint* 
  +    ;
  +
  +modifyColSubstitutable
  +    : COLUMN columnName NOT? SUBSTITUTABLE AT ALL LEVELS FORCE?
  +    ;
  +
  +dropColumnClause
  +    : SET UNUSED columnOrColumnList cascadeOrInvalidate* | dropColumnSpecification
  +    ;
  +
  +dropColumnSpecification
  +    : DROP columnOrColumnList cascadeOrInvalidate* checkpointNumber?
  +    ;
  +
  +columnOrColumnList
  +    : COLUMN columnName | LP_ columnName (COMMA_ columnName)* RP_
  +    ;
  +
  +cascadeOrInvalidate
  +    : CASCADE CONSTRAINTS | INVALIDATE
  +    ;
  +
  +checkpointNumber
  +    : CHECKPOINT NUMBER_
  +    ;
  +
  +renameColumnSpecification
  +    : RENAME COLUMN columnName TO columnName
  +    ;
  +
  +constraintClauses
  +    : addConstraintSpecification | modifyConstraintClause | renameConstraintClause | dropConstraintClause+
  +    ;
  +
  +addConstraintSpecification
  +    : ADD (outOfLineConstraint+ | outOfLineRefConstraint)
  +    ;
  +
  +modifyConstraintClause
  +    : MODIFY constraintOption constraintState+ CASCADE?
  +    ;
  +
  +constraintWithName
  +    : CONSTRAINT ignoredIdentifier_
  +    ;
  +
  +constraintOption
  +    : constraintWithName | constraintPrimaryOrUnique
  +    ;
  +
  +constraintPrimaryOrUnique
  +    : primaryKey | UNIQUE columnNames
  +    ;
  +
  +renameConstraintClause
  +    : RENAME constraintWithName TO ignoredIdentifier_
  +    ;
  +
  +dropConstraintClause
  +    : DROP
  +    (
  +    constraintPrimaryOrUnique CASCADE? ((KEEP | DROP) INDEX)? | (CONSTRAINT ignoredIdentifier_ CASCADE?)
  +    ) 
  +    ;
  +
  +alterExternalTable
  +    : (addColumnSpecification | modifyColumnSpecification | dropColumnSpecification)+
       ;
   
   objectProperties
  
positive.code: 
  relationalProperty
      : columnDefinition | virtualColumnDefinition | outOfLineConstraint | outOfLineRefConstraint
      ;
  
  tableProperties
      : columnProperties? (AS unionSelect)?
      ;
  
  unionSelect
      : matchNone
      ;
  
  alterTableProperties
      : renameTableSpecification_ | REKEY encryptionSpec
      ;
  
  renameTableSpecification_
      : RENAME TO newTableName
      ;
  
  newTableName
      : IDENTIFIER_
      ;
  
  columnClauses
      : opColumnClause+ | renameColumnSpecification
      ;
  
  opColumnClause
      : addColumnSpecification | modifyColumnSpecification | dropColumnClause
      ;
  
  addColumnSpecification
      : ADD columnOrVirtualDefinitions columnProperties?
      ;
  
  columnOrVirtualDefinitions
      : LP_ columnOrVirtualDefinition (COMMA_ columnOrVirtualDefinition)* RP_ | columnOrVirtualDefinition
      ;
  
  columnOrVirtualDefinition
      : columnDefinition | virtualColumnDefinition
      ;
  
  modifyColumnSpecification
      : MODIFY (LP_? modifyColProperties (COMMA_ modifyColProperties)* RP_? | modifyColSubstitutable)
      ;
  
  modifyColProperties
      : columnName dataType? (DEFAULT expr)? (ENCRYPT encryptionSpec | DECRYPT)? inlineConstraint* 
      ;
  
  modifyColSubstitutable
      : COLUMN columnName NOT? SUBSTITUTABLE AT ALL LEVELS FORCE?
      ;
  
  dropColumnClause
      : SET UNUSED columnOrColumnList cascadeOrInvalidate* | dropColumnSpecification
      ;
  
  dropColumnSpecification
      : DROP columnOrColumnList cascadeOrInvalidate* checkpointNumber?
      ;
  
  columnOrColumnList
      : COLUMN columnName | LP_ columnName (COMMA_ columnName)* RP_
      ;
  
  cascadeOrInvalidate
      : CASCADE CONSTRAINTS | INVALIDATE
      ;
  
  checkpointNumber
      : CHECKPOINT NUMBER_
      ;
  
  renameColumnSpecification
      : RENAME COLUMN columnName TO columnName
      ;
  
  constraintClauses
      : addConstraintSpecification | modifyConstraintClause | renameConstraintClause | dropConstraintClause+
      ;
  
  addConstraintSpecification
      : ADD (outOfLineConstraint+ | outOfLineRefConstraint)
      ;
  
  modifyConstraintClause
      : MODIFY constraintOption constraintState+ CASCADE?
      ;
  
  constraintWithName
      : CONSTRAINT ignoredIdentifier_
      ;
  
  constraintOption
      : constraintWithName | constraintPrimaryOrUnique
      ;
  
  constraintPrimaryOrUnique
      : primaryKey | UNIQUE columnNames
      ;
  
  renameConstraintClause
      : RENAME constraintWithName TO ignoredIdentifier_
      ;
  
  dropConstraintClause
      : DROP
      (
      constraintPrimaryOrUnique CASCADE? ((KEEP | DROP) INDEX)? | (CONSTRAINT ignoredIdentifier_ CASCADE?)
      ) 
      ;
  
  alterExternalTable
      : (addColumnSpecification | modifyColumnSpecification | dropColumnSpecification)+
      ;
  
  columnDefinition
  
negative.code:     : indexTypeName
      ;
  
  createDefinitionClause_
      : (LP_ relationalProperties RP_)? (ON COMMIT (DELETE | PRESERVE) ROWS)?
      ;
  
  