class PropertyValidationContext {

    protected Collection<String> validateProperties(final Map<String, String> properties, final VersionedProcessGroup flow, final String flowId,
                                                    final ControllerServiceLookup controllerServiceLookup) {
        final List<String> validationErrors = new ArrayList<>();

        computePropertyValidationErrors(properties, validationErrors);
        validateNoExtraProperties(properties, validationErrors);
        validateControllerServiceReferences(properties, flow, flowId, controllerServiceLookup, validationErrors);

        return validationErrors;
    }

    public  PropertyValidationContext(final Map<String, PropertyDescriptor> propertyDescriptors, final boolean dynamicPropertiesSupported);

}