package ${packageName};

public class ${productionClassName} ${extendsAndImplementsClause} {

    public static ${productionClassName} one() { return new ${productionClassName}(); }

    private final String property;
    <% extraFields.each { %>
    ${it.modifier} ${it.type} ${it.name} = ${it.type}.one();
    <% } %>

    public ${productionClassName}(){
        this.property = null;
    }

    public ${productionClassName}(String param) {
        this.property = param;
    }

    public String getProperty() {
        return property;
    }
<% propertyCount.times { %>
    private String prop${it};

    public String getProp${it}() {
        return prop${it};
    }

    public void setProp${it}(String value) {
        prop${it} = value;
    }
<% } %>
}

package ${packageName};

import java.util.List;
import java.util.Arrays;

public class ${productionClassName} ${extendsAndImplementsClause} {

    public static ${productionClassName} one() { return new ${productionClassName}(); }

    private final String property;
    <% extraFields.each { %>
    ${it.modifier} ${it.type} ${it.name} = ${it.type}.one();

    public boolean check(${it.type} o) {
        // dummy code to add arbitrary compile time
        String p = o.getProperty();
        p = p.toUpperCase();
        List<String> strings = Arrays.asList(p, this.getProperty());
        int len = 0;
        for (String s: strings) {
            len += s.length();
            <% propertyCount.times { %>
            len += o.getProp${it}().length();
            <%}%>
        }
        return len>10;
    }
    <% } %>

    public ${productionClassName}(){
        this.property = null;
    }

    public ${productionClassName}(String param) {
        this.property = param;
    }

    public String getProperty() {
        return property;
    }
<% propertyCount.times { %>
    private String prop${it};

    public String getProp${it}() {
        return prop${it};
    }

    public void setProp${it}(String value) {
        prop${it} = value;
    }
<% } %>
}

Add arbitrary code to make compile time longer * the original code was too fast to compile to make compile avoidance relevant * the original code didn't represent what we could find in "real" code
Add arbitrary code to make compile time longer
   * the original code was too fast to compile to make compile avoidance relevant
   * the original code didn't represent what we could find in "real" code

+review REVIEW-5688
