class EnumValueImpl extends ValueImpl<String> implements EnumValue {
	
	private Type type;
	
	public EnumValueImpl(Type type, String value) { 
		super (value); 
		this.type = type;
	}
	
	protected EnumValueImpl(EnumValue prototype) {
		this (prototype.getType(), prototype.getValue());
	}

	@Override
	public EnumValueImpl set(Type type) {
		this.type = type;
		return this;
	}

	@Override
	public Type getType() {
		return type;
	}
	
	@Override
	public EnumValueImpl copy() {
		return new EnumValueImpl(this);
	}

    @Override
    public int hashCode() {<FILL_FUNCTION_BODY>}

    @Override
    public boolean equals(Object obj) {
		if (!super.equals(obj)) {
			return false;
		}
        final EnumValue other = (EnumValue) obj;
        return Objects.equals(this.type, other.getType());
    }

}

        int hash = 7;
        hash = 79 * hash + super.hashCode();
        hash = 79 * hash + Objects.hashCode(this.type);
        return hash;
    
<methods>public void <init>(java.lang.String) ,public abstract ValueImpl<java.lang.String> copy() ,public boolean equals(java.lang.Object) ,public java.lang.String getValue() ,public int hashCode() ,public Value<java.lang.String> setValue(java.lang.String) <variables>private java.lang.String value