class ColumnDraftImpl implements ColumnDraft {

    protected final int index;
    protected final String id;
    protected final Class typeClass;
    protected final boolean dynamic;
    protected String title;
    protected Object defaultValue;

    public ColumnDraftImpl(String id, int index, boolean dynamic, Class typeClass) {
        this.id = id;
        this.index = index;
        this.typeClass = typeClass;
        this.dynamic = dynamic;
    }

    @Override
    public String getId() {
        return id;
    }

    @Override
    public String getTitle() {
        return title;
    }

    @Override
    public void setTitle(String title) {
        this.title = title;
    }

    @Override
    public Class getTypeClass() {
        return typeClass;
    }

    @Override
    public Object getDefaultValue() {
        return defaultValue;
    }

    @Override
    public void setDefaultValue(Object value) {
        this.defaultValue = value;
    }

    protected int getIndex() {
        return index;
    }

    @Override
    public void setDefaultValueString(String value) {
        this.defaultValue = AttributeUtils.parse(value, typeClass);
    }

    @Override
    public Class getResolvedTypeClass(ContainerUnloader container) {<FILL_FUNCTION_BODY>}

    @Override
    public Object getResolvedDefaultValue(ContainerUnloader container) {
        Class resolvedTypeClass = getResolvedTypeClass(container);

        Object resolvedDefaultValue = defaultValue;
        if (resolvedDefaultValue != null && !resolvedTypeClass.isAssignableFrom(resolvedDefaultValue.getClass())) {
            try {
                resolvedDefaultValue = AttributeUtils.parse(resolvedDefaultValue.toString(), resolvedTypeClass);
            } catch (Exception e) {
                //Failed to parse
            }
        }

        return resolvedDefaultValue;
    }

    @Override
    public boolean isDynamic() {
        return dynamic;
    }

    @Override
    public String toString() {
        return title + " (" + typeClass.toString() + ")";
    }
}

        TimeRepresentation timeRepresentation = container.getTimeRepresentation();
        Class typeClassFinal = typeClass;
        //Get final dynamic type:
        if (dynamic && !TimeSet.class.isAssignableFrom(typeClassFinal) &&
            !TimeMap.class.isAssignableFrom(typeClassFinal)) {
            if (timeRepresentation.equals(TimeRepresentation.TIMESTAMP)) {
                typeClassFinal = AttributeUtils.getTimestampMapType(typeClassFinal);
            } else {
                typeClassFinal = AttributeUtils.getIntervalMapType(typeClassFinal);
            }
        }

        return typeClassFinal;
    
<no_super_class>