class Requirement implements Cloneable {
    private final String role;

    private final String roleHint;

    public Requirement(String role) {
        this.role = role;
        this.roleHint = null;
    }

    public Requirement(String role, String roleHint) {
        this.role = role;
        this.roleHint = roleHint;
    }

    public String getRole() {
        return role;
    }

    public String getRoleHint() {
        return roleHint;
    }

    /**
     * Creates a shallow copy of this requirement.
     */
    @Override
    public Requirement clone() {<FILL_FUNCTION_BODY>}
}

        try {
            return (Requirement) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new UnsupportedOperationException(e);
        }
    
<no_super_class>