def finish
    # Call post_compile hook on every parameter that implements it. This includes all subclasses
    # of parameter including, but not limited to, regular parameters, metaparameters, relationship
    # parameters, and properties.
    eachparameter do |parameter|
      parameter.post_compile if parameter.respond_to? :post_compile
    end

    # Make sure all of our relationships are valid.  Again, must be done
    # when the entire catalog is instantiated.
    self.class.relationship_params.collect do |klass|
      if param = @parameters[klass.name]
        param.validate_relationship
      end
    end.flatten.reject { |r| r.nil? }
  end
def finish
    # Call post_compile hook on every parameter that implements it. This includes all subclasses
    # of parameter including, but not limited to, regular parameters, metaparameters, relationship
    # parameters, and properties.
    eachparameter do |parameter|
      parameter.post_compile if parameter.respond_to? :post_compile
    end

    # Make sure all of our relationships are valid.  Again, must be done
    # when the entire catalog is instantiated.
    self.class.relationship_params.collect do |klass|
      if param = @parameters[klass.name]
        param.validate_relationship
      end
    end.flatten.reject { |r| r.nil? }
  end
Finishes any outstanding processing.
 This method should be called as a final step in setup,
 to allow the parameters that have associated auto-require needs to be processed.

 @todo what is the expected sequence here - who is responsible for calling this? When?
   Is the returned type correct?
 @return [Array<Puppet::Parameter>] the validated list/set of attributes