Package: org.apache.groovy.contracts.generation

## [Java] Class PostconditionGenerator

- org.apache.groovy.contracts.generation.PostconditionGenerator

-     public class PostconditionGenerator
      extends BaseGenerator

  Code generator for postconditions.

- - Inherited fields
    Fields inherited from class | Fields
    --- | ---
    `class BaseGenerator` | `INVARIANT_CLOSURE_PREFIX, META_DATA_USE_INLINE_MODE, source`

  - ### Constructor Summary

    Constructors
    Constructor and description
    `PostconditionGenerator(ReaderSource source)` Creates a generator for postcondition support code.

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public void` | `addOldVariablesMethod(ClassNode classNode)` Adds a synthetic method to the given `classNode` which can be used to create a map of most instance variables found in this class.
    `` | `public void` | `generateDefaultPostconditionStatement(ClassNode type, MethodNode method)` Adds a default postcondition if a postcondition has already been defined for this MethodNode in a super-class.
    `` | `public void` | `generatePostconditionAssertionStatement(MethodNode method, Postcondition postcondition)` Injects a postcondition assertion statement in the given `method`, based on the `booleanExpression`.

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class BaseGenerator` | `addCallsToSuperMethodNodeAnnotationClosure, ensureBlockBody, getInlineModeBlockStatement, getInvariantMethodName, getInvariantMethodNode, inlineModeKey, wrapAssertionBooleanExpression`

- - ### Constructor Detail

    - #### public PostconditionGenerator(ReaderSource source)

      Creates a generator for postcondition support code.

      Parameters:
        `source` - the reader source backing the current source unit

  - ### Method Detail

    - #### public void addOldVariablesMethod(ClassNode classNode)

      Adds a synthetic method to the given `classNode` which can be used to create a map of most instance variables found in this class. Used for the `old` variable mechanism.

      Parameters:
        `classNode` - the ClassNode to add the synthetic method to

    - #### public void generateDefaultPostconditionStatement(ClassNode type, MethodNode method)

      Adds a default postcondition if a postcondition has already been defined for this MethodNode in a super-class.

      Parameters:
        `type` - the current ClassNode of the given `methodNode`
        `method` - the MethodNode to create the default postcondition for

    - #### public void generatePostconditionAssertionStatement(MethodNode method, Postcondition postcondition)

      Injects a postcondition assertion statement in the given `method`, based on the `booleanExpression`.

      Parameters:
        `method` - the MethodNode for assertion injection
        `postcondition` - the Postcondition the assertion statement should be generated from