def METHOD_NAME() -> Plugin:
    return Plugin(
        start=False,
        spec=Spec(
            module=__name__,
            className='PasswordGeneratorAction',
            inputs=["payload"],
            outputs=["password"],
            version='0.7.1',
            license="MIT",
            author="Mateusz Zitaruk",
            init={
                "min_length": 8,
                "max_length": 13,
                "uppercase": 2,
                "lowercase": 4,
                "special_characters": 2
            },
            manual="password_generator_action",
            form=Form(
                groups=[
                    FormGroup(
                        name="Password generator configuration",
                        fields=[
                            FormField(
                                id="max_length",
                                name="Password maximum length",
                                description="Please provide maximum length of password.",
                                component=FormComponent(
                                    type="text",
                                    props={
                                        "label": "Maximum password length"
                                    }
                                )
                            ),
                            FormField(
                                id="min_length",
                                name="Password minimum length",
                                description="Please provide minimum length of password.",
                                component=FormComponent(
                                    type="text",
                                    props={
                                        "label": "Minimum password length"
                                    }
                                )
                            ),
                            FormField(
                                id="uppercase",
                                name="Uppercase characters",
                                description="Please provide number of uppercase characters.",
                                component=FormComponent(
                                    type="text",
                                    props={
                                        "label": "Number of uppercase letters"
                                    }
                                )
                            ),
                            FormField(
                                id="lowercase",
                                name="Lowercase characters",
                                description="Please provide number of lowercase characters.",
                                component=FormComponent(
                                    type="text",
                                    props={
                                        "label": "Number of lowercase letters"
                                    }
                                )
                            ),
                            FormField(
                                id="special_characters",
                                name="Special characters",
                                description="Please provide number of special characters.",
                                component=FormComponent(
                                    type="text",
                                    props={
                                        "label": "Number of special characters"
                                    }
                                )
                            ),
                        ]
                    )
                ]
            )
        ),
        metadata=MetaData(
            name='Generate password',
            desc='Generate new password according to user input',
            icon='password',
            group=["Operations"],
            documentation=Documentation(
                inputs={
                    "payload": PortDoc(desc="This port takes payload object.")
                },
                outputs={"password": PortDoc(desc="This port returns generated password.")}
            )
        )
    )