class HTMLAttributeName extends AttributeName {

    final String completeNamespacedAttributeName;
    final String completeHTML5AttributeName;



    static HTMLAttributeName forName(final String prefix, final String attributeName) {<FILL_FUNCTION_BODY>}


    private HTMLAttributeName(
            final String prefix, final String attributeName,
            final String completeNamespacedAttributeName,
            final String completeHTML5AttributeName,
            final String[] completeAttributeNames) {

        super(prefix, attributeName, completeAttributeNames);

        this.completeNamespacedAttributeName = completeNamespacedAttributeName;
        this.completeHTML5AttributeName = completeHTML5AttributeName;

    }


    public String getCompleteNamespacedAttributeName() {
        return this.completeNamespacedAttributeName;
    }

    public String getCompleteHTML5AttributeName() {
        return this.completeHTML5AttributeName;
    }



}


        final boolean hasPrefix = prefix != null && prefix.length() > 0;

        final String nameAttributeName =
                (attributeName == null || attributeName.length() == 0)? null : attributeName.toLowerCase();

        final String namePrefix;
        final String completeNamespacedAttributeName;
        final String completeHTML5AttributeName;
        final String[] completeAttributeNames;

        if (hasPrefix) {

            namePrefix = prefix.toLowerCase();
            completeNamespacedAttributeName = namePrefix + ":" + nameAttributeName;
            completeHTML5AttributeName = "data-" + namePrefix + "-" + nameAttributeName;
            completeAttributeNames = new String[] { completeNamespacedAttributeName, completeHTML5AttributeName };

        } else {

            namePrefix = null;
            completeNamespacedAttributeName = nameAttributeName;
            completeHTML5AttributeName = nameAttributeName;
            completeAttributeNames = new String[] { nameAttributeName };

        }

        return new HTMLAttributeName(
                namePrefix, nameAttributeName,
                completeNamespacedAttributeName, completeHTML5AttributeName, completeAttributeNames);

    
<methods>public boolean equals(java.lang.Object) ,public java.lang.String getAttributeName() ,public java.lang.String[] getCompleteAttributeNames() ,public java.lang.String getPrefix() ,public int hashCode() ,public boolean isPrefixed() ,public java.lang.String toString() <variables>protected final non-sealed java.lang.String attributeName,protected final non-sealed java.lang.String[] completeAttributeNames,private final non-sealed int h,protected final non-sealed java.lang.String prefix